weshipit.today — React Native Newsletter — 2026-W07
Week of February 9, 2026 – February 15, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | React Native 0.84 stable — Hermes V1 by default, iOS prebuilt binaries, WASM | 🟦 RN | Read |
| 2 | Gesture Handler 3 beta — Hook-based API, deeper Reanimated integration | 🟦 RN | Read |
| 3 | Rozenite — Plugin framework for React Native DevTools (post-Flipper) | 🟦 RN | Read |
| 4 | Expo SDK 55 launch imminent — What to expect | 🟧 EXPO | Read |
| 5 | Building Bulletproof React Components — Defensive patterns for production | ⚛️ REACT | Read |
Sources: This Week In React #268 (Feb 11, 2026) · React Status #462 (Feb 13, 2026)
5-Day Action Plan
🟦 Chunk 1 — Upgrade to React Native 0.84 Stable
Goal: Ship the React Native 0.84 stable upgrade to production, unlocking Hermes V1 as the default engine, faster iOS builds via prebuilt binaries, and a cleaner codebase with Node.js 22 as the new baseline.
Scope:
- Bump
react-nativeto0.84.0inpackage.json - Upgrade Node.js requirement to 22.11+ in
.nvmrc,.node-version, and CI matrix - Verify Hermes V1 is active (check Metro startup logs for
Using Hermes) - Enable iOS prebuilt binaries in
Podfileand measure pod install time before/after - Run the full test suite and smoke test on both platforms
- Document breaking changes and migration notes in the project README
Out of scope: Enabling WebAssembly in this chunk (separate initiative), production release of RC builds, full legacy architecture cleanup.
Dependencies: Xcode ≥ 16, Android Studio Meerkat, Node.js 22.11+, CocoaPods ≥ 1.15.
Acceptance criteria:
- App builds and runs without warnings on iOS and Android
Using Hermes(V1) confirmed in Metro logs on both platforms- iOS pod install time is measurably reduced thanks to prebuilt binaries (benchmark in PR)
- All existing CI checks (unit tests, type check, lint) pass on Node.js 22
- A non-technical stakeholder can open the app and navigate all core flows without issues
Estimated effort: M
🟦 Chunk 2 — Migrate Gestures to Gesture Handler 3 Hook-Based API
Goal: Upgrade to Gesture Handler 3 beta and migrate the most-used gesture implementations from the legacy GestureDetector / imperative API to the new useGesture hook — unlocking deeper Reanimated 4 integration and New Architecture-native performance.
Scope:
- Bump
react-native-gesture-handlerto the latest3.xbeta - Identify all
GestureDetector,PanGestureHandler,TapGestureHandlerusages in the codebase - Migrate 3–5 gesture components to the new
useGesture(Gesture.Pan())hook API - Validate gesture interactions on both iOS and Android physical devices
- Confirm no regressions in swipe-to-dismiss, pull-to-refresh, or drag-and-drop flows
Out of scope: Full codebase gesture migration, custom native gesture recognizers, Reanimated 4 migration (can follow separately).
Dependencies: React Native 0.84, New Architecture enabled, react-native-reanimated ≥ 4.x.
Acceptance criteria:
- Migrated gesture components use only the
useGesturehook API (no legacy handler imports) - Gestures respond at native frame rate with no JS-thread jank on a mid-range Android device
- Swipe and drag interactions feel identical to the previous implementation for end users
- A non-technical stakeholder cannot detect any regression during a hands-on review
Estimated effort: M
🟦 Chunk 3 — Set Up a Rozenite DevTools Plugin for Custom Debugging
Goal: Replace the old Flipper plugin workflow with a Rozenite-powered custom debugging panel in React Native DevTools, giving the team in-app visibility into app state, feature flags, or API responses — with no extra windows or servers required.
Scope:
- Install
rozeniteand configure it inmetro.config.js - Create one custom panel (e.g. a feature-flag inspector or a network log viewer)
- Enable the panel in the React Native DevTools sidebar
- Document how to add a new panel in the project's
CONTRIBUTING.md
Out of scope: Multiple plugin panels (ship one, iterate later), Rozenite Agent integration (separate chunk), production builds (DevTools panels are dev-only).
Dependencies: React Native 0.84+, Metro DevTools enabled, Rozenite @callstackincubator/rozenite.
Acceptance criteria:
- The custom Rozenite panel appears in React Native DevTools without opening a separate Flipper window
- The panel displays live, device-scoped data (e.g. current feature flag state or last 10 API calls)
- A new developer can add their own panel by following the
CONTRIBUTING.mdguide - Panel has zero impact on production bundle size (verified via Metro bundle analysis)
Estimated effort: S
🟧 Chunk 4 — Prepare the Codebase for Expo SDK 55
Goal: Complete all pre-flight checks and deprecation fixes so the team can upgrade to Expo SDK 55 on launch day with zero surprises.
Scope:
- Run
npx expo install --checkto identify all packages incompatible with SDK 55 - Review the Expo SDK 55 changelog and tag all breaking changes affecting the current project
- Resolve deprecation warnings currently surfaced in Metro and Xcode build logs
- Bump
expoto~55.0.0in a dedicated branch and verify the app boots on both platforms - Update
app.json/app.config.jsfor any renamed or removed config fields
Out of scope: Adopting new SDK 55 features (Widgets, Compose UI) — handled in separate chunks once stable, store submission.
Dependencies: Expo SDK 54 currently installed, EAS Build account, Node.js 22.
Acceptance criteria:
npx expo install --checkreports zero incompatible packages on the SDK 55 branch- App boots and core flows work on both iOS and Android simulators
- No warnings about deprecated
app.jsonkeys in the Expo CLI output - A non-technical stakeholder can run the staging build from the SDK 55 branch
Estimated effort: S
⚛️ Chunk 5 — Harden Components with Bulletproof Defensive Patterns
Goal: Audit the 5 most-reused React Native components and apply defensive production patterns — error boundaries, prop validation, loading/error/empty states, and accessibility — so they are resilient in every runtime condition.
Scope:
- Identify the 5 most reused components (via import count or usage frequency)
- Wrap each in a typed
ErrorBoundarywith a fallback UI - Add explicit loading, error, and empty state rendering to all async-data components
- Validate props with TypeScript strict types (no
any, required vs optional clearly defined) - Add
accessibilityLabelandaccessibilityRoleto all interactive elements in target components - Write or update unit tests to cover each state variant
Out of scope: Full codebase component audit, design system changes, backend error handling.
Dependencies: React 19 (for improved error boundary ergonomics), existing Jest/Testing Library setup.
Acceptance criteria:
- Each of the 5 target components renders a graceful fallback UI on thrown errors
- Loading, error, and empty states are visually verified by a non-technical stakeholder
- TypeScript strict mode reports zero errors in the target components
- All new state variants are covered by at least one unit test
Estimated effort: M