React Native Relay is where our team writes down what actually shipped — not what was demoed at a conference. We cover the New Architecture rollout, the post-CodePush update story, native module debugging, and the gestures-and-animations stack that ties it all together. Every article is built around a real iOS and Android build, tested on devices we own, with version numbers pinned so the steps still work six months from now.
New Architecture migration without breaking your app
The New Architecture — Fabric, TurboModules, and the bridgeless mode — is the default in React Native 0.76 and later, and Expo SDK 52+ ships with it enabled. The migration is not a checkbox; it changes how native modules expose their interfaces, how view managers register, and how synchronous calls cross the JS/native boundary. We walk through codegen specs, interop layers for unmigrated libraries, and the practical fallback when a critical dependency hasn't shipped a Fabric component yet.
We also publish migration diaries for real apps: what broke on first launch, which Hermes flags mattered, and how startup time and TTI changed once bridgeless mode was on. If you maintain a brownfield app embedded inside an existing iOS or Android host, our integration guides cover the bits the official docs gloss over.
Life after CodePush: Expo OTA and the EAS Update workflow
Microsoft retired App Center CodePush in March 2025, leaving thousands of apps looking for a new over-the-air update path. The strongest replacement is EAS Update, which works for both Expo and bare React Native projects, but the mental model is different — updates are tied to runtime versions, channels map to release tracks, and rollbacks happen by republishing a known-good bundle rather than flipping a switch.
We document the migration end-to-end: configuring expo-updates in a bare app, wiring channels to your CI, handling assets that live outside the JS bundle, and staying inside Apple's guidance on what JavaScript-only updates are allowed to change. We also benchmark self-hosted alternatives like custom Expo update servers for teams that need their bundles to stay on infrastructure they own.
Reanimated 4, Skia, and the gesture stack that actually feels native
Animations are where most React Native apps still feel off, and the tooling has changed substantially. Reanimated 4 moves to a CSS-style animations API on top of the worklet runtime, and pairs with Gesture Handler 2.x for input that doesn't drop frames during heavy JS work. For anything beyond standard transitions — shared element transitions, frame-by-frame effects, custom shaders — React Native Skia is now the default answer.
Our team writes the kind of articles we wish existed when we first picked these libraries up: worklet pitfalls, how layout animations interact with FlashList, when to drop into Skia instead of fighting the layout system, and how to profile a janky screen using Hermes sampling profiler and Xcode Instruments together.
Browse the latest articles below for hands-on walkthroughs, upgrade notes, and the production-tested patterns we use on the apps we ship. New posts land most weeks, and older guides get revisited whenever React Native, Expo, or the underlying native SDKs move.