Renamed example app directories from verbose names to the e2e- prefix convention:
AnalyticsReactNativeExample->e2e-compatAnalyticsReactNativeE2E->e2e-latest
Created e2e-shared/ package containing app components, test suites, and mock server. Both example apps now import shared source via @segment/analytics-react-native-e2e-tests instead of duplicating code.
Added Devbox configuration for the compatibility app (RN 0.72):
devbox.jsonwithmobile-devtoolsplugin for emulator/simulator management- Build scripts for reproducible release builds
- iOS pre-bundling fix:
SKIP_BUNDLING=1during xcodebuild, thenreact-native bundleseparately (avoids Metro monorepo resolution issues) - Added
nodejs 22to avoid Nix insecure node 20 error
Added Devbox configuration for the latest app (RN 0.84) and enabled New Architecture:
Devbox:
- Removed
gradle_9package (uses gradle wrapper 9.3.1 instead) - Same iOS pre-bundling strategy as e2e-compat
- Added
-arch arm64for iOS simulator builds
New Architecture migration:
- Enabled
newArchEnabled=trueandhermesEnabled=trueingradle.properties - Rewrote
settings.gradlefor RN 0.84 autolinking (com.facebook.react.settingsplugin) - Converted
MainApplication.javatoMainApplication.ktwithReactNativeApplicationEntryPoint - Upgraded to Gradle 9.3.1 wrapper
- Switched
App.tsxfrom@react-navigation/stackto@react-navigation/native-stackv7 - Removed
react-native-gesture-handlerdependency - Upgraded
react-native-safe-area-contextto 5.x,react-native-screensto 4.25.x - Added
FOLLY_CFG_NO_COROUTINES=1for Xcode 26 compatibility
Added .github/workflows/e2e-mobile.yml GitHub Actions workflow:
- Android E2E for both e2e-compat (API 24) and e2e-latest (API 36)
- iOS E2E for both e2e-compat (iOS 18.5, macos-15) and e2e-latest (iOS 26.2, macos-26)
- Uses Devbox for reproducible builds in CI
- Gradle and CocoaPods caching
- Artifact upload for test results
Added READMEs, changelog, and migration guide for the entire series.