weshipit.today — React Native Newsletter — 2026-W16

Week of April 13–April 19, 2026

Items This Week

#TitleLabelLink
1React Native 0.85 — New Animation Backend, Jest Preset, Metro TLS🟦 RNRead
2ViewTransition Support for React Native Fabric (PR Preview)🟦 RNRead
3React Native Skia 2.6 — First Graphite (Vulkan/Metal/Dawn) Pre-release🟦 RNRead
4Expo Brownfield: Add Expo to an Existing Native App Without a Rewrite🟧 EXPORead
5Boneyard — Auto-Generated Skeleton Screens for React & React Native⚛️ REACTRead

5-Day Action Plan


🟦 Chunk 1 — Upgrade to React Native 0.85

Goal: Bring the app to the latest stable React Native version, unlocking the new animation backend and eliminating deprecated APIs that could block future upgrades.

Scope:

  • Run the React Native Upgrade Helper diff for 0.84 → 0.85
  • Replace preset: 'react-native' with preset: '@react-native/jest-preset' in jest.config.js
  • Install new @react-native/jest-preset package
  • Remove all usages of StyleSheet.absoluteFillObject → replace with StyleSheet.absoluteFill
  • Update Node.js version in CI to ≥ 20.19.4 (drop EOL v21/v23)
  • Smoke-test critical flows on iOS and Android simulators

Out of scope: Enabling the experimental Shared Animation Backend (0.85.1+), updating third-party libraries beyond the upgrade.

Dependencies: None — this is a standalone upgrade chunk.

Acceptance criteria:

  • yarn ios and yarn android boot without errors
  • All existing Jest tests pass with the new preset
  • No StyleSheet.absoluteFillObject references remain in codebase
  • CI pipeline passes on a supported Node.js version

Estimated effort: M


🟦 Chunk 2 — Enable the New Shared Animation Backend (Native Driver for Layout Props)

Goal: Unlock smooth, jank-free layout animations on both iOS and Android by opting into the new Shared Animation Backend introduced in RN 0.85.1, which allows Flexbox and position props to be driven by the native thread.

Scope:

  • Upgrade to React Native 0.85.1 (experimental channel) once released
  • Enable the Shared Animation Backend via the experimental flag documented in the RN release notes
  • Refactor at least one existing Animated.View (e.g. an expanding card or modal transition) to animate width/height/flex with useNativeDriver: true
  • Verify the animation runs at 60 fps on a physical device using the React Native Perf Monitor

Out of scope: Migrating the entire animation layer, Reanimated-specific changes, or ViewTransition (not yet stable).

Dependencies: Chunk 1 (RN 0.85 upgrade must be completed first).

Acceptance criteria:

  • Layout prop animation (e.g. width) runs natively without JS thread involvement
  • No frame drops visible on a mid-range Android device
  • No regressions in existing Reanimated-powered animations

Estimated effort: S


🟧 Chunk 3 — Integrate Expo Brownfield into an Existing Native App

Goal: Allow the React Native / Expo layer to be embedded as a pre-built native binary artifact into an existing iOS or Android app, enabling incremental Expo adoption without a full rewrite.

Scope:

  • Follow the new SDK 55 "isolated" brownfield approach from the Expo docs
  • Configure the Expo project to build ahead-of-time and output a native binary artifact
  • Embed the artifact into the shell native app (iOS: XCFramework / Android: AAR)
  • Add a simple "Hello from Expo" screen reachable from the native side as a proof-of-concept
  • Document the build and embedding steps in the project README

Out of scope: Full screen navigation integration, deep-link handling, or EAS Update configuration (follow-on chunks).

Dependencies: An existing iOS or Android native shell app available in the repository.

Acceptance criteria:

  • The native app launches and can navigate to the embedded Expo screen
  • OTA updates can be pushed to the Expo layer without rebuilding the native binary
  • Build artifacts are generated reproducibly via a single eas build command

Estimated effort: M


🟦 Chunk 4 — Configure Metro TLS for Local HTTPS Development

Goal: Enable HTTPS (and WSS for Fast Refresh) in the Metro dev server so developers can test against APIs that enforce secure connections without modifying the API's security policies.

Scope:

  • Install mkcert and generate a locally-trusted certificate for development
  • Add a config.server.tls block to metro.config.js pointing to the generated certificate files
  • Verify Fast Refresh still works over WSS
  • Add the certificate setup steps to the project onboarding documentation / CONTRIBUTING.md
  • Test on both iOS Simulator and Android Emulator

Out of scope: Production TLS configuration, CI/CD changes, or certificate rotation automation.

Dependencies: React Native 0.85 (Chunk 1 must be done first).

Acceptance criteria:

  • Metro dev server starts and serves on https://localhost:8081
  • Fast Refresh triggers correctly over wss:// when a file is saved
  • No self-signed certificate warnings appear in the simulator/emulator

Estimated effort: XS


⚛️ Chunk 5 — Implement Auto-Generated Skeleton Screens with Boneyard

Goal: Replace hand-crafted loading placeholders with automatically generated skeleton screens that mirror the real UI layout, reducing maintenance overhead and improving perceived performance for end users.

Scope:

  • Install boneyard and configure it for the React Native project
  • Identify the 2–3 heaviest-loaded screens (e.g. Feed, Profile, Product Detail)
  • Wrap those screens with Boneyard's snapshot mechanism to capture skeleton "bones"
  • Replace existing manual <Skeleton /> or shimmer components on those screens
  • Add a Storybook story (or equivalent) for each generated skeleton to allow stakeholder review

Out of scope: Migrating all screens in one go, custom bone animations (follow-on), or dark-mode skeleton variants.

Dependencies: None — can be done in parallel with other chunks.

Acceptance criteria:

  • The 2–3 target screens display a skeleton that accurately mirrors their layout during loading
  • A non-technical stakeholder can visually confirm the skeleton matches the real screen in a Storybook/Expo preview
  • No visible layout shift when the real content replaces the skeleton

Estimated effort: S ting all screens in one go, custom bone animations (follow-on), or dark-mode skeleton variants.

Dependencies: None — can be done in parallel with other chunks.

Acceptance criteria:

  • The 2–3 target screens display a skeleton that accurately mirrors their layout during loading
  • A non-technical stakeholder can visually confirm the skeleton matches the real screen in a Storybook/Expo preview
  • No visible layout shift when the real content replaces the skeleton

Estimated effort: S