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โ€‹

Context entity: window_group

Schema for a window group entity, representing the SwiftUI window group that the event occurs in.

Schema URI:iglu:com.apple.swiftui/window_group/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โŒ
๐Ÿ‘€ Example
{
"id": "group1",
"window_id": "BC374B59-B8E7-4F09-B100-FD5F9AAC0E27",
"title_key": "window1",
"window_style": "automatic"
}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
window_id["string","null"]UUID for the current window within the group.โŒ
id"string"A string that uniquely identifies the window group. Identifiers must be unique among the window groups in your app.โœ…
title_key["string","null"]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_styleOne of: automatic, hiddenTitleBar, plain, titleBar, volumetric, A specification for the appearance and interaction of a window.โŒ

Immersive space context entityโ€‹

Context entity: immersive_space

Schema for an immersive space entity, representing the VisionOS immersive space that the event occurs in.

Schema URI:iglu:com.apple.swiftui/immersive_space/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โœ…
๐Ÿ‘€ Example
{
"id": "space1",
"view_id": "C0A92B47-9654-4889-BC95-97E1C3721A53",
"immersion_style": "mixed",
"upper_limb_visibility": "visible"
}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
view_id["string","null"]UUID for the view of the immersive space.โŒ
id"string"The identifier of the immersive space to present.โœ…
immersion_styleOne of: automatic, full, mixed, progressive, The style of an immersive space.โŒ
upper_limb_visibilityOne of: automatic, visible, hidden, Preferred visibility of the user's upper limbs, while an immersive space scene is presented.โŒ

Open window eventโ€‹

Event: open_window

Schema for an event for opening a SwiftUI window or window group.

Schema URI:iglu:com.apple.swiftui/open_window/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โŒ
๐Ÿ‘€ Example
{}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
โ“ How to query the event in the warehouse?
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โ€‹

Event: dismiss_window

Schema for an event for dismissing a SwiftUI window or window group.

Schema URI:iglu:com.apple.swiftui/dismiss_window/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โŒ
๐Ÿ‘€ Example
{}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
โ“ How to query the event in the warehouse?
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โ€‹

Event: open_immersive_space

Schema for an event for opening a visionOS immersive space.

Schema URI:iglu:com.apple.swiftui/open_immersive_space/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โŒ
๐Ÿ‘€ Example
{}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
โ“ How to query the event in the warehouse?
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โ€‹

Event: dismiss_immersive_space

Schema for an event for dismissing a visionOS immersive space.

Schema URI:iglu:com.apple.swiftui/dismiss_immersive_space/jsonschema/1-0-0

WebMobileTracked automatically
โŒโœ…โŒ
๐Ÿ‘€ Example
{}
๐Ÿ“ƒ Schema properties definition
PropertyTypeDescriptionRequired?
โ“ How to query the event in the warehouse?
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?โ€‹