Your app, in the same reports as your site.

A small SDK for React Native and Expo sends screens, events, people and companies from iOS and Android. It queues events while the phone is offline and has consent controls built in.

native modules or runtime dependencies. It runs in Expo Go
0
events held on the device while it is offline
100
is how long a queued event stays valid
10 min
consent modes: opt-out or opt-in
2

What it does

@clickclacks/react-native is on npm at version 1.0.0. It has no native code and no runtime dependencies, and it never throws into your app. It is for React Native and Expo; a fully native Swift or Kotlin app sends the same events over HTTP.

DocsMobile apps: React Native and Expo

Install

One package, one shared client.

Add a mobile app source in ClickClacks, install @clickclacks/react-native and create one client with the source’s public key. There is no native code to link, so it works in Expo Go, and no method ever throws into your app.

  • React Native 0.74 or later and Expo SDK 51 or later, on iOS and Android.
  • ESM, CommonJS and TypeScript types included. MIT licence.
  • The key is public, like a website’s. It only works from a native app.

What you send

Screens, events, people and companies.

Call screen when a screen opens and track when something happens. After sign-in, identify the person with your own user ID and group them with their company. A screen is stored the way a page is, so it shows up wherever pages do.

  • A helper reports React Navigation routes as screens. Route params are never sent.
  • Every event carries the OS, its version and phone or tablet.
  • Use the same user ID on the web and in the app and it is one person in People.

Delivery

Built for a flaky connection, with honest limits.

Events wait in a small queue stored on the device and go out in batches of up to 25: every five seconds, when 25 are waiting, and when the app goes to the background. Failed sends are retried with a growing wait, and a retry is never counted twice.

  • The queue holds 100 events. When it is full, the oldest are dropped.
  • An event more than 10 minutes old is dropped, not sent late.
  • The queue survives the app closing and is sent on the next launch.

Consent and health

Consent built in, and a card that says it’s working.

Collection is on by default, with optOut and optIn to connect to your app’s own switch. Opt-in mode collects and stores nothing until the person agrees. In ClickClacks, the source’s App health card shows when the app last sent, the last day’s events, the SDK version and the iOS and Android split.

  • optOut clears the queue, the IDs, the identified user and the groups.
  • Opt-out is not valid prior consent in the EU or the UK. Use opt-in there.
  • A project with a custom tracker domain sends there by setting one option.

Questions it answers

Ask it the way you’d ask a colleague.

How ClickClacks answers it

Screens are stored as pageviews with the screen’s name as the path, so the pages reports list them by name. Keep names stable words and put IDs in properties.

/Home

Most-viewed screen · last 30 days

Who it’s for

Three ways teams use it.

  • Agencies

    A client’s site and its app go in the same project, as two sources. One board then shows the client the website, the app and the path between them.

    Website source + mobile app source

  • Indie developers

    Shipping with Expo? Install the package, create the client and wire the navigation helper. There is nothing to configure in Xcode or Gradle.

    npx expo install @clickclacks/react-native

  • Product teams

    Identify people with the ID you already use on the web, and funnels and retention follow them across both, with companies stamped the same way in each.

    identify + group after sign-in

How it works

Under the hood

  1. 01Add a mobile app sourceIn Sources, add a source and choose Mobile app. It has a name and a public key, and no domain.
  2. 02Install and create one clientInstall the package and AsyncStorage, which keeps the IDs, the consent choice and the queue between launches.
  3. 03Report screens and eventsWire the React Navigation helper, or call screen yourself, and call track where things happen.
  4. 04Identify after sign-inidentify and group tie events to your user and their company. reset on sign-out forgets both.

Spec sheet

from the product

Package
@clickclacks/react-native 1.0.0
Works with
React Native 0.74+, Expo SDK 51+
Platforms
iOS and Android
Native Swift or Kotlin
No SDK. Use the HTTP API
Offline queue
100 events
Event age
10 minutes, then dropped
Batch
Up to 25 events per request
Session
Ends after 30 minutes idle
Consent
Opt-out (default) or opt-in
Not on mobile
Heatmaps, replay, automatic taps

FAQ

Mobile apps, in detail.

  • No. The SDK is for React Native and Expo only. A fully native iOS or Android app can send the same events over HTTP; the mobile docs describe the request, its fields and its answers.

  • There are no heatmaps and no session replay for apps, and nothing is captured automatically: no automatic taps, and screens only when you call screen or wire the React Navigation helper. You decide what is sent.

  • They wait in a queue of up to 100 events stored on the device and are sent when the connection returns, also after the app has been closed and reopened. An event that has waited more than 10 minutes is dropped rather than sent late, so a long spell offline loses its events.

  • No. A mobile key is refused when it comes from a web page. A web build of the same app, such as Expo for web, needs a web app source and the browser script instead.

  • Yes, it is a public key, like the one in a website’s snippet. As with any mobile analytics key, someone who extracts it could send events to that source. Removing the source revokes the key at once. Never put a secret server key in an app.

  • Use opt-in mode and call optIn only after the person agrees. Their rules generally require consent before analytics starts, and that covers IDs stored on a device, not only cookies. This is a description of what the SDK does, not legal advice.

Start hearing your clicks.

One script tag. Your first report in minutes.

About 5 KB · pageviews, clicks and scroll depth, automatically