Overview
Easily display and interact with web content in 3D or 2D using the web browser plugin
trusted by developers. See
the
developer site for full documentation.
🌐 Load a webpage
from a URL or
HTML string
📺 Watch videos and YouTube
<>
Create UIs with HTML
⚡️ Get started fast with the 3D
WebViewPrefab and
2D
CanvasWebViewPrefab, which
render to a Texture2D and
handle user
interactions (click, scroll)
⌨️ Type with the
native visionOS keyboard
• C# source code for a
unified API that works seamlessly
across
Windows,
macOS,
Android,
iOS,
visionOS,
WebGL, and
UWP (each platform
sold separately)
• Powered by
WKWebView
• Comprehensive APIs for
controlling the
browser and listening to
browser events
•
Execute JavaScript
•
Send messages from
JavaScript to C# and vice versa
• View and
create PDFs
• Integrate with
OAuth
• Includes additional APIs for
platform-specific
features
• Supports
transparent pages
• Supports both the
Metal and
RealityKit app modes (see the section below for limitations with RealityKit)
• Open a webview in a
native visionOS window in the RealityKit app mode with
VisionOSWebView.CreateInWindow()
Examples
• visionOS examples for
Metal and
RealityKit
System requirements
• Unity 2022.3.19 or newer
• com.unity.xr.visionos package v1.1 or newer
• Adds < 3 MB to the app's size
Limitations with RealityKit
This package currently has the following additional limitations when targeting the
RealityKit app mode due to limitations of Unity PolySpatial. I plan to address some of these limitations soon in future releases of this package. In the meantime, the recommended approach for RealityKit is to use
VisionOSWebView.CreateInWindow() to create a webview in a native visionOS window, which doesn't encounter these limitations.
•
WebViewPrefab renders, but it's currently unable to automatically detect input (clicking and scrolling) through Unity's event system. I will be working to fix this limitation soon. In the meantime, the application can still trigger input programmatically by calling
IWebView.Click() and
Scroll(), or by overriding the prefab's
IPointerInputDetector.
• WebViewPrefab doesn't support video playback with RealityKit because Unity PolySpatial doesn't support custom shaders, which are needed for 3D WebView's
fallback video implementation.
•
CanvasWebViewPrefab doesn't currently render because Unity PolySpatial doesn't support the RawImage component.
Important notes and limitations
• This package only supports visionOS. To support other platforms, you can
install additional 3D WebView
packages, and you can save money on multiple packages
by
buying a bundle. All of the 3D WebView packages work
seamlessly together, so all you need to do is install them into the same project, and then 3D WebView automatically
detects and uses the correct plugin at runtime and build time.
• 3D WebView's native visionOS plugins are provided as precompiled libraries, and the native source code for them is not
provided.
• 3D WebView's native visionOS plugins can't run in the editor, so a
mock webview implementation is used by default while
running
in the editor. However, you can actually load and render real web content in the editor by also installing
3D WebView for Windows and macOS into the project. You can save money by buying both packages together
in a
bundle.
• When not running in a native window created with
VisionOSWebView.CreateInWindow(), this
package has the following limitations:
◦ Some 3rd-party JS video widgets don't function as expected. Also, on YouTube, the video resolution is 360p (640 x 360 pixels) and cannot be changed. For more details, please see
this article.
◦ The web rendering frame rate is relatively slow (<15 FPS) due to visionOS limitations. The
exception to this is video, which is rendered at a high frame rate.
◦ WebGL content isn't rendered.
◦ Scrollbars aren't rendered.
◦ Some HTML5 widget popups (like date picker inputs) aren't rendered. For more details, please
see
this page.
•
WebViewPrefab and
CanvasWebViewPrefab are unable to detect hovering from the user's eye sight because visionOS doesn't allow application's to detect where the user is looking. However, a webview created with
VisionOSWebView.CreateInWindow() automatically detects and reacts to hovering from the user's eye sight.
• Also supports running in the visionOS simulator.
• The visionOS plugin embeds PDF.js from Mozilla, so you must display a copy of its included
Apache 2.0 license
in your
visionOS app's about page or credits.