weshipit.today — React Native Newsletter — 2026-W11

Week of March 9, 2026 – March 15, 2026

Items This Week

#TitleLabelLink
1React Navigation 8 — March Progress Report🟦 RNRead
2expo-widgets — Home Screen Widgets & Live Activities in Expo (alpha)🟧 EXPORead
3Expo Observe — Production Performance Monitoring (private preview)🟧 EXPORead
4React Native 0.85 RC.0 — StyleSheet cleanup, dropped EOL Node.js🟦 RNRead
5Vite 8.0 — Rolldown replaces esbuild/Rollup, Babel dropped, Oxc steps up⚛️ REACTRead

Sources: This Week In React #272 (Mar 11, 2026) · React Status #466 (Mar 13, 2026)


5-Day Action Plan


🟦 Chunk 1 — Migrate to React Navigation 8 Alpha and Adopt Schema-Validated Deep Links

Goal: Upgrade to React Navigation 8 alpha to unlock Zod-powered deep link validation, automatic URL path generation, native symbols, and Material 3 theming — all while staying ahead of the stable release.

Scope:

  • Install the React Navigation 8 alpha packages (@react-navigation/native@alpha)
  • Replace manual deep link path config with the new automatic path-from-screen-name system
  • Add Zod schemas to validate and type-check incoming deep link params on at least 2 screens
  • Swap existing icon usage to the new SFSymbol component (iOS) where applicable
  • Run smoke tests on iOS and Android to catch regressions

Out of scope: Full navigation rewrite, Android MaterialSymbol adoption (can follow in a separate chunk), custom transitions.

Dependencies: React Native ≥ 0.83, React 19, Zod ≥ 3.

Acceptance criteria:

  • Deep links to the 2 target screens are validated and typed with Zod schemas
  • Screen paths are auto-generated without a manual linking config object
  • A non-technical stakeholder can tap a deep link and land on the correct screen with valid data
  • No navigation-related crashes in the CI smoke test run

Estimated effort: M


🟧 Chunk 2 — Implement a Home Screen Widget with expo-widgets (Alpha)

Goal: Ship the app's first iOS home screen widget using expo-widgets alpha, giving users at-a-glance access to key app data directly from their home screen.

Scope:

  • Install expo-widgets (alpha) and configure the Expo Config Plugin
  • Define one widget (small size) using the SwiftUI primitive tree exposed by Expo UI
  • Connect the widget to a real data source via App Group / shared UserDefaults
  • Test on a physical iOS device (widgets require hardware) in at least two size variants

Out of scope: Android widgets (not yet supported), interactive widget actions, multiple widget sizes beyond small + medium.

Dependencies: Expo SDK 55, iOS 14+, Apple Developer account with App Groups entitlement, physical iOS device.

Acceptance criteria:

  • The widget appears in the iOS widget picker and is addable to the home screen
  • Widget data reflects the current app state within the standard widget refresh window
  • A non-technical stakeholder can add the widget and read live data without opening the app

Estimated effort: M


🟧 Chunk 3 — Integrate Expo Observe for Production Performance Monitoring

Goal: Gain real-world performance visibility into the production app by connecting Expo Observe, enabling P90/P99 metric tracking and build-over-build regression detection.

Scope:

  • Request and configure access to Expo Observe (private preview) via the Expo dashboard
  • Instrument 2–3 key screens with performance markers (TTI, JS bundle load, screen render time)
  • Set up a baseline build and validate that metrics appear in the Expo Observe dashboard
  • Define a performance budget threshold for P90 TTI and configure an alert

Out of scope: Custom metrics beyond what Expo Observe exposes, integration with third-party APM tools (Datadog, Sentry), Android-specific perf profiling.

Dependencies: Expo SDK 55, EAS Build, Expo Observe private preview access.

Acceptance criteria:

  • At least 3 performance metrics are visible in the Expo Observe dashboard for a production build
  • A regression (intentionally introduced in a test build) is detectable by comparing two builds side by side
  • A non-technical stakeholder can read the dashboard and identify which build is slower

Estimated effort: S


🟦 Chunk 4 — Upgrade to React Native 0.85 RC and Remove StyleSheet.absoluteFill

Goal: Adopt RN 0.85 RC early to discover breaking changes before stable release, with a focus on removing the deprecated StyleSheet.absoluteFill and dropping EOL Node.js version constraints from CI.

Scope:

  • Bump react-native to 0.85.0-rc.0
  • Search the codebase for all usages of StyleSheet.absoluteFill and replace with StyleSheet.absoluteFillObject or inline styles
  • Update CI Node.js version matrix to remove EOL versions (Node 18 and below)
  • Run the full test suite and smoke test on iOS and Android
  • Document migration notes in the project README

Out of scope: Production release with an RC version, addressing other deprecations not in 0.85.

Dependencies: React Native 0.84 currently installed, Xcode ≥ 15.3, Android Studio Meerkat.

Acceptance criteria:

  • App builds and runs on both platforms with zero references to StyleSheet.absoluteFill
  • CI pipeline runs on Node 20+ only
  • All existing automated tests pass
  • No visual regressions on the 5 most-used screens (verified by a non-technical stakeholder)

Estimated effort: S


⚛️ Chunk 5 — Upgrade to Vite 8.0 (Rolldown, Oxc, No Babel)

Goal: Upgrade the web companion app / toolchain to Vite 8.0 to benefit from dramatically faster builds via the Rolldown bundler and Oxc transforms, with Babel fully removed from the default pipeline.

Scope:

  • Bump vite to ^8.0.0 and @vitejs/plugin-react to ^6.0.0
  • Remove explicit @babel/core and babel-* dependencies that are no longer needed
  • Run a build and verify bundle output is equivalent to the previous version
  • Benchmark cold build time before and after the upgrade
  • Update CI cache keys if needed

Out of scope: Migrating custom Babel transforms to Oxc (handle in a follow-up), changes to the React Native Metro bundler.

Dependencies: Node.js ≥ 20, existing Vite-based web build (e.g. Expo web, Storybook, or documentation site).

Acceptance criteria:

  • vite build completes successfully with no Babel dependency in node_modules/.vite
  • Cold build time is measurably faster (benchmark logged in the PR description)
  • All CI checks pass and bundle output passes visual diff against the previous build
  • A developer can confirm the upgrade by running vite --version and seeing 8.x

Estimated effort: S