React Native Roadmap 2026-W43
Week of October 19, 2026–October 25, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | New App Store Creative Assets: Examples & Brief | 🟦 RN | Read |
| 2 | Relaunching TeamReach: how OTA updates saved a 5,000,000-user cutover | 🟧 EXPO | Read |
| 3 | Expo SDK 58 | 🟧 EXPO | Read |
| 4 | This Week In React #301: TanStack Start, React Aria, Base UI, Satori, Next.js, Vitest RSC, MobX | ⚛️ REACT | Read |
| 5 | The Great Graphite Migration, Derek Joins Fat Fighters, and a Leaderboard for Your Dependency Tree | 🟦 RN | Read |
5-Day Action Plan
🟧 EXPO Chunk 1 — Upgrade the app foundation to Expo SDK 58
Goal: Move the app onto the Expo SDK 58 and React Native 0.88 baseline so it is ready for current iOS 27 tooling while keeping the existing user flows stable. Source: Expo SDK 58.
Scope:
- Record the current Expo, React Native, and native-module versions before changing dependencies.
- Upgrade the Expo package and compatible Expo modules using the repository’s package manager; apply only required config-plugin or native-project changes.
- Run Expo dependency diagnostics and resolve upgrade-related warnings that block a build.
- Produce one internal iOS build and one internal Android build, then smoke-test launch, navigation, authentication, and the most-used data screen.
Out of scope: iPhone Duo-specific layouts, a full redesign, unrelated dependency upgrades, and production store submission.
Dependencies: A clean working branch, the project’s existing Expo/EAS project, and access to an iOS and Android build environment.
Acceptance criteria:
package.jsonand lockfile resolve Expo SDK 58 with React Native 0.88-compatible packages.- Expo diagnostics complete without unresolved version or config-plugin errors.
- Internal iOS and Android builds install and launch on a real or hosted device.
- The smoke-tested flows work without new crash, navigation, or authentication regressions.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Upgrade the existing app to Expo SDK 58 / React Native 0.88 and verify that core user flows remain stable.
Source: https://expo.dev/changelog/sdk-58
Files to inspect and modify:
package.jsonand the lockfileapp.json,app.config.js, orapp.config.tseas.json, if present- Any native files or config plugins reported by the Expo upgrade tooling
- Existing smoke-test or end-to-end files for launch, auth, and navigation
Implementation instructions:
- Inspect the current Expo, React Native, and Expo module versions and note the baseline.
- Upgrade Expo to SDK 58 with the repository package manager, then run the official dependency alignment command for the new SDK.
- Resolve only incompatibilities required for SDK 58, preserving existing application behavior and configuration.
- Run Expo diagnostics and fix actionable dependency, config-plugin, or native-project errors.
- Build internal iOS and Android artifacts.
- Run a short smoke test covering launch, authentication, primary navigation, and the main data screen.
- Document any known follow-up that is outside this chunk.
Verification checklist:
- Expo SDK 58 and React Native 0.88-compatible versions are locked.
- Diagnostics report no blocking errors.
- iOS internal build installs and launches.
- Android internal build installs and launches.
- Launch, auth, navigation, and main data-screen smoke tests pass.
🟧 EXPO Chunk 2 — Configure a safe EAS OTA canary and rollback
Goal: Give the team a repeatable way to ship JavaScript, styling, and asset fixes quickly while preventing incompatible native changes from reaching users. Source: TeamReach OTA cutover.
Scope:
- Define stable and canary EAS Update channels or branches using the project’s existing runtime-version strategy.
- Add package scripts or documented commands for publishing a canary update and promoting a verified update.
- Publish a harmless canary change to an internal build and verify that the update is received.
- Exercise a rollback or republish procedure and document the operator checklist.
Out of scope: native-module changes, database migrations, a production cutover, and replacing the app’s release provider.
Dependencies: An existing EAS project, compatible runtime-version configuration, and an internal build that can receive EAS Updates.
Acceptance criteria:
- A canary update reaches only the intended internal channel.
- The internal build reports the expected update identifier after restart.
- A rollback or republish returns the test build to the previous known-good JavaScript bundle.
- The repository contains a short, copy/pasteable release and rollback procedure.
- The procedure explicitly rejects native changes as OTA-only releases.
Estimated effort: S
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Configure a safe EAS Update canary and rollback workflow for JavaScript, styling, and asset-only fixes.
Source: https://expo.dev/blog/teamreach-ota-updates-relaunch
Files to inspect and modify:
eas.jsonapp.jsonorapp.config.*package.json- Existing release documentation, such as
README.mdordocs/release.md - CI workflow files only if the repository already publishes EAS Updates there
Implementation instructions:
- Inspect the current EAS project, runtime version, update URL, branch, and channel configuration.
- Define a canary channel for internal builds and a stable channel for production without changing the existing production behavior until verified.
- Add concise package scripts or documented commands for publishing a canary update, promoting a verified update, and rolling back or republishing the last known-good update.
- Publish a harmless visible test change to the canary channel and confirm it is received by an internal build after restart.
- Roll back or republish the known-good update and confirm the build returns to the previous behavior.
- Document the native-code boundary: any native dependency or runtime change requires a new build and store review.
Verification checklist:
- Canary and stable channels are unambiguous.
- The test update reaches only the canary build.
- The update identifier and visible test change are confirmed on-device.
- Rollback or republish restores the known-good bundle.
- Release documentation is complete and warns against OTA-shipping native changes.
🟦 RN Chunk 3 — Pilot React Native Skia 3 Graphite rendering
Goal: Validate whether React Native Skia 3’s Graphite backend improves a representative animation or canvas screen without risking the rest of the app. Source: The Great Graphite Migration.
Scope:
- Add the Skia 3 package and required native configuration in an isolated, feature-flagged screen.
- Recreate one existing high-value visual—such as a chart, animated illustration, or image effect—in a small pilot component.
- Capture a simple before/after baseline for frame smoothness, load time, and memory on one iOS and one Android device.
- Record compatibility findings and keep the pilot disabled by default unless the baseline is met.
Out of scope: migrating every canvas, adopting three.js/WebGPU, broad animation refactors, and claiming a production-wide performance improvement from one screen.
Dependencies: Native build access, one existing visual use case suitable for isolation, and a test device or simulator for each target platform.
Acceptance criteria:
- The pilot screen builds on iOS and Android without affecting existing screens.
- The feature flag keeps the pilot disabled by default.
- A stakeholder can open the pilot screen and see the recreated visual.
- Before/after measurements and device details are recorded.
- The recommendation to continue, revise, or remove the pilot is documented.
Estimated effort: M
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Create a feature-flagged React Native Skia 3 Graphite pilot for one representative visual and measure whether it is safe to continue.
Files to inspect and modify:
package.jsonand the lockfile- The app config and native build configuration
src/features/skia-pilot/SkiaPilotScreen.tsxor the project’s equivalent feature directory- The existing component being used as the comparison baseline
- The project’s feature-flag configuration
docs/performance/skia-pilot.mdor an equivalent engineering note
Implementation instructions:
- Inspect the app’s current rendering component and identify the smallest useful visual to reproduce.
- Add the React Native Skia 3 dependency and required native setup without changing unrelated rendering code.
- Implement an isolated pilot screen that reproduces the selected visual with a clear loading and error state.
- Gate the screen behind an existing feature-flag mechanism, or add the smallest local flag consistent with project conventions; default it to off.
- Measure the baseline and pilot on one iOS and one Android device, recording frame smoothness, first render time, and any memory or crash issue.
- Document the result and an explicit next step.
Verification checklist:
- The app builds on both target platforms.
- The pilot is off by default and existing screens are unchanged.
- The pilot visual is visible when the flag is enabled.
- Baseline and pilot measurements are recorded with device details.
- A continue/revise/remove recommendation is documented.
⚛️ REACT Chunk 4 — Verify shared components on React Native Web
Goal: Catch platform-specific regressions in the shared component layer before React Native Web and React 0.88-related changes reach users. Source: This Week In React #301.
Scope:
- Identify one high-traffic route and the shared components it renders.
- Run the route on the project’s existing web target, or add only the minimal command/configuration needed if web support already exists but is undocumented.
- Fix one clearly reproducible parity issue found in the route, with a focused regression test where practical.
- Add a short manual smoke checklist for mobile and web behavior.
Out of scope: a web redesign, SSR, SEO work, a new design system, and converting mobile-only features to web.
Dependencies: An existing React Native Web or Expo web target, a representative route, and access to the project’s normal web test command.
Acceptance criteria:
- The selected route loads in the web target without a console-blocking error.
- Primary navigation, buttons, text inputs, and loading/error states are usable with a pointer and keyboard.
- At least one identified parity issue is fixed or explicitly documented as a follow-up.
- The smoke checklist can be run by a non-technical stakeholder.
Estimated effort: S
**Copy/paste this prompt:**
Implement the following React Native chunk for your mobile app:
Goal: Verify one high-traffic shared route on React Native Web and fix one focused parity issue.
Source: https://thisweekinreact.com/newsletter/301
Files to inspect and modify:
- The selected route under
src/,app/, orpages/ - Shared components rendered by that route
package.jsonand the existing web-start/test configuration- A focused component or end-to-end test file
docs/testing/platform-smoke.mdor the project’s equivalent checklist
Implementation instructions:
- Inspect the repository and select a high-traffic route with representative navigation, buttons, text input, and loading/error states.
- Run the existing web target and record the first reproducible parity issue.
- Fix only that issue using shared React Native-compatible code; avoid a web-only redesign.
- Add a focused regression test when the project’s test setup supports it.
- Verify the route on web with pointer and keyboard input, then run the same smoke path on iOS or Android.
- Document the exact commands and manual checks.
Verification checklist:
- The selected route loads on React Native Web.
- There are no console-blocking errors on the smoke path.
- Navigation and primary controls work with pointer and keyboard input.
- The focused parity regression is fixed and tested where practical.
- The mobile/web smoke checklist is documented.
🟦 RN Chunk 5 — Prepare the iOS 27 App Store creative asset pack
Goal: Make the app’s store listing ready for iOS 27’s new creative placements and updated screenshot requirements so the team can test acquisition messaging without waiting for a new binary. Source: New App Store Creative Assets: Examples & Brief.
Scope:
- Export one product-page header and one search-results asset using the app’s current brand system.
- Re-export the required iPhone screenshot at 1206 × 2622 and verify the image remains legible at store scale.
- Prepare a small asset manifest with filename, placement, target OS, dimensions, and message hypothesis.
- Upload the assets as a draft in App Store Connect or hand the prepared pack to the release owner for upload.
Out of scope: a full visual rebrand, paid acquisition, a statistically conclusive PPO experiment, video production, and iPhone Duo-specific screenshots.
Dependencies: Approved brand artwork, current app screenshots, and App Store Connect access or a named release owner.
Acceptance criteria:
- The header, search-results asset, and updated screenshot are exported in the required formats and dimensions.
- A non-technical stakeholder can identify which asset appears in each placement.
- The asset manifest records the message hypothesis and review status.
- Assets are visible in an App Store Connect draft or delivered as a complete upload-ready package.
Estimated effort: S
**Copy/paste this prompt:**
Implement the following React Native product-release chunk for your mobile app:
Goal: Prepare an iOS 27 App Store creative asset pack that can be reviewed and uploaded without a new app build.
Source: https://neoads.substack.com/p/app-store-creative-assets
Files to inspect and modify:
- Existing store-artwork or marketing-assets directory
- Current screenshot source files or capture scripts
docs/release/app-store-assets.mdor the project’s equivalent release checklist- A new asset manifest such as
docs/release/ios-27-assets.json
Implementation instructions:
- Inspect the current brand assets and screenshot-generation workflow.
- Create one static product-page header and one static search-results asset aligned with the app’s current visual language.
- Re-export the required iPhone screenshot at 1206 × 2622 and verify text contrast, safe areas, and legibility.
- Name files consistently and create a manifest listing placement, dimensions, target OS, message hypothesis, and review status.
- Upload the assets to an App Store Connect draft when access is available; otherwise deliver the complete upload-ready package and exact upload steps.
- Do not change app code or claim performance impact from the assets.
Verification checklist:
- Header asset is present and mapped to the product-page placement.
- Search-results asset is present and mapped to the search placement.
- Screenshot is exactly 1206 × 2622 and readable.
- Manifest includes dimensions, placement, hypothesis, and status.
- Assets are uploaded to a draft or delivered as a complete upload-ready package.