Node-API, Rock×S3, React Native Harness, AI on iOS, React Universe Conf Countdown

Authors
Michał Pierzchala
Principal Engineer
@
Callstack

Hey,

It’s Michał delivering the June episode of our newsletter to you! Last month was packed with big news, catching up to WWDC announcements, and experimenting with new APIs. As always, we’ve hand-picked some of the most important updates to the React Native ecosystem, and we’re inviting you to our two biggest conferences: React Universe Conf and React Conf (scroll to the bottom for details).

Community highlights 

  • React Native 0.80: Getting closer to a stable JS API, React 19.1, deep imports deprecation, freezing Legacy Architecture, 12% faster builds thanks to prebuilding a few internal iOS libraries (with more to come). Expo users will need to wait for SDK 54 to adopt it.
  • Unistyles 3.0: React Native Unistyles is now fully rewritten to Nitro Modules and supports only the New Architecture. This release brings a revamped API, Scoped Themes, Compound Variants, Reanimated integration, and smarter style updates with minimal re-renders.
  • Reddit's iOS App Binary Optimization: The Reddit team shares insights on how they achieved a 20% faster startup thanks to low-level optimization techniques such as LLVM’s Profile-Guided Optimization (PGO), dual profiling (coverage and temporal), partitioning, and Binary Layout Optimization. It’s a fascinating read!
  • Bluesky app enabled New Architecture: It’s about time to switch. We experienced some blockers when enabling the new architecture for some of our clients, but they were recently resolved in the latest versions of React Native and Reanimated.
  • Android 16 is here: Available as SDK 36, it comes with a new notifications experience, advanced device protection, and new desktop-style windowing (you can open, move, and resize multiple app windows on a single screen). It’s going to be fun adding that to React Native apps.
  • Nitro Image: A new Image component powered by Nitro Modules and built in Nitro Views (supporting only new architecture; anybody see a trend here?). Promises fast image loading and, more importantly, image manipulations that are done in-memory. Time to experiment! 

Callstack Incubator highlights  

React Native Node-API 

 We’ve just shipped a thing. In an unprecedented collaboration between Callstack (Mariusz Pasiński), MongoDB (Kræn Hansen), NativeScript (Jamie Birch), Microsoft (Vladimir Morozov), and Rebecker Specialties (Matt Hargett), we’ve released Node-API support for React Native.

It’s a big deal for cross-platform library authors and, hopefully, soon, app developers. Node-API enables unit-testing of native modules in Node.js, cross-platform prebuilds that you can share with Electron, NativeScript, and other frameworks and their versions (thanks to ABI stability), building modules in Rust, Go, Zig, C#, and more.

We're bringing Node-API (used in Node.js, Deno, Bun) to React Native:

- ABI-stable & runtime-independent
- cross-platform prebuilds
- supports Rust, Go, Zig, C#, and more

It’s very early days, but give it go and ⭐️ https://t.co/7JNrQzvwB5

— Callstack Engineers (@callstackio) July 10, 2025

Rock

Rock now supports AWS S3 and Cloudflare R2 as remote cache providers, which means you can store your app binaries there and keep using our GitHub Actions (use v2 instead of v1, it’s the same API) to handle the building, downloading, and uploading the artifacts for you.

RNEF now fully supports S3 and R2 as remote cache providers, so you can:
・ store IPA/APK where you like
・ use our GitHub Actions for remote builds
・ hook it into any CI provider
・ combine it all seamlessly through the CLI

Wrote a small blog post about it ⬇️ pic.twitter.com/2HgyGrrWl9

— Michał Pierzchała (@thymikee) June 24, 2025

And if you ever tried to add React Native to an iOS app, now is the time to try it again, as we’ve partnered with our React Native Brownfield library to give you the easiest experience yet in just a few steps. Check our latest docs or watch the recording of React Universe Meetup in NYC where I presented that topic with a demo.

We’ve also upgraded the framework to be compatible with React Native 0.80, so you can use the latest toys.

This is all you need to add React Native to a SwiftUI app:

1. Import your app (packaged as a framework by RNEF)
2. Start React Native runtime
3. Display the view

Powered by RNEF and @callstack's React Native Brownfield library. pic.twitter.com/fbLuQOt34N

— React Native Enterprise Framework (@rnef_dev) June 25, 2025

React Native Bottom Tabs

An iOS beta release with a completely new design paradigm (Liquid Glass)? Oskar (and React Native) says: “hold my 🍺”.

Liquid Glass buttons in React Native 🔍

I did a small POC, should I make it a library?

(Android would have its native button equivalent) pic.twitter.com/m56JYpJyny

— Oskar Kwaśniewski (@o_kwasniewski) June 13, 2025

It turns out that if you use native primitives, you get native looks for free. Recompile your app for iOS 26 target and enjoy the new looks, as React Native Bottom Tabs supports it from day 2 after the announcement.

Thanks for 1k stars on React Native Bottom Tabs! 🎉⭐

New iOS 26 updates are coming! pic.twitter.com/EZurh6pDco

— Oskar Kwaśniewski (@o_kwasniewski) June 16, 2025

React Native AI

Szymon and Mike are hard at work, together recently, to bring the on-device LLM, built into the latest iPhone models through the FoundationModels API, into production with our react-native-ai project. It’s a rough ride, and we file issue after issue on the Apple Developer forum, but it’s getting more stable with every iOS 26 beta.

And since Google announced Gemma 3n models available on the latest Pixel devices, which can operate with as "little" as 2GB and 3GB of memory, we’re onto it as well.

Selecting @aisdk for the user-facing API was amazing decision for react-native-ai:
→ generateText()
→ streamText()
→ tool calls 👀
→ structured outputs with generateObject() ✨

Everything powered by LLM shipped with iOS 🫡 https://t.co/mgYiM8fDUS pic.twitter.com/VKrL1bA4fc

— Szymon Rybczak (@SzymonRybczak) June 10, 2025

React Native Harness

Szymon is delivering more demos of his latest end-to-end testing library for React Native, which we internally call React Native Harness internally. The project is still in its infancy, but is getting closer to a usable MVP with every week. It’s quite exciting, because it allows for JavaScript-written tests without mocking, especially helpful for React Native library authors, and for regular users who don’t find Detox or Maestro syntax compelling.

The beauty of testing on the React Native side? No fakery.

Your Touchable is hidden behind an overlay? It won’t magically work - it’ll fail, as it should.

Real UI, real results. pic.twitter.com/T38jzsqDju

— Szymon Chmal (@ChmalSzymon) June 4, 2025

In addition to all of that, we released the following content pieces last month:

Blog

  • React Native Legal: CLI & Programmatic API - Unified Tooling for License Attributions by Artur Morys-Magiera: Open-source licensing got easier (finally). Meet React Native Legal, a unified tool for automating license attribution (covering both JS and native dependencies) via CLI or API. No more manual copy-pasting, guaranteed.
  • Caching React Native Builds on S3 and R2 With Rock by Michał Pierzchała: Say goodbye to unnecessary native builds. Rock just added remote caching on AWS S3 and Cloudflare R2; ideal for enterprises needing custom CI, compliance, or full control over infrastructure. Less building, more shipping.
  • How I Used MCP to Control My Friend's Home by Kewin Wereszczyński: Curious about Model Context Protocol? This post shows how MCP helps LLMs like Claude access real-world data. You'll follow a real use case-connecting a smart home API to Claude using a Node server-to see what MCP enables, how it works, and why it is the USB-C of AI tooling.

 Podcast & video

  • React Universe On Air Episode #52 Build Faster and Scale Smarter With Rock: Discover how Rock cuts build times, streamlines CI, and simplifies large-scale app development for growing teams.
  • React Native Optimization in Practice Episode 3: Stop Shipping Unused Code With R8: Are you shipping unnecessary code in your Android app? You’re probably not alone. In this episode, we show how to use R8, the code shrinker and obfuscator, to reduce the size of your Android builds in React Native.

Live streams

Upcoming events  

React Universe Conf: Two months to go!

  • The lineup keeps getting better: Mark Rousavy and TypeScript educator Matt Pocock are joining the speaker roster.
  • Heads-up: Regular Access tickets are only available through July. Late Birds go live August 1, so grab your spot while you still can!
  • New workshop just dropped: Vercel AI SDK v5: Building AI-powered Apps in TypeScript, led by Matt Pocock himself. Watch the invite and save your spot here.

TypeScript, AI, and a bit of board games🎲@mattpocockuk lands in Wrocław this September for:
🛠️ A workshop on the @vercelAI SDK v5
🎙️ A talk at @reactuniverse_

Grab your tickets: https://t.co/nOtBXnvZxx pic.twitter.com/GWJ6x2iTYC

— React Universe Conf | Sept 2-4, 2025 (@reactuniverse_) July 14, 2025

React Conf 2025

That’s a wrap on June! Catch us online or in person next month, with more tools, more talks, and maybe a surprise or two, because who knows?

Until then, happy shipping!

Michał

Insights

Your next read or watch starts here

Building a Software Factory: Write Specs an Agent Can Build From — cover

Nov 6Article

Building a Software Factory: Write Specs an Agent Can Build From

Learn how to research requirements, resolve open decisions, and write testable specs that AI coding agents can implement without the planning conversation.

 Large-Scale Migrations With Coding Agents: Planning, Verification, and Rollback — cover

Nov 4Article

Large-Scale Migrations With Coding Agents: Planning, Verification, and Rollback

Plan codebase migrations with coding agents using reviewable requirements, verification checks, staged rollouts, and defined rollback criteria.

Conversational Banking: From Customer Questions to Authorized Actions — cover

Nov 2Article

Conversational Banking: From Customer Questions to Authorized Actions

Explore conversational banking architecture through a card-dispute example, covering tool access, authorization, execution, observability, and human handoff.

How AI Agents Can Cut Manual QA by 30% — cover

Oct 30Article

How AI Agents Can Cut Manual QA by 30%

Explore an agentic QA workflow targeting 30% less manual effort across mobile, web, and TV, with test selection, failure triage, and validation.

Building a Software Factory: The Night My Agents Waited for Me — cover

Oct 28Article

Building a Software Factory: The Night My Agents Waited for Me

Learn how permissions, review limits, and missing product decisions stalled two overnight coding agent runs, and how their maintainer revised the workflow.

Your AI Coding Agent Still Needs an Architecture — cover

Oct 22Article

Your AI Coding Agent Still Needs an Architecture

Use explicit contracts, behavior tests, and dependency checks to guide AI coding agents and review their changes through a TypeScript favorites example.

cover

Oct 15Live Stream

Who Left the Agents Running? React Native Software Factories

Join Kewin Wereszczyński and Szymon Chmal to explore what can go wrong in a React Native software factory overnight and the controls that keep agents on track.

cover

Oct 14Podcast

When Coding Gets Faster, What Breaks Next?

Matt Hargett explains how AI moves bottlenecks across testing, deployment, infrastructure, support, and the rest of software delivery.

cover

Oct 13Podcast

MCP and Supervisor Agents in eBay's Monitoring Workflow With Leonel Candido da Silva

Leonel Candido da Silva explains eBay's agentic monitoring workflow: specialized agents, MCP, PagerDuty reports, and plans to learn from past incidents.

cover

Oct 12Podcast

AI Agent Observability With Ivana Huckova and Sven Großmann

Grafana's Ivana Huckova and Sven Großmann discuss AI agent observability, coding-agent costs, PR analytics, secret redaction, and local guardrails.

cover

Oct 7Talk

Automating Mobile QA with Cloud Agents

Michał Pierzchała shows how cloud-based QA agents can test real iOS and Android user flows and bring screenshots, recordings, and logs into pull requests.

cover

Oct 1Live Stream

Can Jev Make AI Agent Decisions Faster?

Explore Jev with Kewin Wereszczyński and Szymon Chmal: how it works, its approach to faster agent decisions, and possible local alternatives.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.