Skip to the page
Docs
Changelog

Docs Reference

Changelog

What changed in Apparent, its SDKs and these docs. Newest first. Follow it with the RSS feed.

All four SDKs are out (0.2.1)

SDKs

  • Expo and React Native: npx expo install apparent-expo (npm).
  • Swift: add https://github.com/AhmedAshour/apparent-swift in Xcode, from 0.2.1.
  • Kotlin: implementation("fyi.apparent:apparent-android:0.2.1"), plus apparent-compose for Compose screens (Maven Central).
  • Flutter: flutter pub add apparent (pub.dev).

The code is open in apparent-sdks and apparent-swift.

SDKs

  • Same features as Expo: beforeSend, optOutByDefault (consent remembered), deep_link_opened and push_opened (only the campaign and title from the data, never the text). Kotlin picks up the launch link and Firebase taps on its own (Apparent.handleIntent(intent) for onNewIntent); Swift (Apparent.handleDeepLink, handleNotificationResponse, .apparentDeepLinks()) and Flutter (Apparent.trackDeepLink, trackPushOpened) give you one call to make.
  • Retry-After waited exactly, never sooner; a clock change never stretches a wait.
  • Sign-in, logout and opt-out saved at once, so a kill right after keeps them.
  • Broken saved state, a stuck disk, odd property values or a bad start never stop the SDK or throw into your app.

SDKs

  • Links that open the app are sent as deep_link_opened, secrets redacted. A campaign link (utm_source) that opens the app on its first day counts as where that person came from.
  • Tapped notifications are sent as push_opened (with expo-notifications), with only the campaign and title you put in the data.
  • beforeSend lets you change or drop any event before it is saved.
  • optOutByDefault collects nothing until optIn(), for apps that ask for consent first.

Send events from your server

Docs

A new guide: send events from your server with curl, Node and Python. People are now counted by account: the same signed-in person on two phones, or after a reinstall, is one person, and only a visit with the app open makes someone active.

SDKs: Macs, simulators, a wrong key

SDKs

  • Macs count as their own platform, macos (Swift, and iPhone apps running on a Mac).
  • Simulators and emulators say so in every batch, so they stay out of your numbers even without a device model.
  • A wrong app id or key prints one line in debug builds instead of losing events quietly.
  • Early events (tracked in the first milliseconds after start) keep their user and properties. Fixed in all four SDKs.
  • Flutter passes the same conformance rules as the others.

Docs

Docs

These docs, at apparent.fyi/docs. A quick start that begins with one prompt for your AI, a page per SDK, the privacy answers for both stores, and the intake API. Every page is also Markdown (add .md), and all of it is in llms-full.txt for agents.

SDKs for every platform

SDKs

One contract for every SDK, checked by the same 25 rules:

  • React Native and Expo: apparent-expo 0.2 now works in bare React Native too. Not released yet.
  • Swift: iOS and macOS, SwiftUI screens, StoreKit 2, privacy manifest. Not released yet.
  • Kotlin: Android, Compose screens, Play Billing, install links. Not released yet.
  • Flutter: navigator observer, errors, offline queue. Not released yet.
  • Website: one script tag. Live.

Until each is published, its install line is what it will be. This page says when each ships.

Set up with your AI

App

Add your app gives you one prompt for Claude Code, Cursor or Codex with your app's id and key in it, then turns green with "First event from your app ✓". Personal tokens let your own AI ask your numbers through MCP, read-only.

Updated 2026-10-24 · Markdown · Report a mistake