Fictura
SDK reference

iOS

What the SDK does on iOS specifically — and the honest answer about native code: there isn't any.

@fictura/sdk is TypeScript all the way down: no Swift, no CocoaPods, no native module. That is a deliberate trade — installation stays one npm install, and nothing about your Xcode build changes. On iOS it behaves as follows:

  • Device identity lives in the Keychain via expo-secure-store (accessible after first unlock), so it survives reinstalls; Android uses the SSAID via expo-application.
  • StoreKit is reached through your adapter, never directly. The SDK never imports react-native-purchases; you hand it a PurchasesAdapter wrapping whatever billing SDK you run, and purchases execute natively through it.
  • Web checkout opens Safari — the system browser, via Linking.openURL, never an in-app webview. That is the compliance-load-bearing rule; see How web checkout works.
  • Push uses Expo's push service: registerForPush() obtains the Expo token (the EAS projectId is picked up from your app config when present) and registers it. No APNs keys touch Fictura.
  • Native crashes are not captured — a Swift/Kotlin crash needs a native handler. Keep a crash reporter for those; JS crashes, rejections and logged errors are covered.

Testing identity on device

Because the device id lives in the Keychain, deleting the app does not mint a new user. For QA runs set EXPO_PUBLIC_GROWTH_TEST_IDENTITY=1, which keeps the id in plain storage so an uninstall starts fresh.