Readme · Guides · Reference · Contributing
The Optimization SDK Suite is pre-release (alpha). Breaking changes can be published at any time.
This is a reference implementation for the Optimization React Native SDK and is part of the Contentful Optimization SDK Suite.
Use this implementation when you need an end-to-end React Native example for Android and iOS app targets. It demonstrates SDK initialization, optimized entry rendering, interaction tracking, navigation/screen tracking, offline behavior, preview-panel scenarios, and Detox E2E coverage.
.nvmrc)Run all steps from the monorepo root.
Install pnpm packages:
pnpm install
Build and package SDK tarballs used by this implementation:
pnpm build:pkgs
Install implementation dependencies:
pnpm implementation:run -- react-native-sdk implementation:install
See implementations/react-native-sdk/package.json for more commands.
Android E2E tests use Detox. Run these commands from the monorepo root.
Run the full Android E2E flow:
pnpm implementation:run -- react-native-sdk test:e2e:android:full
Build Android Detox binaries:
pnpm implementation:run -- react-native-sdk test:e2e:android:build
Run Android Detox tests only:
pnpm implementation:run -- react-native-sdk test:e2e:android:run
Pass script arguments through to the one-shot runner:
pnpm implementation:run -- react-native-sdk test:e2e:android:full -- --test-file e2e/offline-behavior.test.js
The one-shot Android command:
.env from .env.example for E2EUseful one-shot variants:
Skip rebuild if the app is already built:
SKIP_BUILD=true pnpm implementation:run -- react-native-sdk test:e2e:android:full
Run one test file:
pnpm implementation:run -- react-native-sdk test:e2e:android:full -- --test-file e2e/offline-behavior.test.js
Run tests matching a name pattern:
pnpm implementation:run -- react-native-sdk test:e2e:android:full -- -t "should recover gracefully when network is restored"
Run iOS Detox commands when needed:
pnpm implementation:run -- react-native-sdk test:e2e:ios:build
pnpm implementation:run -- react-native-sdk test:e2e:ios:run
Local Android E2E logging is intentionally minimal by default.
Enable script/service logs (Metro, mock server, and adb logcat stream):
STREAM_BACKGROUND_LOGS=true ENABLE_DEVICE_LOGCAT=true METRO_VERBOSE=true pnpm implementation:run -- react-native-sdk test:e2e:android:full
Increase Detox runner logging and artifacts:
pnpm --dir implementations/react-native-sdk --ignore-workspace exec detox test --configuration android.emu.debug --loglevel trace --record-logs all --take-screenshots failing --record-videos failing
Read generated logs:
implementations/react-native-sdk/logs/mock-server.logimplementations/react-native-sdk/logs/metro.logimplementations/react-native-sdk/logs/device.logimplementations/react-native-sdk/logs/test-results.log