Swift for Android, React Navigation Updates, Voltra, and React Native on Meta Quest

Authors
Michał Pierzchala
Principal Engineer
@
Callstack

Hey,

It’s Michał, freshly back from a 2-week vacation, coming to you with the October edition of our monthly newsletter. This time, we have game engines coming to React Native, more CSS support, new RFCs, new Incubator team members, and some announcements. Let’s go!

Community highlights

  • Solito 5: The library, bridging React Native and Next.js navigation, simplifies its web support by removing the dependency on react-native-web. Its components now re-export native Next.js elements with full DOM prop support. This release adds headless web components, compatibility with Next.js 16 and Expo SDK 54, improved monorepo examples, and fixes, such as proper mobile useSearchParams handling
  • Why Did My React Native App Stop Working After Migrating to the New Architecture?: If you’re still migrating to new architecture (I hope you all are already on it!), SWM team prepared a handy guide on common issues you may encounter with bridgeless mode, Reanimated 3, custom layout in native components and more.
  • React Native Godot: A new library from Born brought the Godot game engine to React Native. This means you can use highly complex and performant animations and games right within your Android or iOS app. If you follow Jamon Holmgren on X, you know he builds a helicopter game with Godot; it’s pretty cool and could now work on mobile as well.
  • Uniwind is now open-source: Announced on the React Universe stage by Jacek Pudysz, Uniwind is now open and available for everyone to use. It offers 2.5x faster runtime compared to NativeWind. If you’re into Tailwind, go check it out.
  • More CSS properties landing in React Native: Nishan Bende from Expo is actively working on bridging the CSS gap between React Native and web, implementing: grayscale, drop-shadow, and saturate filter, contrast and hue rotate filter, background size, position, and repeat, which have all been merged recently. Kamil Paradowski from our team has recently joined these efforts and is working on clip-path support for both Android and iOS; PRs coming soon.
  • RFC: standardize brownfield API for Android: Hur Ali from Callstack dropped an RFC to add new APIs for React Native on Android: DefaultReactDelegate, DefaultReactFragment also improving back button integration, that would serve as entry points for native Android apps adopting React Native incrementally. We highly encourage you to give it a look and leave comments.

Callstack Incubator highlights

Swift for Android

Mike is experimenting with the newly released Swift capability: Android support. Turns out, you can write your Turbo Modules (not to be confused with Native Components) once in Swift and have them run on both iOS and Android platforms. Great to see Apple extend its “cross-platform” definition beyond its own ecosystem. This unlocks new ways of writing modules, and potentially reduces the maintenance area for native modules in React Native.

Is this the future? 🤯 Just built a cross-platform React Native Turbo Module in Swift that runs on iOS and Android using the Swift Android SDK. Should I open source that template? pic.twitter.com/YrdI5aNcWn

— Mike (@grabbou) November 3, 2025

React Navigation

Let’s give a warm welcome to Satya, who is joining our Incubator team. Currently, he focuses on React Navigation, so you can expect increased activity from this project, introducing new ways to navigate to authenticated screens, bottom tabs, improved type safety for useNavigation and useRoute hooks, and more. Stay tuned for a new major release in the upcoming months.

Now available for testinghttps://t.co/g33HdvNVTO

— Satyajit Sahoo (@satya164) October 27, 2025

Voltra

Szymon recently worked on a cool experiment: using a custom React renderer to bridge JSX to SwiftUI (through JSON) to unlock the development of iOS Widgets and Live Activities. It turned out that Saúl Sharma built something very similar a month earlier and announced it as Voltra.

🚀I built Voltra, an npm package that lets you:

ship custom Live Activities, Widgets, Dynamic Island + more with React.

No Swift, Xcode, or extra JS runtime needed.
⚡ Hot reload
⛽ Server push
✻ AI coding agent-friendly
𝝠 @Expo + React Native ready

Demo + must-read… pic.twitter.com/0L3IjFWEQJ

— Saúl (@saul_sharma) September 28, 2025

We’re pleased to announce that these two have joined forces and are now working together on Voltra, planning to release it to the public in the upcoming weeks. Can’t wait!

I finally decided to try out an idea I had a while ago - using a custom React renderer to power Live Activities through React Native. And you know what? It actually works pretty well. Fast refresh is there too! pic.twitter.com/ko3Td5nIRX

— Szymon Chmal (@ChmalSzymon) October 23, 2025

React Native on Meta Quest

Jan joined our team briefly to explore what’s possible for React Native on HorizonOS that powers Meta Quest devices. Turns out, a lot is possible! If you have a React Native/Expo Android app already, chances are you can quickly port it to Quest with minimal changes.

Since you have access to the native platform, you can extend it with some VR-related features to make it more compelling for the headset users.

Building apps for @MetaQuestVR does not have to be scary! Our latest article shows how you can easily get started with building React Native apps using @Expo! Get up and running in minutes and configure a full development setup when you’re ready to build more advanced apps!

👇 pic.twitter.com/3safXQNfOx

— Jan Jaworski 🤠 (@jaworek3211) October 22, 2025

If you’re interested in spatial computing on Quest, follow Jan on X or LinkedIn and join the competition. The best apps can win $25,000, with a total of $1.5 M in prizes, so it’s worth a shot. Not to mention, you can monetize your app with in-app payments as well.

Meta's $1.5M React Native competition for @MetaQuestVR is on. Wondering what to build?@jaworek3211 brainstormed 4 app ideas that go beyond 2D ports, from social to meditation apps. Get your inspiration and tool suggestions before you start coding (full article below) ⬇️ pic.twitter.com/EHdsn10Qgg

— Callstack Engineers (@callstackio) November 6, 2025

React Native Harness

The testing library for native modules in React Native is finally here, and it’s called Harness. You can test real native behavior with JavaScript, using Jest-like syntax (powered by Vitest helpers), and run them on an emulator or a real device. No mocking required, but it’s possible when needed.

In the latest releases, Harness integrates with Jest even further, utilizing its custom runners and projects functionality, making it easier to set up and reuse Jest features you love, such as watch mode or test filtering, without us having to reimplement them. Thank you, Jest, for being modular and awesome.

🎉 Introducing React Native Harness - a lightweight framework for testing native modules directly on device or emulator.

Write tests in a Jest-like syntax, run them in a real React Native runtime, and verify native behavior without mocks. pic.twitter.com/pVQD5csq0i

— Szymon Chmal (@ChmalSzymon) October 15, 2025

RFC: ArrayBuffer support in TurboModules

Kamil Paradowski is working on improving TurboModules with a new built-in type: ArrayBuffer. He created an RFC, which we highly encourage you to comment on and see what trade-offs need to be made to bridge single-threaded JavaScript with multi-threaded C++ through JSI.

Having it natively in the TurboModules spec will allow for dramatically faster buffer processing, required by streaming or chat apps. We hope it will be merged soon.

ArrayBuffer support is coming to TurboModules!

This is a deal-breaker for streaming apps.

RFC lead by @_ikswodarap pic.twitter.com/SkchrdKce3

— Michał Pierzchała (@thymikee) October 13, 2025

Content

Blog

  • Exploring Lynx JS: From Quick Start to CLI Workflows by Łukasz Chludziński: Lynx JS is ByteDance’s new cross-platform runtime that brings JavaScript closer to native performance. In this guide, we walk through the Lynx ecosystem, how to get started quickly, and how the community-built CLI enables greenfield native projects. Ideal for React Native developers curious about the next wave of cross-platform tooling.
  • What You Can Build With React Native on Meta Quest by Jan Jaworski: This article offers inspiration for Meta's $1.5M Developer Competition by outlining what you can build with React Native on Quest. It details app possibilities like meditation, interactive games, and MR experiences, encouraging developers to use VR-specific features.
  • Using Expo Libraries on Horizon OS: A Guide to Compatibility by Jan Jaworski: This article serves as a compatibility guide for developers using Expo with React Native on Meta's Horizon OS. It explains why Horizon OS, a custom Android build lacking Google Play Services, creates compatibility differences. The post details which core Expo libraries work, which require configuration via the expo-horizon-core plugin, and which need specific forks (like expo-horizon-notifications) or updated libraries (like expo-iap) to function, enabling developers to build for VR with familiar tools.
  • Getting Started With Expo on Meta Quest by Jan Jaworski: This article guides developers on using React Native and Expo to build applications for Meta Horizon OS. It starts with a simple setup using Expo Go, allowing developers to run and live-reload apps on a Meta Quest device in minutes. The guide also details important platform differences, such as permissions and responsive design, and explains how to transition to a full development build to unlock the entire React Native ecosystem.
  • Introducing React Native Harness: Fast, Real-Device Testing for Native Modules by Szymon Chmal: We’re introducing React Native Harness, a new way to test native modules directly on real devices and emulators. It brings together the speed and simplicity of Jest with the realism of on-device execution, giving developers a powerful, CI-ready tool to validate native behavior with ease. Harness makes it simple to ensure your native code works exactly as intended across every platform.
  • From Files to Buffers: Building Real-Time Audio Pipelines in React Native by Mike Grabowski: Most audio APIs are designed around files. You generate sound, save it, then read it back for playback or processing. While simple, this workflow breaks down when you need low latency or real-time interaction. In this article, we’ll explore how to work with raw PCM data entirely in memory, construct valid WAV buffers on the fly, and transfer them efficiently to JavaScript using JSI. The result is a flexible foundation for building real-time audio features directly in React Native.

Podcast, videos, and talks

  • React Universe On Air React Native at Scale With NFL: Discover how the NFL uses React Native, Expo, and a monorepo to ship apps across iOS, Android, web, and TV with one stack.
  • React Universe Studio 2025 Interviews: Between the React Universe Conf 2025 talks, we took you inside the studio for behind-the-scenes interviews and discussions, which you can now watch on YouTube.

Webinars and live streams

Upcoming events

React Native London

On November 14, I’ll be at React Native London to talk about testing native modules reliably with JavaScript using React Native Harness: a tool that bridges the gap between mocks and full E2E tests. It lets you run real device tests with full native access and Jest-like simplicity. My colleague Jakub Stadniczuk will be there too, so come chat with us about testing, open source, or what we’re building at Callstack.

Vega Developer Meetup

Later, I’m heading to Munich on November 17 for the Vega Developer Meetup, hosted by Amazon. I’ll lead a hands-on workshop on integrating React Native into Android TV apps, alongside talks from Artur Morys-Magiera, Eric Fahsl, and the Vega team. Expect in-depth discussions on brownfield integration, performance tracing, and ample time for networking.

React Advanced London

We’ll wrap up November in London at React Advanced on November 28.  Szymon Chmal will show how he built a plugin framework for React Native DevTools (no forks needed), while Szymon Rybczak will reveal how to run LLMs fully on-device with react-native-ai.

That’s it for the October edition. Let's catch up online or in real life!

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.