weshipit.today — React Native Newsletter — 2026-W9

Week of February 23–March 1, 2026

Items This Week

#TitleLabelLink
1Expo SDK 55 Released🟧 EXPORead
2Ship smaller OTA updates: bundle diffing comes to EAS Update in SDK 55🟧 EXPORead
3How to upgrade to Expo SDK 55🟧 EXPORead
45 OTA Update best practices every mobile team should know🟧 EXPORead
5The React Foundation Has Launched⚛️ REACTRead
6React Native Comes to Meta Quest🟦 RNRead
7State of React Native 2025 — Survey Results🟦 RNRead
8react-native-enriched-markdown 0.3: GFM + RTL support🟦 RNRead
9Creating Query Abstractions with TanStack Query⚛️ REACTRead
10Life's Too Short to Hand-Write API Types: OpenAPI-Driven React⚛️ REACTRead

5-Day Action Plan


🟧 Chunk 1 — Upgrade to Expo SDK 55 with New Architecture

Goal: Migrate the project to Expo SDK 55 (React Native 0.83, React 19.2) and drop the legacy architecture — ensuring the app runs on the latest, fully-supported stack and benefits from all New Architecture performance improvements.

Scope:

  • Run npx expo install expo@55 and follow the official upgrade guide
  • Migrate any legacy architecture-only dependencies to New Architecture equivalents
  • Opt into Hermes v1 via app.json config flag
  • Update metro.config.js, babel.config.js, and any deprecated APIs flagged during upgrade
  • Run the full test suite and smoke-test on iOS and Android simulators
  • Update CHANGELOG.md with breaking changes and resolved deprecations

Out of scope: Expo Router v55 navigation changes (separate chunk), EAS Update bundle diffing (Chunk 2).

Dependencies: None — isolated upgrade branch, no production impact until merged.

Acceptance criteria:

  • App builds and runs on both iOS and Android with zero legacy architecture warnings
  • React Native version reads 0.83.x in the app's package.json
  • CHANGELOG.md documents every breaking change encountered
  • A non-technical stakeholder can navigate the full app flow without errors

Estimated effort: M


🟧 Chunk 2 — Enable EAS Update Bundle Diffing for Smaller OTA Payloads

Goal: Reduce OTA update download sizes by up to 75% by activating bundle diffing in EAS Update — directly improving update adoption rates for users on slower networks.

Scope:

  • Upgrade expo-updates to the SDK 55 version
  • Enable bundle diffing in eas.json update configuration
  • Push a test OTA update to the preview channel and measure the diff size vs. the full bundle
  • Document the before/after payload size in a EAS-UPDATE.md file
  • Verify that devices on the preview channel receive the patch correctly

Out of scope: Gradual rollout rules, rollback automation (addressed in Chunk 3), production channel rollout.

Dependencies: Expo SDK 55 must be installed (Chunk 1).

Acceptance criteria:

  • A test OTA update is received by a device as a diff patch, not a full bundle
  • Download size is measurably smaller than the equivalent full bundle (log the delta)
  • EAS-UPDATE.md records baseline vs. diffed payload sizes
  • No crashes or visual regressions on the updated device

Estimated effort: S


🟧 Chunk 3 — Implement OTA Update Best Practices (Channels, Rollback & Fingerprint)

Goal: Harden the OTA update strategy by applying the 5 best practices published by Expo — giving the team a safe, predictable release process and the ability to instantly roll back a bad update.

Scope:

  • Configure preview, staging, and production update channels in eas.json
  • Integrate fingerprint-based update detection using expo-updates API to prevent mismatched updates
  • Implement a gradual rollout (10% → 50% → 100%) for the production channel
  • Add a one-command rollback script to package.json (npm run update:rollback)
  • Document the full update workflow in docs/ota-strategy.md

Out of scope: CI/CD automation of rollouts (future work), A/B testing of update content.

Dependencies: Expo SDK 55 and EAS Update bundle diffing (Chunks 1 & 2).

Acceptance criteria:

  • Three update channels exist and are named correctly in the EAS dashboard
  • A fingerprint mismatch is gracefully handled (no crash, user prompted to update)
  • Gradual rollout is verified by deploying to 10% of the preview channel
  • npm run update:rollback successfully points the production channel back to the previous bundle
  • docs/ota-strategy.md is readable by a non-technical stakeholder

Estimated effort: M


🟦 Chunk 4 — Audit Project Stack Against State of React Native 2025 Results

Goal: Benchmark the project's current tooling, libraries, and architecture choices against the community consensus from the State of React Native 2025 survey — identifying gaps and quick wins to align with industry best practices.

Scope:

  • Read through the State of React Native 2025 results focusing on: architecture adoption, navigation, state management, testing, and styling sections
  • Map each major category to the project's current choice
  • Identify 3 "high-retention / high-usage" libraries the project is not yet using
  • Write a STACK-AUDIT.md with a two-column table: Current choice vs. Community favourite
  • Open one follow-up issue per identified gap (labelled tech-debt)

Out of scope: Implementing the identified changes (tracked as separate issues).

Dependencies: None — purely analytical, no code changes required.

Acceptance criteria:

  • STACK-AUDIT.md covers all 5 survey categories with current vs. recommended choices
  • At least 3 follow-up tech-debt issues are created
  • A non-technical stakeholder can read the audit summary in under 5 minutes
  • The audit is reviewed and acknowledged by a second team member

Estimated effort: S


⚛️ Chunk 5 — Migrate API Types to OpenAPI-Driven Generation with Hey API + Zod

Goal: Eliminate hand-written API types and frontend/backend type drift by generating all API client types automatically from the OpenAPI specification — reducing bugs and saving hours of manual type maintenance per sprint.

Scope:

  • Install @hey-api/openapi-ts and configure it to point to the project's OpenAPI spec
  • Generate TypeScript types and a typed fetch client for all existing API endpoints
  • Replace the top 3 hand-written type files with generated equivalents
  • Add Zod schemas for runtime validation on the 3 most-used API response shapes
  • Add a pnpm generate:api script to package.json and document it in README.md
  • Set up MSW handlers using the generated types for existing unit tests

Out of scope: Migrating all API calls in one go (incremental migration), CI enforcement of schema freshness (future work).

Dependencies: An OpenAPI spec (.json or .yaml) must exist or be accessible from the backend team.

Acceptance criteria:

  • pnpm generate:api runs without errors and produces updated type files
  • The 3 replaced type files are deleted and replaced by imports from the generated client
  • Zod validation catches a deliberately malformed API response in a unit test
  • MSW handlers use generated types with no TypeScript errors
  • README.md documents the generation workflow for new developers

Estimated effort: M