Skip to main content
Most integration problems fall into a small number of categories. Work through the accordion below that matches your symptom, apply the fix, and re-test. If you’re still stuck, the Getting Help section at the bottom explains exactly what information to gather before contacting support.

Common Issues

Symptom: The SDK throws "App ID is required" on startup and no events reach the dashboard.The most common cause is instantiating TappdSDK with an empty or missing appId.
Checklist:
  1. Copy your App ID from the Tappd dashboard — do not type it manually.
  2. Confirm the value is not undefined or an empty string at runtime (log it to verify).
  3. Confirm you are importing the SDK correctly: import TappdSDK from '@tappd/mobile-sdk'.
Symptom: track() resolves without throwing, but no events appear in the Tappd dashboard.Work through these fixes in order:1. Enable debug mode to see SDK activity in your console:
2. Check network requests using React Native Debugger or Flipper’s Network tab. Verify that requests are being sent and returning 2xx status codes.3. Verify the API URL matches Tappd’s hosted endpoint:
4. Await every track() call. Dropping the await means errors are silently swallowed.
Symptom: Events tracked before identify() are not linked to the identified user profile.The merge only happens when identify() is called with at least external_id. Check both points below.Ensure you pass external_id to identify():
Verify the anonymous ID is stable (it should be the same value across calls before identification):
If the anonymous ID changes between calls, AsyncStorage is not persisting correctly — see the AsyncStorage Issues section below.
Symptom: Sessions appear missing in the dashboard, or they expire far too quickly.Adjust sessionTimeout if sessions are expiring too soon (value is in minutes):
Verify a session is active immediately after initialization — the value should never be null:
If getSessionId() returns null, the SDK failed to initialize. Go back to the SDK Not Initializing section.
Symptom: Only some screens are tracked, or screen views are absent even though trackScreen() is called.Use useFocusEffect instead of useEffect. With useEffect, the screen view fires only on mount. With useFocusEffect, it fires every time the screen comes into focus — which is what you want in a tab or stack navigator.
Also check:
  • NavigationContainer is configured at the root of your app.
  • Screen names are consistent across all calls (casing matters).
Symptom: registerPushToken() throws "User must be identified first".registerPushToken() requires an identified user. Always call identify() before you register the token.
Also verify your platform configuration:
  • iOS: Confirm APNs push certificates are uploaded to Firebase.
  • Android: Confirm google-services.json is in android/app/.
  • Both: Log the token to confirm it is not null or empty:
Symptom: Each app launch generates a new anonymous ID, making it impossible to merge pre-identification events.The SDK relies on @react-native-async-storage/async-storage to persist the anonymous ID. If it is missing or misconfigured, a new ID is generated on every launch.Install the package:
Verify AsyncStorage is working correctly:
If the log prints false, AsyncStorage is not functioning — check for linking errors and re-run pod install.
iOS build failures:Run pod install after adding or updating the SDK:
For a full clean build, remove the derived data and Pods directories first:
Android build failures:Clean the Gradle cache:
Then check for version conflicts between @tappd/mobile-sdk and other packages in your package.json.
Symptom: TypeScript reports missing types or unknown properties when using the SDK.Import SDK types directly from the package — no separate @types install is needed:
If you still see errors after the correct import, install the React Native community types:

Debug Mode

Enable debug: true when you initialize the SDK to stream detailed logs to your React Native console. These logs are the fastest way to confirm the SDK is working as expected.
With debug mode on, you should see messages like these:
If any of these lines are absent, that step failed — use the relevant accordion above to fix it.
Disable debug: true before releasing to production to avoid leaking internal SDK logs to end users.

Getting Help

If you’ve worked through the relevant section above and the problem persists, contact Tappd support. To get a fast resolution, gather the following before reaching out:
1

Check your logs

Open the React Native debugger and copy any SDK-related log output.
2

Enable debug mode

Set debug: true, reproduce the issue, and capture the full log output.
3

Verify network requests

Use Flipper or Chrome DevTools Network tab to confirm whether API requests are being sent and what responses they receive.
4

Check your SDK version

Run npm list @tappd/mobile-sdk and confirm you are on the latest release.
5

Contact support with these details

  • Full error messages
  • Platform (iOS, Android, or both)
  • React Native version (npx react-native --version)
  • Tappd SDK version
  • Debug logs from steps 1–2

Common Error Messages