Semantics is currently only available in Early Access. Runtime support is in development or released as experimental.Have feedback? Join the Early Access community to share your thoughts and help shape the feature.
Overview
You add semantics to the elements of your graphic in the Rive Editor — roles such as button, checkbox, tab, slider, image, link, list, or dialog, along with their labels, values, states, and actions. At runtime, the reads those semantics from the running state machine and exposes them to VoiceOver as the view’saccessibilityElements, keeping them up to date as the state machine advances.
Semantics must be defined in the editor to have any effect. If an element has no semantics, it is not exposed to VoiceOver — regardless of the mode you set. See Feature Support for which runtimes currently support semantics.
Availability
Semantics are available in the only (not the ), on every Apple platform the runtime supports except macOS (AppKit):| Platform | Supported |
|---|---|
| iOS / iPadOS | ✅ |
| tvOS | ✅ |
| visionOS | ✅ |
| Mac Catalyst | ✅ |
| macOS (AppKit) | ❌ |
Semantics modes
Semantics are controlled by theSemantics enum, which sets the VoiceOver integration mode for a Rive view:
| Mode | Description |
|---|---|
.off | Default. Accessibility semantics are disabled. No accessibility elements are created, regardless of VoiceOver state. |
.on | Accessibility semantics are always active. Elements are created and kept up‑to‑date on every frame. |
.automatic | Accessibility semantics activate and deactivate automatically based on whether VoiceOver is currently running. |
.automatic — it keeps the accessibility tree in sync only while VoiceOver is active, avoiding unnecessary work when it isn’t.
Usage
Set the semantics mode on the view (UIKit) or with the.semantics(_:) modifier (SwiftUI).