React Native Deployment Checklist
Version: 1.1.0 | Updated: 2026-07-16
Purpose
Gate promotion and rollback of a React Native screen, navigation flow, FlatList, native module, platform adapter, or mobile release.
Why
A syntactically valid React Native artifact can still fail because of native module missing/unlinked or architecture incompatible, app registration/startup exception, nested/unbounded VirtualizedList, Metro module resolution or cache/config mismatch, JS thread, UI thread, bridge/native boundary, or memory stall. Promotion therefore requires target-state and rollback evidence.
How
Run against the exact target and immutable candidate. Preserve outputs from npx react-native info and npx react-native doctor; npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output <path> for bundle verification; cd android && ./gradlew lint test assembleRelease; cd ios && xcodebuild -workspace <app>.xcworkspace -scheme <scheme> -configuration Release test on approved macOS CI; npx react-native log-android or platform-native logs for the reproduced build. Stop promotion on any failed item.
Version-aware caution
Read React Native, React, navigation, native dependency, Gradle/AGP/Kotlin, Xcode/Swift, deployment-target, and architecture settings. Native APIs, autolinking, Metro, Hermes, and New Architecture compatibility are release-specific.
Tradeoffs
Promotion waits for "React Native/native dependency compatibility and platform toolchains match CI evidence" and "signed release builds, symbol/source-map artifacts, privacy manifests, permissions, and store metadata are complete". Those React Native target checks slow release but directly bound native module missing/unlinked or architecture incompatible and make this rollback executable: Stop phased rollout or select the previous OTA bundle only when its native-module ABI matches installed binaries; otherwise ship a corrective store build and preserve migrated local data.
Anti-patterns
- Scattering
Platform.OSbranches through domain logic creates two untestable applications hidden in one source tree. - Do not remove a native warning, validator, policy, or safety limit merely to make generated output pass.
- Do not claim a successful result without preserving the command, target, artifact/revision, and observed output.
Enterprise considerations
React Native governance aligns JS/native dependency matrices, signing, store roles, OTA policy, privacy declarations, device support, accessibility evidence, and crash-symbol retention.
Official sources
Checklist
- React Native/native dependency compatibility and platform toolchains match CI evidence.
- signed release builds, symbol/source-map artifacts, privacy manifests, permissions, and store metadata are complete.
- cold/warm startup, JS/UI frame rate, memory, crash-free sessions, and bundle size meet budgets.
- screen reader, keyboard/switch path, dynamic text, zoom, contrast, and reduced motion pass both platforms.
- deep links, push notifications, offline/reconnect, upgrade, and persisted-state migration pass.
- phased store rollout and OTA policy prevent incompatible JavaScript/native binary combinations.
- crash and performance telemetry map to app, JS bundle, native build, OS, and device.
- rollback distinguishes store binary rollback from OTA bundle rollback and persisted-data compatibility.
- Stop phased rollout or select the previous OTA bundle only when its native-module ABI matches installed binaries; otherwise ship a corrective store build and preserve migrated local data.
- Evidence identifies version, target, artifact/revision, command or manual method, UTC time, and result.
Changelog
- 1.1.0 (2026-07-16): Replaced generic gates with native React Native evidence and failure controls.
- 1.0.0 (2026-07-16): Added initial checklist.