weshipit.today — React Native Newsletter — 2026-W10
Week of March 2–8, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | Expo Router v55: more native navigation, more powerful web | 🟧 EXPO | Read |
| 2 | Home screen widgets and Live Activities in Expo | 🟧 EXPO | Read |
| 3 | Expo brownfield: Add Expo to your existing native app without a rewrite | 🟧 EXPO | Read |
| 4 | Introducing Expo Observe (Private Preview) | 🟧 EXPO | Read |
| 5 | Expanded permissions for the Expo GitHub bot | 🟧 EXPO | Read |
| 6 | React Native 0.85.0 RC1 is out | 🟦 RN | Read |
| 7 | Bringing Lighthouse to the App: Core Web Vitals for React Native | 🟦 RN | Read |
| 8 | React Native Grab: Tap Any UI Element, Get Its Source Context | 🟦 RN | Read |
| 9 | React Native Skia 2.5 | 🟦 RN | Read |
| 10 | How Activity Can Keep Your Video Where You Left It | ⚛️ REACT | Read |
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-routerto v55 inpackage.json - Replace legacy
Stackconfiguration with the new Stack API - Implement native tabs using the new
Tabscomponent 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-widgetslibrary - 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.mdfile
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.mddocuments 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-rc1git branch - Bump
react-nativeto0.85.0-rc.0 - Run the full test suite (
jest,detoxif applicable) - Run a manual smoke test on iOS and Android
- Document every breaking change, warning, or deprecation in a
UPGRADE-0.85.mdfile - 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.mdlists 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