React Native Roadmap 2026-W34
Week of August 17–23, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | React Native Firebase v26 — New Architecture and synchronous APIs | 🟦 RN | Read |
| 2 | RevenueCat Experiments — paywall A/B testing without a redeploy | 🟦 RN | Read |
| 3 | How to build a resilient activity tracker with Expo | 🟧 EXPO | Read |
| 4 | EAS Observe is now generally available | 🟧 EXPO | Read |
| 5 | Building a native-first social platform with Expo | 🟧 EXPO | Read |
5-Day Action Plan
🟦 Chunk 1 — Upgrade one React Native Firebase feature to v26
Goal: Move one production Firebase integration onto the New Architecture-compatible v26 APIs and remove unnecessary asynchronous wrappers from the chosen user flow.
Scope:
- Upgrade the selected React Native Firebase packages to v26-compatible versions.
- Choose one bounded feature, such as Analytics or Firestore, and update its API calls.
- Remove unnecessary
awaitusage only where the v26 API is documented as synchronous. - Add a smoke test covering initialization, one read/write, and the failure state.
Out of scope: Upgrading every Firebase package, changing the data model, enabling all New Architecture flags, or migrating authentication.
Dependencies: The app already uses React Native Firebase and has a reproducible New Architecture build for at least one platform.
Acceptance criteria:
- The selected feature builds and launches with the project’s New Architecture configuration.
- The user flow completes successfully on iOS and Android or the project’s supported target.
- A denied permission, offline request, or Firebase error shows the existing safe fallback.
- No deprecated v25 API or unhandled promise warning remains in the migrated feature.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Move one production Firebase integration onto the New Architecture-compatible v26 APIs and remove unnecessary asynchronous wrappers from the chosen user flow.
Files to create or modify:
package.json— selected Firebase package versionssrc/firebase/<feature>.ts— bounded API migrationsrc/<feature>/**— call-site updatessrc/firebase/<feature>.test.ts— smoke coverage
Implementation instructions:
- Inventory the selected feature’s Firebase imports and confirm the v26 migration notes for those APIs.
- Upgrade only the required packages and regenerate native dependency state.
- Update call sites, preserving existing error handling and analytics event names.
- Run the feature on both supported platforms, including one offline or denied-permission case.
- Record any remaining v25-compatible APIs as separate follow-up work.
Acceptance criteria verification checklist:
- The selected feature builds and launches with the project’s New Architecture configuration.
- The user flow completes successfully on iOS and Android or the project’s supported target.
- A denied permission, offline request, or Firebase error shows the existing safe fallback.
- No deprecated v25 API or unhandled promise warning remains in the migrated feature.
🟦 Chunk 2 — Launch a RevenueCat paywall experiment
Goal: Allow the product team to compare two existing paywall offerings and measure conversion outcomes without shipping a new binary for each variant.
Scope:
- Configure one RevenueCat offering experiment with two existing paywall variants.
- Add a single placement identifier in the app and load the assigned offering.
- Track impression, purchase, restore, and dismissal events with the experiment identifier.
- Add a safe fallback to the current paywall when the experiment is unavailable.
Out of scope: Pricing strategy redesign, new products, subscription entitlement changes, and analyzing statistically significant results.
Dependencies: RevenueCat is already configured, the two offerings exist in the dashboard, and product/legal approval is complete.
Acceptance criteria:
- A test device receives a deterministic variant assignment.
- The selected variant renders with the existing purchase and restore flow.
- Purchase and dismissal events include the placement and experiment identifiers.
- Disabling the experiment or losing network access falls back to the default offering.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Allow the product team to compare two existing paywall offerings and measure conversion outcomes without shipping a new binary for each variant.
Files to create or modify:
src/paywall/ExperimentPaywall.tsx— variant selection UIsrc/paywall/revenueCatExperiment.ts— offering and fallback logicsrc/analytics/paywallEvents.ts— event payloadsdocs/paywall-experiment.md— dashboard and QA instructions
Implementation instructions:
- Confirm the two approved offerings and create the experiment in the RevenueCat dashboard.
- Implement a typed loader that requests the experiment placement and returns the default offering on failure.
- Reuse the existing paywall component so the experiment changes only the offering data.
- Add analytics payloads and a QA-only way to force each variant on a test device.
- Verify purchase, restore, dismissal, disabled-experiment, and offline scenarios.
Acceptance criteria verification checklist:
- A test device receives a deterministic variant assignment.
- The selected variant renders with the existing purchase and restore flow.
- Purchase and dismissal events include the placement and experiment identifiers.
- Disabling the experiment or losing network access falls back to the default offering.
🟧 Chunk 3 — Persist one resilient Expo activity flow
Goal: Prevent users from losing an activity-tracking session when the app is backgrounded, restarted, or temporarily offline.
Scope:
- Define a small persisted activity-session state model.
- Save checkpoints when the session changes and when the app moves to the background.
- Restore the last valid session on launch with an explicit resume or discard choice.
- Show a visible stale/offline status and a retry action.
Out of scope: Background location, wearable integrations, conflict resolution across devices, and a complete rewrite of the tracker architecture.
Dependencies: An existing Expo activity screen and local persistence mechanism are available or approved for this feature.
Acceptance criteria:
- Killing and reopening the app restores an in-progress session without corrupting elapsed time.
- Backgrounding the app saves the latest checkpoint.
- An interrupted write leaves the previous valid checkpoint intact.
- The user can resume, discard, or retry with clear UI feedback.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Prevent users from losing an activity-tracking session when the app is backgrounded, restarted, or temporarily offline.
Files to create or modify:
src/activity/activitySession.ts— state model and persistencesrc/hooks/usePersistedActivity.ts— lifecycle integrationapp/activity.tsx— resume and offline UIsrc/activity/activitySession.test.ts— recovery tests
Implementation instructions:
- Document the minimal session fields and version the persisted payload.
- Implement atomic save and restore helpers with corrupted-data handling.
- Subscribe to app lifecycle changes and checkpoint the active session.
- Add resume, discard, stale, and retry states to the existing activity screen.
- Test app reload, background/foreground, interrupted save, and malformed payload cases.
Acceptance criteria verification checklist:
- Killing and reopening the app restores an in-progress session without corrupting elapsed time.
- Backgrounding the app saves the latest checkpoint.
- An interrupted write leaves the previous valid checkpoint intact.
- The user can resume, discard, or retry with clear UI feedback.
🟧 Chunk 4 — Enable EAS Observe for one production release
Goal: Give the team actionable performance and crash visibility for one Expo production surface before expanding monitoring across the application.
Scope:
- Install and configure the approved EAS Observe integration.
- Set the required project identity and release metadata without committing secrets.
- Instrument one critical screen or navigation flow.
- Create a short runbook for locating a slow trace, error, and release.
Out of scope: Full observability taxonomy, custom backend dashboards, alert policy redesign, and monitoring every screen.
Dependencies: An Expo project with EAS access and an approved production or internal release channel is available.
Acceptance criteria:
- An internal release reports at least one screen load or navigation trace.
- A deliberately triggered handled error is visible with the correct release identifier.
- No secret or personal token is committed to the repository.
- The runbook lets a stakeholder find the release and the captured signal in the dashboard.
Estimated effort: S
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Give the team actionable performance and crash visibility for one Expo production surface before expanding monitoring across the application.
Files to create or modify:
app.jsonorapp.config.ts— Observe configurationsrc/observability/index.ts— initialization and screen hookdocs/eas-observe.md— verification runbook.env.example— non-secret configuration names
Implementation instructions:
- Follow the current EAS Observe setup for the project’s Expo SDK and add the package/config plugin if required.
- Initialize the SDK at the app entry point with environment-safe configuration.
- Instrument one critical route and one handled error path.
- Build and distribute an internal release, then verify the trace and release metadata.
- Document dashboard checks and remove any temporary test instrumentation before merge.
Acceptance criteria verification checklist:
- An internal release reports at least one screen load or navigation trace.
- A deliberately triggered handled error is visible with the correct release identifier.
- No secret or personal token is committed to the repository.
- The runbook lets a stakeholder find the release and the captured signal in the dashboard.
🟧 Chunk 5 — Replace one web-shaped screen with native-first Expo UI
Goal: Make one high-traffic screen feel correct on each platform by using Expo’s native primitives while preserving the existing feature behavior.
Scope:
- Select one screen with platform-specific interaction or navigation needs.
- Replace its generic web-like controls with approved Expo native UI primitives.
- Preserve the existing data contract, route, loading state, and analytics events.
- Verify touch, keyboard, safe-area, and accessibility behavior on iOS and Android.
Out of scope: A complete design-system rewrite, platform-specific redesign of the whole app, and new product behavior.
Dependencies: The screen’s current behavior is covered by existing QA steps and the project supports the selected Expo native primitives.
Acceptance criteria:
- The same user goal can be completed on iOS and Android.
- Controls respect safe areas and platform interaction conventions.
- Existing deep links, loading/error states, and analytics events still work.
- A non-technical tester confirms the screen is usable in both light and dark system themes.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Make one high-traffic screen feel correct on each platform by using Expo’s native primitives while preserving the existing feature behavior.
Files to create or modify:
app/<route>.tsx— screen migrationsrc/components/native/<Component>.tsx— shared wrapper if neededsrc/components/native/<Component>.test.tsx— behavior testsdocs/native-first-screen.md— QA notes
Implementation instructions:
- Write down the current user journey and identify the one platform mismatch to fix.
- Implement a small cross-platform wrapper around the selected Expo native primitives.
- Migrate the screen without changing its data or navigation contracts.
- Run the existing tests and manually verify keyboard, safe-area, accessibility, and theme behavior.
- Capture before/after screenshots and document any platform-specific limitation.
Acceptance criteria verification checklist:
- The same user goal can be completed on iOS and Android.
- Controls respect safe areas and platform interaction conventions.
- Existing deep links, loading/error states, and analytics events still work.
- A non-technical tester confirms the screen is usable in both light and dark system themes.