weshipit.today — React Native Newsletter — 2026-W10
Week of March 2–8, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | Expo SDK 55 | 🟧 EXPO | Read |
| 2 | Introducing Expo Observe (Private Preview) | 🟧 EXPO | Read |
| 3 | State of React Native 2025 Results | 🟦 RN | Read |
| 4 | How Activity Can Keep Your Video Where You Left It | ⚛️ REACT | Read |
| 5 | Bringing Lighthouse to the App: Core Web Vitals for React Native | 🟦 RN | Read |
| 6 | Creating iOS Home Screen Widgets and Live Activities in Expo | 🟧 EXPO | Read |
| 7 | React Native 0.85.0 RC.0 Released | 🟦 RN | Read |
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.0and follow the official migration guide - Enable the New Architecture in
app.json("newArchEnabled": true) - Replace deprecated
expo-avwithexpo-videoandexpo-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-avusages fully replaced byexpo-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
useEffectcleanup 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-vitalsor 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.mdfile 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