React Native Apple Vision Pro

Sep 3, 2024

React Native Apple Vision Pro

Oskar, a React Native developer at Callstack, takes us on the journey of bringing React Native to the cutting-edge Apple Vision Pro. Let's explore how his team overcame obstacles on an unreleased platform to redefine whatโ€™s possible in app development.

Author

Aditi Dixit
Aditi DixitContent Writer

Editorโ€™s Note: This recap from thegeekconf features Oskar as he takes us through the daring journey of bringing React Native to Apple Vision Pro โ€” a story of bold innovation and relentless determination.

My name is Oskar, and Iโ€™m a React Native developer at Callstack, working on the React Native Vision OS within our R&D team. I also contribute to the React Native Core and maintain several open-source projects. Today, I want to share how we made this possible, navigating a path that was far from straightforward.

Remember the moment in June 2023 when Apple unveiled their new device at the end of a conference, dropping the famous phrase, "one more thing"? That moment introduced Apple Vision Pro, marking their first major hardware release in nearly nine years. The keynote wasnโ€™t just about new tech but about redefining the future. Imagine large, floating windows controlled by only your eyes and hands.

The Future Was No Longer a Distant Concept โ€” It Was Right In Front of Us

As soon as you witness this, the question arises: How do we build apps for this new platform using React? The vision is clearโ€”a world where those amazing React Native apps can be ported effortlessly to this cutting-edge device. Traditionally, cross-platform app development has relied on tools like Unity with C#. While Unity excels in game development, itโ€™s not the go-to for creating spatial apps. Plus, unlike React, which serves as a universal app-building language, Unity comes with a cost. Thanks to React Native, your code can ship to over ten platforms. So, why not add XR devices to that list?

The Mission: Make Spatial App Development as Intuitive as Building a Website

React has always championed the "Write once, run anywhere" philosophy, and this mission fits right in.

React Native already supports iOS and Android out of the box. But thanks to the vibrant open-source community, it now extends to even more platforms, including macOS, tvOS, Windows, Web, and Skia, which supports Linux and macOS. Today, this family grows with the addition of React Native Vision OS.

Building the Future Doesnโ€™t Happen in Isolationโ€”It Thrives on Open Collaboration

The work done is all available as open-source software on GitHub. Vision OS, the operating system for Apple Vision Pro, builds on iOS, making the transition smoother. However, spatial apps bring new challengesโ€”youโ€™re not using a mouse or keyboard but instead rely on hand and eye tracking. Youโ€™re no longer sitting in front of a screen; youโ€™re immersed in a world where screens surround you, and your content can be rendered anywhere.

Apple Vision Pro offers three main ways to display content: normal windows, volumes (allowing viewing 3D elements from any angle), and immersive spaces surrounding the user. Imagine adjusting your level of immersionโ€”perhaps setting it to 50 percentโ€”depending on your preference. The app must request your permission when you want to enter this immersive mode.

Appleโ€™s push for apps to be built with SwiftUI is noteworthy, especially since React Native doesnโ€™t use SwiftUI. This required some changes, but the vision remains clearโ€”making React Native apps work seamlessly on Vision OS.

Bringing React Native to Vision OS Wasnโ€™t Just an Upgradeโ€”It Was a Reinventin

The journey was filled with technical challenges, from creating a fork in the React Native repository to adjusting the build infrastructure. The process started with setting up the toolsโ€”fixing build issues, adapting source code, and integrating platform featuresโ€”all to ensure that React Native could thrive on this new platform.

As you dive into the technical aspects, you encounter issues like deprecated APIs that donโ€™t align with Vision OS. For instance, UIScreenโ€™s MainScreen API, used to retrieve screen size, doesnโ€™t apply to Vision Pro, where you have two screensโ€”one for each eye. So, you shift focus from screens to windows floating in space, and adapt React Native to work within these constraints.

Making React Native work on Vision OS involved refining the build process, especially tools like Cocoapods and CMake. These tools are critical for linking and building dependencies on iOS. As with any pioneering effort, the work wasnโ€™t without hiccupsโ€”such as CMake initially building for the actual device instead of the simulator.

In the World of Development, Progress Often Starts With a Challenge

By adjusting the codebase, integrating features, and ensuring compatibility, React Native began to take shape on Vision OS. The proof of concept eventually appeared on screenโ€”a React Native app with the familiar red box floating in the virtual kitchen of the Vision OS simulator.

The effort didnโ€™t stop there. To make React Native Vision OS easy to adopt, the team worked on supporting both the old and new Bridgeless architectures, paving the way for seamless integration.

React Native has always had a simple goal: to empower developers to build across platforms easily. With Vision OS, that goal expands into new dimensions, offering endless possibilities for innovation.

As the journey with React Native Vision OS continues, the possibilities are limitless. With every challenge overcome, the future of app development becomes more exciting and expansive.

Check Out the Video here. โฌ‡๏ธ

Subscribe to Our Newsletter

More from the engineering frontline.

Dive deep into our research and insights on design, development, and the impact of various trends to businesses.
Insight
Building Local LLMs Using Dart FFI And llama.cpp: Beyond Wrapper Packages
Sep 11, 2026

Building Local LLMs Using Dart FFI And llama.cpp: Beyond Wrapper Packages

Build local LLMs in Flutter with Dart FFI and llama.cpp, and see how native bridges, GGUF models, memory management, and token streaming enable private, on-device AI.

Insight
My Flutter App Froze With Three Photos on Screen. Here's What I Was Doing Wrong
Sep 11, 2026

My Flutter App Froze With Three Photos on Screen. Here's What I Was Doing Wrong

This blog explains how rethinking Flutterโ€™s image-processing architecture fixed severe performance issues and improved rendering efficiency.

Insight
Building a Production-Ready Canva-like Editor with Konva.js, React 19 and Next.js 15
Sep 10, 2026

Building a Production-Ready Canva-like Editor with Konva.js, React 19 and Next.js 15

This blog explains how to build a production-ready canvas editor with Konva.js, React, and Next.js, covering architecture, performance, and key engineering decisions.

Insight
Why AI Agents Fail in Production: Building Systems That Recover | Pushkar
Sep 10, 2026

Why AI Agents Fail in Production: Building Systems That Recover | Pushkar

Pushkarโ€™s thegeekconf mini talk explores why AI agents that perform well in demos often struggle in production, and how loud failures, clean context, step monitoring, guardrails, and better agent loops can make them more reliable and predictable.

Insight
What a PHP-to-NestJS Banking Migration Taught Us About Architecture, Security, and Trust
Sep 8, 2026

What a PHP-to-NestJS Banking Migration Taught Us About Architecture, Security, and Trust

This blog explores the architecture, security, performance, and documentation lessons from migrating a legacy PHP/Laravel banking platform to NestJS.

Insight
Building Is Not Shipping: An AI Agent for App Store Submissions | Gracey Dugar
Sep 8, 2026

Building Is Not Shipping: An AI Agent for App Store Submissions | Gracey Dugar

Gracey Dugar's thegeekconf mini 2026 talk explores why app store submission stalls most AI agent workflows, what an agent needs to finish the job, and a live demo from a single prompt to a published app.

Insight
Building Production-Grade Video Thumbnail Scrubbing in the Browser: HLS, Frame Extraction, Caching, and Performance Trade-offs
Sep 7, 2026

Building Production-Grade Video Thumbnail Scrubbing in the Browser: HLS, Frame Extraction, Caching, and Performance Trade-offs

This blog explains how to build responsive video thumbnail scrubbing in the browser for local files and HLS streams, covering frame extraction, caching, and performance trade-offs.

The Right Conversation Can

Save You Six Months.

Book a call