Oskar defines universal apps as apps that work across multiple devices and platforms, from phones and computers to TVs and XR headsets. He says a shared codebase can make development more efficient, reach more users, and give people a familiar experience as they move between devices.
React Native ❤️ Apple Vision Pro: Your App in the New Dimension
Speaker
Oskar Kwaśniewski, a React Native developer at Callstack working on React Native visionOS, explains how to extend React Native apps to Apple Vision Pro and what it took to bring a large existing app to the platform.
Oskar describes community-built out-of-tree platforms that extend React Native beyond mobile, and notes that the community CLI is needed for platforms such as visionOS. React Native visionOS adds APIs for hover effects, window ornaments, managing multiple windows, and blending app content with the real surroundings. It also uses a SwiftUI app entry point and adds a `run-visionos` command.
Examples from Zillow Immersive and Lowe's Style Studio show how apps can present 3D homes or kitchens on Vision Pro. Oskar applies progressive enhancement to React Native: a standard platform can show an item's image, while visionOS can show its 3D model. The basic experience remains available across platforms, with richer features on supported devices.
Oskar tried the migration on Expensify, which has nearly 300,000 lines in its `src` folder and over 120,000 commits. The work took one and a half days to reach a working state, with much of the effort spent on build issues and dependencies; 43 dependencies needed checking, and invoice scanning had to be disabled. He also moved the bottom navigation into a visionOS ornament and recommends contributing library fixes upstream to avoid maintaining patches or forks.
Oskar says the React Native visionOS project had passed 850 stars and credits community contributions, including support for other platforms and improvements to React Native APIs. The project is currently a fork, but the goal is to integrate its work into React Native core and smaller packages. Planned areas include reusable window and XR APIs, Babylon React Native support, and WebGPU on visionOS.
Takeaways
- Treat visionOS as a progressive enhancement: keep a useful baseline experience and add spatial features where supported.
- Check native dependencies early; unsupported libraries were the main migration blocker in the Expensify experiment.
- A large React Native app reached a working visionOS state in one and a half days, though dependencies and unfinished code still needed work.
- Upstream platform support fixes when possible to reduce the burden of carrying patches or maintaining a fork.
- Design for visionOS conventions, such as using ornaments for navigation, and consult Apple's Human Interface Guidelines.
Mentioned in this talk
Search inside this talk
What was claimed 16
- role atOskar Kwaśniewski is senior software engineer at
Callstack“I'm a senior software engineer at Callstack”
0:18inTips & Tricks From the Ultimate Guide to RN Optimization 2025YouTube Verified2 sources· Talk
- role atOskar Kwaśniewski is core contributor at React Native
“I'm a React Native core contributor.”
0:18inMake Your React (Native) App Feel NativeYouTube Verified2 sources· Talk
- builtOskar Kwaśniewski built visionOS
“I'm currently working in the R&D team on React Native visionOS.”
YouTube Unverified1 source· Talk
- featurevisionOS: Supports ornaments, window management, hover effects, and immersive content
“Here's a list of the platform-specific APIs we introduced”
YouTube Unverified1 source· Talk
- uses
“React Native visionOS uses the SwiftUI life cycle.”
YouTube Verified3 sources· Talk
- featureZillow Immersive: Lets users preview homes in 3D and view AI-generated floor plans
“They released an app that allows you to preview homes in 3D.”
YouTube Unverified1 source· Talk
- featureLowe's Style Studio: Lets users preview and customize a kitchen in immersive mode
“allows you to preview your future kitchen in immersive mode”
YouTube Unverified1 source· Talk
- metricExpensify: Over 120,000 commits
“over 120,000 commits”
YouTube Unverified1 source· Talk
- metricExpensify: Almost 300,000 lines in the src folder
“It has almost 300,000 lines in the src folder”
YouTube Unverified1 source· Talk
- featureExpensify: Supports iOS, Android, and web using React Native, and macOS through Electron
“it supports iOS, Android, and web using React Native, as well as macOS through Electron”
YouTube Unverified1 source· Talk
- uses
“The Expensify app relies on Firebase”
YouTube Unverified1 source· Talk
- metricOskar Kwaśniewski: got the app running on visionOS in one and a half daysgot the app running on visionOS in one and a half days
“overall, it took one and a half days to get the app to a working state”
YouTube Unverified1 source· Talk
- metricvisionOS: Over 850 stars
“we've managed to get over 850 stars”
YouTube Unverified1 source· Talk
- featurevisionOS: Is currently a fork of the upstream repository, with a goal of integrating its work into React Native core
“Currently, React Native visionOS is a fork of the upstream repository”
YouTube Unverified1 source· Talk
- featureBabylon React Native: Has windowed rendering implemented, with XR mode in development
“We've implemented the windowed rendering mode and are currently working on the XR mode.”
YouTube Unverified1 source· Talk
- usesWebGPU uses React Native
“It allows you to access the WebGPU API in your React Native apps”
YouTube Unverified1 source· Talk






