Expo 54, React Native 0.81, and Pixels at Ludicrous Speed

Issue #16

25 August 2025
5 Minutes

Last chance to grab your ticket to React Universe Conf. If you want to hang out IRL, use the code “RNR15” at checkout for 15% off. After all, friends don’t let friends pay full price for a conference.


The Endless Edge and The Shiny Glass


React Native 0.81: Full Screen Ahead, Captain!


React Native 0.81 now targets Android 16 (API 36) by default, and that’s where the edge-to-edge saga kicks in. Google has decided that apps on Android 16 must go full-bleed (see video below): your content runs beneath the status and navigation bars, like it or not. The Play Store won’t require API 36 targeting until August 2026.


And before you say, “WTF is ‘Edge to Edge’?”—we’ve explained this before (#6, #4 and #3), but here’s an example from the Android docs. The example on the right shows Android with Edge-to-Edge behavior.

React Native 0.81 also adds a Gradle property, edgeToEdgeEnabled, but that only affects behaviour on older Android versions (15 and below). If you flip it on, your app will look edge-to-edge on older Android versions—so your design is consistent across devices. If you flip it off, Android 16+ still ignores you and enforces full-bleed, but older versions keep the “boxed-in” look.


Also, <SafeAreaView> has been deprecated. It worked well enough back in the pre–edge-to-edge days, but it doesn’t fit the new world order and React Native isn’t interested in keeping it on life support. The path forward is react-native-safe-area-context, which is now the recommended standard.


Over on iOS, those “precompiled builds” we teased back in Rewind #15 are now official. React Native’s native libs ship as prebuilt binaries, which means builds can be up to 10× faster. The price: you can’t step into RN internals as easily while debugging, and Xcode’s latest beta may still has a few tantrums. But if you’ve been watching CI pipelines re-install CocoaPods daily like some Sisyphean punishment, this change is manna from heaven.

And JSC—the JavaScriptCore engine we talked about back in Rewind #8—has finally been evicted from React Native entirely. If you’re still clinging to it, there’s a community package for that. Everyone else is on Hermes already, so this is more like React Native taking the bins out than a radical change.


The bigger picture? 0.81 isn’t about shiny new toys. It’s React Native clearing the backlog, enforcing edge-to-edge layouts, speeding up iOS builds, and shutting down decade-long engine debates. If 0.80 was the setup, 0.81 is the “no really, we’re serious” release. Don’t expect fireworks—just expect React Native to start feeling like it’s grown out of its awkward teenage phase.


👉 React Native 0.81 Release Notes

Expo SDK 54 Beta: Shiny Glass and a Compiler That Actually Helps


Expo SDK 54 ships with React Native 0.81 and precompiled iOS frameworks. Which means: install it, and you immediately inherit the same speed boost we talked about above. Obvious move from Expo really—its whole pitch is “things just work out of the box.” The trade-off, as always, is a bit less customisation than rolling raw React Native.


Now for the fun bit. Unless you’ve been hiding under a rock—or updating your iPhone on the same schedule as my parents—you’ll have noticed iOS 26 brought Liquid Glass to app icons and UI. Expo now supports Apple’s shiny new .icon format:

Which means you can design icons with Apple’s Icon Composer and ship layered, frosty-glass designs that gracefully fall back on older iOS versions.

It’s glossy, frosted, and makes your flat buttons look like relics from a pre-museum gift shop. Expo Router v6 also lands with some upgrades of its own — most notably Link Previews and Native Tabs.

<Link> now supports iOS-style previews, showing a snapshot of the target page. The most basic usage looks like this:

Tabs didn’t get left behind either. Router now supports native tabs on both iOS and Android (still in beta under the unstable- import).

You get automatic scroll-to-top, native transitions, and on iOS 26, even that Liquid Glass sheen on the tab bar—suddenly less “styled View”, more “system-level citizen.”

And finally, React Compiler (a new React feature making its way through the ecosystem) is bundled in the default Expo template. Its job is to optimise your app automatically, so you don’t have to litter code with useMemo and useCallback. It’s still in RC, but Expo thinks it’s ready for most apps.


👉 Expo SDK 54 Beta



Fast Cars and A Radioactive Chemical


Nitro Image: Pixels at Ludicrous Speed


Marc Rousavy (@mrousavy), “The King of Speed”, has added another tool to his collection of very fast cars React Native modules: Nitro Image. It’s a superfast™ Image component for React Native, built on Nitro Modules and Nitro Views (so yes, you’ll need the New Architecture).

Nitro Image gives you an instance-based Image type with byte-buffer pixel access (basically an image object kept in memory that you can tweak directly, pixel by pixel), in-memory operations like resizing and cropping without touching the filesystem. In practice, this means you don’t need to pre-crop your original source images — you can crop on the user’s device, and even extend this into familiar behaviours like “Revert to Original” by storing both the original image and the crop data yourself.

Nitro Image’s deferred ImageLoader delays image loading until the <NitroImage /> view is mounted in a FlatList, not just rendered. Unlike React Native’s <Image />, which starts loading images as soon as they’re rendered (even off-screen, e.g., 50 rows down), <NitroImage /> waits until the view is added to the native UI, closer to being visible. This reduces simultaneous network and memory usage, keeping scrolling smooth in long, image-heavy lists.

Also built in is ThumbHash support. A ThumbHash is a tiny binary (or base64 string) that represents a blurry version of an image.

Because it’s so small, you can store it right alongside a user record or API payload and show it instantly as a placeholder while the full image loads. Nitro handles conversion both ways — ThumbHash ⇄ Image — with async methods available so decoding doesn’t block.

It also supports Web Image loading and caching using SDWebImage (iOS) and Coil (Android).


👉 Nitro Image

Radon IDE v1.10: Rotate, Play Sound and Pretend You Own an iPad


Radon IDE
just bumped another version, and instead of quietly tweaking the curtains, this one actually kicks a bit. Device rotation’s now in the panel—so yes, you can spin your fake iPhone inside VS Code without fumbling for the real one. Feels a bit like playing The Sims, but with your own app.

Next trick: device audio. Your simulator can finally make noise—whether that’s a polished sound effect or whatever horror your app currently calls “notifications.” At least you get a volume slider to save your ears. And for hardware party tricks, iPad just joined the guest list—handy if you’re sketching layouts that don’t look laughable on a tablet.

Under the hood, React Native 0.81 support is now official. The debugger’s less grumpy, the element inspector’s less of a mess, and Radon AI’s MCP tools slot in without feeling bolted on. It’s not perfect, but Radon feels like it’s shedding the “neat experiment” vibe and edging into “legit daily driver” territory.


👉 Radon 1.10



Before you Go…


React Native Reusables: Since Y’all Love A Good UI Library


Tired of rebuilding the same Alert component for the tenth time? React Native Reusables is basically shadcn/ui (a starter pack of copy-and-paste components for React) for React Native, powered by NativeWind. It gives you the essentials—buttons, modals, menus, tables—working across web and native, so your Tailwind-trained brain can stop screaming.


Setup’s dead simple: npx @react-native-reusables/cli init, then add modal, add button, whatever. You get components with sensible defaults (variants, sizes, className) ready to tweak, not boilerplate to babysit.

It’s lean by design—no bloated charting library or date picker—but perfect if you’re done reinventing the basics. Just note: a few devs have hit styling hiccups, so maybe test it in a side project before betting the farm.


👉 React Native Reusables

Extra Thanks To


Frostminded IDE
— a VS Code plugin that generates boilerplate code for components and provides a clean UI for running package.json commands.


If you enjoyed The React Native Rewind and want the “buy us a coffee” equivalent for your company or side project — you’ll get a slot here in the newsletter, a mention on our site, and access to our private mastermind community with monthly calls — Interested? Shoot me an email at luke@rewindstack.com.

The VaultHitchhiker's Guide
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Take me back to the paradise city, where the grass is green and the girls are pretty, oh, won’t you please take me home…
Made with 👽 tech by Luke Farrell, Seyda and Friosn.
After a couple words from all our loyal sponsors, of course: