Development Approaches for visionOS

The Apple Vision Pro offers multiple avenues for development. Each option comes with its own set of challenges and trade-offs between ease of development, robustness, and device compatibility. Below, we go through various development paths and the pros and cons of each. 


While in avenues you can develop entirely new apps, for some of them you can also port existing VR apps over. It may be easier to start by doing the latter before embarking on the former. 

SteamVR via ALVR

You can stream and develop SteamVR content for Apple Vision Pro using ALVR. ALVR allows for wireless VR streaming from your PC, letting you run SteamVR apps. However, high latency or low bitrate may be an issue. SteamVR can run on almost every VR headset via streaming or linking to PC. 

Swift/Metal via Xcode or Metal-cpp

Swift and Metal offer the most native and direct way to develop for Vision Pro through Xcode. Metal provides high performance but requires in-depth knowledge of graphics programming. Learning Metal's API is far from beginner-friendly, and debugging issues with GPU programming can be extremely time-consuming. Learning Swift is an easier path to build apps fast, but even with the tools available in Xcode, developing for a new platform like Vision Pro will likely involve a steep learning curve, and Swift/Metal apps can only be used on AVP, not any other VR devices.


Although OpenGL is deprecated for Apple devices, it may be possible to port OpenGL apps, such as MinVR/DinoVR to Metal using this library


WebXR + WebGL via Safari or Emscripten

WebXR allows for browser-based VR and AR apps using Safari. This is by far the easiest option for quick prototyping, and works on almost all VR devices. But WebXR struggles with delivering high performance compared to native solutions. Running WebXR experiences in Safari means dealing with lower frame rates and generally less impressive visuals. zMoreover, Safari's WebXR support is still developing, meaning you could run into API limitations or inconsistent behavior across versions.

Since WebGL is based on a subset of OpenGL features, it may also be possible to port existing OpenGL apps, such as MinVR/DinoVR to WebGL using Emscripten, a compiler toolchain for WebAssembly. 


Unity PolySpatial via Xcode or WebXR

Unity supports Vision Pro through Apple's PolySpatial framework in addition to many other VR platforms, including APKs for Quests and WebXR. Because it also supports WebXR, it is also possible to port Unity apps to WebXR and run them on the AVP. 

Unreal Engine 5 via Xcode

Like Unity, Unreal Engine 5 is a powerful cross-device 3D application platform, on the more powerful and more heavyweight end than Unity.