weshipit.today — React Native Newsletter — 2026-W10

Week of March 2–8, 2026

Items This Week

#TitleLabelLink
1Expo Router v55: more native navigation, more powerful web🟧 EXPORead
2Home screen widgets and Live Activities in Expo🟧 EXPORead
3Expo brownfield: Add Expo to your existing native app without a rewrite🟧 EXPORead
4Introducing Expo Observe (Private Preview)🟧 EXPORead
5Expanded permissions for the Expo GitHub bot🟧 EXPORead
6React Native 0.85.0 RC1 is out🟦 RNRead
7Bringing Lighthouse to the App: Core Web Vitals for React Native🟦 RNRead
8React Native Grab: Tap Any UI Element, Get Its Source Context🟦 RNRead
9React Native Skia 2.5🟦 RNRead
10How Activity Can Keep Your Video Where You Left It⚛️ REACTRead

5-Day Action Plan


🟧 Chunk 1 — Migrate to Expo Router v55 New Stack API

Goal: Modernise in-app navigation to leverage native platform conventions (native tabs, dynamic colors, toolbars) and prepare the groundwork for experimental SSR/data loaders — directly improving perceived quality for end users.

Scope:

  • Upgrade expo-router to v55 in package.json
  • Replace legacy Stack configuration with the new Stack API
  • Implement native tabs using the new Tabs component API
  • Apply dynamic color tokens to the navigator header
  • Add a custom toolbar to at least one primary screen
  • Smoke-test navigation flows on both iOS and Android simulators

Out of scope: SSR / data loaders (experimental, left for a dedicated spike), Expo SDK upgrade (handled in Chunk 2).

Dependencies: None — can be done on a feature branch independently.

Acceptance criteria:

  • Navigation stack renders using the new API with no console warnings
  • Native tabs are visible and tappable on both platforms
  • Dynamic colors respond to light/dark mode toggle
  • A non-technical stakeholder can navigate the full app flow without errors

Estimated effort: M


🟧 Chunk 2 — Implement Home Screen Widgets with expo-widgets

Goal: Deliver a home screen widget and a Live Activity so users can see key app data from their home screen without opening the app — a high-visibility engagement feature.

Scope:

  • Install expo-widgets library
  • Build one home screen widget using Expo UI components (e.g. a summary card)
  • Configure a basic Live Activity (iOS 16+)
  • Verify zero native configuration is required (pure JS/TS setup)
  • Test widget display on iOS simulator and a physical Android device

Out of scope: Multiple widget sizes, widget interactivity beyond display, watchOS complications.

Dependencies: Expo SDK 55 must be installed (or use the SDK 55 canary if upgrading separately).

Acceptance criteria:

  • Widget appears on iOS home screen long-press menu
  • Widget displays correct data from the app state
  • Live Activity starts and stops without crashing
  • No Xcode native module changes required

Estimated effort: M


🟦 Chunk 3 — Add Core Web Vitals Performance Monitoring (Indeed hook)

Goal: Establish a measurable performance baseline for the app using Lighthouse-style metrics, enabling data-driven optimisation decisions and stakeholder-friendly performance reports.

Scope:

  • Integrate Indeed's open-source React Native performance hook
  • Instrument 3 key screens (home, detail, list)
  • Log Time to Interactive (TTI), First Contentful Paint equivalent, and Interaction to Next Paint equivalent
  • Display a dev-only performance overlay in __DEV__ mode
  • Document baseline scores in a PERFORMANCE.md file

Out of scope: CI performance gates, production alerting, remote logging (future work).

Dependencies: None — standalone hook, no external service required.

Acceptance criteria:

  • Hook is installed and firing on 3 instrumented screens
  • Dev overlay shows a numeric score on each screen
  • PERFORMANCE.md documents the initial baseline scores
  • A non-technical stakeholder can read the score and understand pass/fail

Estimated effort: S


🟦 Chunk 4 — Test React Native 0.85 RC1 on a Staging Branch

Goal: Identify breaking changes and compatibility issues with RN 0.85 before it reaches stable, giving the team a head start and reducing future upgrade friction.

Scope:

  • Create a chore/rn-0.85-rc1 git branch
  • Bump react-native to 0.85.0-rc.0
  • Run the full test suite (jest, detox if applicable)
  • Run a manual smoke test on iOS and Android
  • Document every breaking change, warning, or deprecation in a UPGRADE-0.85.md file
  • Open a draft PR summarising findings

Out of scope: Fixing breaking changes (tracked separately), merging to main.

Dependencies: None — isolated branch, no production impact.

Acceptance criteria:

  • Branch compiles and runs on both platforms
  • Test suite executed and results recorded
  • UPGRADE-0.85.md lists every issue found with a severity level
  • Draft PR created and shared with the team for review

Estimated effort: S


⚛️ Chunk 5 — Implement Activity Component for Stateful UI Preservation

Goal: Use React 19.2's Activity component to preserve expensive UI state (video playback, scroll position, form data) when screens are hidden — eliminating the jarring "reset" experience users currently face.

Scope:

  • Identify 2–3 screens/components that lose state on hide (video player, long list, multi-step form)
  • Wrap each with <Activity mode="hidden"> when the screen is not focused
  • Verify state is preserved across tab switches and modal dismissals
  • Write a unit test asserting the component state is not reset on hide

Out of scope: React Native-specific <Activity> bridge (not yet stable in RN), server-side rendering of Activities.

Dependencies: React 19.2 must be installed (check package.json).

Acceptance criteria:

  • Video continues from the same timestamp after switching tabs and returning
  • Form field values are intact after a modal opens and closes over the form
  • Unit test passes asserting state persistence on mode="hidden"
  • A non-technical stakeholder can demo the behaviour without noticing any reset

Estimated effort: S