We are releasing React Native Skia version 3.0 which runs WebGPU by default. By moving away from the OpenGL-centric design, it allows for multithreading by default as well as deep integration with three.js, vision camera, and transformer.js
https://t.co/FUpMonlHd3
Here's what I think about the @ShopifyEng RN → native migration article:
When I rebuilt the Expo Go UI using Jetpack Compose last year, I already felt that all declarative UI frameworks are fairly similar in use, and that agents do a good job migrating between them when it comes to presentation layers. So I'm not surprised Shopify found it possible to fairly quickly rewrite an existing RN app into two separate native codebases. That was always the easier part.
I think the main problem lies in making sure the business logic layer doesn't diverge when there's nothing keeping it together. We introduced a few minor differences between the two Expo Go platforms despite trying very hard not to.
And consistency vs platform feel is one more question of taste, not something an agent will always solve for you.
I don't think react-native will go away, but I definitely feel react-native is evolving, will evolve further, and I have a couple of predictions:
➡️ More and more low level UIs as native components (either ExpoUI or local expo modules with native code files mixed with JS).
Agents are great at writing presentation layers, so why bother having JS lists with all that complexity and perf costs?
➡️ OTAs are more important than ever, prepare for changes ahead of time.
Slow app store review times vs cheap code push people to allow more customisability from JS, essentially treating the JS layer as server driven UI.
➡️ New UI paradigms mean RN remains valuable.
Think custom, per-user interfaces (made for you UIs streamed inside chat, customizable apps etc.) – you need an interpreted higher level abstraction layer that's easier to define and has an SDK.
➡️ Focus on brownfield with no clear set boundaries. Agents pick and choose if they want to build experiences in native or in JS, with most components/APIs/libraries available both as JS and native entrypoints.
In general: I don't think the falling cost of writing lower level code makes abstractions automatically obsolete. You get for free a lot of community effort on deciding/mapping platform quirks, stuff that would cost tokens and engineering effort otherwise, or even worse, would be missed and be a long-running paper-cut in your app.
I think it makes it necessary to make abstractions lock-in free. Use these opinions and higher level components when they make sense and give value, use lower level super easily and cheaply otherwise.
That's why I'm excited about stuff like Expo UI, the new modules API, our @swmansion libraries that work for both RN and native, and all the other effort we did as a community to make mixing those approaches possible and pain free.
ayyyy this is painful... and I guess no way around that, initializing the whole JS context, loading bundle, plus all the other stuff that gets loaded
VS
Native code
:/
It’s a good read, but I’m left confused. It’s very thin on the reasoning as to *why*, mostly fixating on “LLMs make it easier to do native now”.
It doesn’t mention any particular shortcoming of React Native that they felt limited by. Just a motivation to reduce abstraction.
🎨 𝚋𝚊𝚌𝚔𝚐𝚛𝚘𝚞𝚗𝚍𝙸𝚖𝚊𝚐𝚎 is officially stable in #ReactNative 𝟬.𝟴𝟳.𝘅!
𝗟𝗶𝗻𝗲𝗮𝗿 and 𝗿𝗮𝗱𝗶𝗮𝗹 gradients now work out of the box with zero third-party dependencies. Goodbye 𝚛𝚎𝚊𝚌𝚝-𝚗𝚊𝚝𝚒𝚟𝚎-𝚕𝚒𝚗𝚎𝚊𝚛-𝚐𝚛𝚊𝚍𝚒𝚎𝚗𝚝 👋🚀
react-native-livechart is live 🥳
Beautiful, reliable live charts for React Native: (multi-) line and candlestick, smooth at 60fps even with 10+ trades a second coming in.
TL;DR: npm install react-native-livechart; deep dive 👇
Our App.js keynote has finished, so we can officially spill the beans also here 📣
React Native Gesture Handler 3.0 is now officially stable, offering a hook-based API compatible with the React Compiler, deep Reanimated integration, the new recommended way to build buttons, and more.
Ever wondered why animations on #reactnative's new architecture were so laggy?
We partnered with the @discord team, found the bottlenecks, and helped make their mobile app feel buttery smooth.
Here’s the before/after 👇
If you ever wondered why when running react profiler you see an instance of a component taking randomly longer than other instances of the same component to render
That usually is because of garbage collection
Hermes performs garbage collection while that component is running and so it take longer
That happens way less when the app runs in release mode so keep that in mind when using react profiler in dev mode
React Native's best Camera library just got a massive update! 🤯
Five years. A full Nitro rewrite. 3,000 LOC of JSI/C++ code deleted.
RAW, depth, multi-cam, a new Constraints API.
We wrote the full story - check out our first post on Margelo's new engineering blog.
New Animation Backend
React Native 0.85 introduces a preview of the Shared Animation Backend, built in collaboration with Software Mansion.
This is a new internal engine that will power both Animated and Reanimated. It expands first class native animation support in core, and unlocks even faster native performance for Reanimated.
This is an experimental feature and will be available in 0.85.1 (shortly).
Sonner Native is soon getting a major upgrade — stacking toasts.
Multiple toasts will stack with depth, scale down to show layers behind, and expand on tap. All powered by React Native's New Architecture: synchronous getBoundingClientRect() in useLayoutEffect.
I'm cooking up an insanely powerful - and most importantly: - safe new API for VisionCamera V5 to select resolutions, FPS, dynamic ranges/HDR, stabilization modes and basically all Camera "features".
Previously (V1-V4) all selected features were activated at once. If it fails (eg 4k + HDR + 60 FPS often fails on Android due to bandwidth limitations), an error is thrown.
Now (V5 beta) constraints are negotiated by their priority, making it predictable and safe.
This completely replaces the "Format" system, which was reporting resolution/FPS/HDR combinations that, when selected, often didn't hold up in practice: eg. a lower resolution was actually selected than the one specified in the Format.
Aside from safety, this now also allows a wider range of supported photo resolutions on iOS-, and video resolutions on Android: my iPhone 15 Pro supports up to 8k now, while previously only 4k was supported.
Additionally, HDR recordings weren't really working properly on iOS - now all dynamic ranges, and Apple Log will work properly, including HDR Metadata.
Stabilization can now also be enabled per connection (eg Preview + Video separately)
Years of building React Native apps means years of figuring out what actually works. ⚛️ And we finally poured our knowledge into the official Software Mansion's skills.
Install them with:
npx skills add software-mansion-labs/skills