Skip to main content

visionOS and SwiftUI

Use the window group and immersive space context entities and events to understand user behavior within visionOS apps on Apple's Vision Pro headset.

Track the opening and dismissing of SwiftUI window groups using OpenWindowEvent and DismissWindowEvent. These events can be used in any SwiftUI app, not just visionOS. The event data is sent as a window group context entity attached to these events; the events themselves have no properties.

Use the OpenImmersiveSpaceEvent and DismissImmersiveSpaceEvent to automatically add an immersive space context entity to all events occurring within an immersive space. The entity will identify the immersive space in which the events occurred. This feature is enabled by default for the iOS tracker. Again, the events themselves have no properties.

Snowplow currently only supports visionOS apps via SwiftUI, not Unity.

Window group context entity

window_group

Entity
Schema for a window group entity, representing the SwiftUI window group that the event occurs in.
Schema URIiglu:com.apple.swiftui/window_group/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"id": "group1",
"window_id": "BC374B59-B8E7-4F09-B100-FD5F9AAC0E27",
"title_key": "window1",
"window_style": "automatic"
}
Schema
PropertyDescription
window_id
string
Optional. UUID for the current window within the group.
id
string
Required. A string that uniquely identifies the window group. Identifiers must be unique among the window groups in your app.
title_key
string
Optional. A localized string key to use for the window's title in system menus and in the window's title bar. Provide a title that describes the purpose of the window.
window_style
string
Optional. A specification for the appearance and interaction of a window.
Must be one of: automatic, hiddenTitleBar, plain, titleBar, volumetric,

Immersive space context entity

immersive_space

Entity
Schema for an immersive space entity, representing the VisionOS immersive space that the event occurs in.
Schema URIiglu:com.apple.swiftui/immersive_space/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"id": "space1",
"view_id": "C0A92B47-9654-4889-BC95-97E1C3721A53",
"immersion_style": "mixed",
"upper_limb_visibility": "visible"
}
Schema
PropertyDescription
view_id
string
Optional. UUID for the view of the immersive space.
id
string
Required. The identifier of the immersive space to present.
immersion_style
string
Optional. The style of an immersive space.
Must be one of: automatic, full, mixed, progressive,
upper_limb_visibility
string
Optional. Preferred visibility of the user's upper limbs, while an immersive space scene is presented.
Must be one of: automatic, visible, hidden,

Open window event

open_window

Event
Schema for an event for opening a SwiftUI window or window group.
Schema URIiglu:com.apple.swiftui/open_window/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
Warehouse query
select
unstruct_event_com_apple_swiftui_open_window_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'open_window'
and events.event_vendor = 'com.apple.swiftui'

Dismiss window event

dismiss_window

Event
Schema for an event for dismissing a SwiftUI window or window group.
Schema URIiglu:com.apple.swiftui/dismiss_window/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
Warehouse query
select
unstruct_event_com_apple_swiftui_dismiss_window_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'dismiss_window'
and events.event_vendor = 'com.apple.swiftui'

Open immersive space event

open_immersive_space

Event
Schema for an event for opening a visionOS immersive space.
Schema URIiglu:com.apple.swiftui/open_immersive_space/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
Warehouse query
select
unstruct_event_com_apple_swiftui_open_immersive_space_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'open_immersive_space'
and events.event_vendor = 'com.apple.swiftui'

Dismiss immersive space event

dismiss_immersive_space

Event
Schema for an event for dismissing a visionOS immersive space.
Schema URIiglu:com.apple.swiftui/dismiss_immersive_space/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
Warehouse query
select
unstruct_event_com_apple_swiftui_dismiss_immersive_space_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'dismiss_immersive_space'
and events.event_vendor = 'com.apple.swiftui'

How to track?