React Native Roadmap 2026-W34

Week of August 17–23, 2026

Items This Week

#TitleLabelLink
1React Native Firebase v26 — New Architecture and synchronous APIs🟦 RNRead
2RevenueCat Experiments — paywall A/B testing without a redeploy🟦 RNRead
3How to build a resilient activity tracker with Expo🟧 EXPORead
4EAS Observe is now generally available🟧 EXPORead
5Building a native-first social platform with Expo🟧 EXPORead

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 await usage 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 versions
  • src/firebase/<feature>.ts — bounded API migration
  • src/<feature>/** — call-site updates
  • src/firebase/<feature>.test.ts — smoke coverage

Implementation instructions:

  1. Inventory the selected feature’s Firebase imports and confirm the v26 migration notes for those APIs.
  2. Upgrade only the required packages and regenerate native dependency state.
  3. Update call sites, preserving existing error handling and analytics event names.
  4. Run the feature on both supported platforms, including one offline or denied-permission case.
  5. 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 UI
  • src/paywall/revenueCatExperiment.ts — offering and fallback logic
  • src/analytics/paywallEvents.ts — event payloads
  • docs/paywall-experiment.md — dashboard and QA instructions

Implementation instructions:

  1. Confirm the two approved offerings and create the experiment in the RevenueCat dashboard.
  2. Implement a typed loader that requests the experiment placement and returns the default offering on failure.
  3. Reuse the existing paywall component so the experiment changes only the offering data.
  4. Add analytics payloads and a QA-only way to force each variant on a test device.
  5. 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 persistence
  • src/hooks/usePersistedActivity.ts — lifecycle integration
  • app/activity.tsx — resume and offline UI
  • src/activity/activitySession.test.ts — recovery tests

Implementation instructions:

  1. Document the minimal session fields and version the persisted payload.
  2. Implement atomic save and restore helpers with corrupted-data handling.
  3. Subscribe to app lifecycle changes and checkpoint the active session.
  4. Add resume, discard, stale, and retry states to the existing activity screen.
  5. 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.json or app.config.ts — Observe configuration
  • src/observability/index.ts — initialization and screen hook
  • docs/eas-observe.md — verification runbook
  • .env.example — non-secret configuration names

Implementation instructions:

  1. Follow the current EAS Observe setup for the project’s Expo SDK and add the package/config plugin if required.
  2. Initialize the SDK at the app entry point with environment-safe configuration.
  3. Instrument one critical route and one handled error path.
  4. Build and distribute an internal release, then verify the trace and release metadata.
  5. 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 migration
  • src/components/native/<Component>.tsx — shared wrapper if needed
  • src/components/native/<Component>.test.tsx — behavior tests
  • docs/native-first-screen.md — QA notes

Implementation instructions:

  1. Write down the current user journey and identify the one platform mismatch to fix.
  2. Implement a small cross-platform wrapper around the selected Expo native primitives.
  3. Migrate the screen without changing its data or navigation contracts.
  4. Run the existing tests and manually verify keyboard, safe-area, accessibility, and theme behavior.
  5. 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.