weshipit.today — React Native Newsletter — 2026-W10

Week of March 2–8, 2026

Items This Week

#TitleLabelLink
1Expo SDK 55🟧 EXPORead
2Introducing Expo Observe (Private Preview)🟧 EXPORead
3State of React Native 2025 Results🟦 RNRead
4How Activity Can Keep Your Video Where You Left It⚛️ REACTRead
5Bringing Lighthouse to the App: Core Web Vitals for React Native🟦 RNRead
6Creating iOS Home Screen Widgets and Live Activities in Expo🟧 EXPORead
7React Native 0.85.0 RC.0 Released🟦 RNRead

5-Day Action Plan


🟧 Chunk 1 — Upgrade to Expo SDK 55

Goal: Migrate the project to Expo SDK 55, unlocking React Native 0.83, React 19.2, and the mandatory New Architecture, enabling all subsequent improvements for the week.

Scope:

  • Run npx expo install expo@~55.0.0 and follow the official migration guide
  • Enable the New Architecture in app.json ("newArchEnabled": true)
  • Replace deprecated expo-av with expo-video and expo-audio
  • Update Expo Router to v55 and validate all navigation routes
  • Run builds on iOS and Android via EAS Build and confirm no regressions
  • Test OTA updates to verify bundle diffing (up to 75% smaller updates)

Out of scope:

  • Adopting experimental features (Hermes V1, SplitView)
  • Migrating third-party libraries that do not yet support the New Architecture
  • UI design changes

Dependencies:

  • Access to EAS Build account
  • All third-party native libraries must have New Architecture support

Acceptance criteria:

  • App builds and runs successfully on iOS and Android with SDK 55
  • No regressions on main user flows (navigation, screens, network calls)
  • OTA update published and delivered without errors
  • expo-av usages fully replaced by expo-video / expo-audio

Estimated effort: M


🟧 Chunk 2 — Integrate Expo Observe for Production Startup Metrics

Goal: Enable real-world performance visibility by integrating Expo Observe, so the team can track cold/warm launch times and Time to Interactive across releases without guesswork.

Scope:

  • Join the Expo Observe waitlist and obtain early access credentials
  • Install and configure the Expo Observe SDK in the app
  • Validate that startup metrics (Cold Launch, Warm Launch, TTI, Time to First Render, Bundle Load) are being collected in the Expo dashboard
  • Add a release marker to compare metrics between the current and previous build
  • Document the setup process in the project README

Out of scope:

  • Building custom alerting or external integrations (Datadog, Sentry, etc.)
  • Analysing historical data or creating performance reports
  • Modifying app startup logic to artificially improve metrics

Dependencies:

  • Chunk 1 (Expo SDK 55 upgrade) must be completed first
  • Expo Observe early access approval

Acceptance criteria:

  • Startup metrics appear in the Expo Observe dashboard for at least one real device session (iOS and Android)
  • Release markers are visible and correctly aligned with the current build version
  • No measurable increase in app bundle size (< 50 KB overhead)

Estimated effort: S


⚛️ Chunk 3 — Implement <Activity> for Media State Preservation

Goal: Use React 19.2's <Activity> component to preserve video/audio playback state when screens are hidden (e.g. tab switches, navigation), eliminating jarring resets and improving user experience.

Scope:

  • Identify all screens/components containing video or audio players
  • Wrap hidden player trees with <Activity mode="hidden"> to preserve state
  • Add an useEffect cleanup function to pause media when the component becomes hidden
  • Write a manual test scenario: navigate away and back to a playing video — playback position must be preserved
  • Verify behaviour on both iOS and Android

Out of scope:

  • Migrating to a new media library
  • Implementing picture-in-picture (PiP) mode
  • Modifying the player UI

Dependencies:

  • Chunk 1 (React 19.2 via Expo SDK 55 is required for the <Activity> API)
  • At least one screen with a media player must exist in the codebase

Acceptance criteria:

  • Video playback position is preserved when switching tabs and returning
  • No audio continues to play when the component is hidden (cleanup runs correctly)
  • No visible UI regression on screens that do not use <Activity>

Estimated effort: S


🟦 Chunk 4 — Add Core Web Vitals Performance Monitoring (Lighthouse-style)

Goal: Implement Indeed's open-source Lighthouse-style performance hook to get a single, measurable performance score per screen, enabling non-technical stakeholders to track app health over time.

Scope:

  • Install and configure Indeed's React Native performance hook (@indeed/react-native-core-web-vitals or equivalent open-source package)
  • Instrument the 3 most critical screens (Home, Product detail, Checkout/CTA)
  • Log scores to the existing analytics pipeline (or console during development)
  • Document the baseline scores in a PERFORMANCE.md file for future comparison
  • Set a minimum acceptable score threshold in CI (optional, stretch goal)

Out of scope:

  • Integrating with Expo Observe (covered in Chunk 2)
  • Instrumenting all screens in the app
  • Resolving existing performance issues (this chunk is observation only)

Dependencies:

  • None (can run in parallel with other chunks)
  • Node 18+ and React Native 0.72+ (both satisfied by SDK 55)

Acceptance criteria:

  • Performance scores are printed/logged for at least 3 key screens on a physical device
  • Baseline scores are committed to the repository in PERFORMANCE.md
  • No app startup time regression introduced by the monitoring hook (< 10 ms overhead measured)

Estimated effort: S


🟧 Chunk 5 — Add iOS Home Screen Widget with Expo

Goal: Ship a simple iOS home screen widget (e.g. a daily tip or status indicator) using the new Expo Live Activities & Widgets guide, giving users a native touchpoint outside the app and increasing daily active engagement.

Scope:

  • Follow the official Expo guide to create an iOS home screen widget extension
  • Implement a static widget showing one piece of app data (e.g. next scheduled item, streak, or status)
  • Configure the widget with the correct App Group entitlements for data sharing
  • Test on a physical iOS device (widgets do not render in the simulator)
  • Submit a TestFlight build and verify the widget appears in the widget gallery

Out of scope:

  • Android widgets (different API surface, separate chunk)
  • Live Activities / Dynamic Island (can be added in a follow-up chunk)
  • Personalisation or user-configurable widget settings

Dependencies:

  • Chunk 1 (Expo SDK 55 — required for the Expo widgets API)
  • Apple Developer account with an active provisioning profile
  • Physical iOS device for testing

Acceptance criteria:

  • Widget appears in the iOS widget gallery after a TestFlight install
  • Widget data updates correctly when the app is opened
  • No crash or blank widget reported on iOS 16 and iOS 17+
  • EAS Build completes without errors for the widget extension target

Estimated effort: M