
Skill
session-lifecycle
monitor device session lifecycle states
Description
Device session states, pause/resume, availability monitoring
SKILL.md
Session Lifecycle (iOS)
Guide for managing device session states in DAT SDK integrations.
Overview
The DAT SDK runs work inside sessions. Meta glasses expose two experience types:
- Device sessions — sustained access to device sensors and outputs
- Transactions — short, system-owned interactions (notifications, "Hey Meta")
Your app observes session state changes — the device decides when to transition.
Session states
| State | Meaning | App action |
|---|---|---|
idle | Session created but not started | Call start() when ready |
starting | Session is connecting to the device | Show connecting state |
started | Session active and ready for capabilities | Add or resume work |
paused | Temporarily suspended by the device | Hold work, may resume |
stopping | Session is cleaning up | Wait for terminal state |
stopped | Session inactive and terminal | Free resources, create a new session to restart |
Observing session state
let session = try Wearables.shared.createSession(deviceSelector: AutoDeviceSelector(wearables: Wearables.shared))
try session.start()
Task {
for await state in session.stateStream() {
switch state {
case .started:
// Confirm UI shows session is live
case .paused:
// Keep connection, wait for started or stopped
case .stopped:
// Release resources, allow user to restart
default:
break
}
}
}
Stream state transitions
A Stream is a capability attached to a started DeviceSession:
stopped → waitingForDevice → starting → streaming → paused → stopped
guard let stream = try session.addStream(config: StreamConfiguration()) else { return }
let token = stream.statePublisher.listen { state in
Task { @MainActor in
// React to state changes
}
}
Common transitions
The device changes session state when:
- User performs a system gesture that opens another experience
- Another app starts a device session
- User removes or folds the glasses (Bluetooth disconnects)
- User removes the app from Meta AI companion app
- Connectivity between companion app and glasses drops
Pause and resume
When a session is paused:
- The device keeps the connection alive
- Streams stop delivering data
- The device may resume by returning to
started
Your app should not attempt to restart while paused — wait for started or stopped.
Device availability
Monitor device availability to know when sessions can start:
Task {
for await devices in Wearables.shared.devicesStream() {
// Update list of available glasses
}
}
Key behaviors:
- Closing hinges disconnects Bluetooth → forces
stopped - Opening hinges restores Bluetooth but does not restart sessions
- Start a new session after the device becomes available again
Implementation checklist
- Handle all relevant session states (
started,paused,stopped) - Monitor device availability before starting work
- Release resources only after
stopped - Don't infer transition causes — rely only on observable state
- Don't restart during
paused— wait for system to resume or stop
Links
More skills from the meta-wearables-dat-ios repository
View all 9 skillscamera-streaming
configure camera streaming and photo capture
May 15CameraHardwareiOSVideodat-conventions
develop iOS applications with DAT SDK
May 15iOSMobileSDKSwiftdebugging
debug wearable device software
May 15DebuggingEngineeringiOSdisplay-access
manage display capabilities on wearable devices
May 15DesignImagesInteractionUI Components +1getting-started
set up Meta wearable SDK integration
May 15ConfigurationiOSSDKSwiftmockdevice-testing
test wearable apps with mock devices
May 15iOSMobileQATesting
More from Meta Open Source
View publisherrelay-best-practices
write idiomatic Relay code
relay
Apr 22EngineeringFrontendGraphQLReact +1relay-performance
optimize Relay application performance
relay
Jun 10FrontendGraphQLPerformanceReact +1add-shape-types-to-torch-model
annotate PyTorch models with tensor shapes
pyrefly
Jul 18Data ModelingDeep LearningPythonPyTorchpermissions-registration
register apps with Meta AI
meta-wearables-dat-ios
May 15CameraiOSPermissionssample-app-guide
build wearable apps with camera streaming
meta-wearables-dat-ios
May 15CameraiOSMobile