Skip to main content
ClarioDeskUI is a drop-in support UI built in SwiftUI. One static call presents it as a self-owned modal on the top-most view controller, so it works identically from SwiftUI and UIKit hosts with zero setup — your navigation stack is never touched. On iPhone it’s full-screen; on iPad (regular width) it’s a centered form-sheet card.

Open a screen

From there, the SDK handles inbox → thread → composer → attachment viewer internally. Control returns to your app when the user dismisses the modal. All entry points:
Each takes optional theme:, strings:, and from: (an explicit presenting UIViewController; omitted, the SDK finds the top-most one itself).

The four screens

Plus an attachment viewer: zoomable images (with save), and in-app HLS video via AVPlayer — a deliberate upward divergence from the Flutter/RN SDKs, where in-app video playback would ship an ExoPlayer-weight dependency to every host. AVPlayer is free and native on iOS.

Theming

The theme is 13 optional tokens. Every unset token derives from sensible light/dark defaults keyed off the system color scheme, so a zero-config install already matches the host. Token names are 1:1 with the Flutter theme.
The UI carries a WCAG 4.5:1 contrast guard: if a theme color would make text unreadable on its background (a pastel accent, say), the SDK falls back to black/white for the on-color instead of shipping unreadable text.

Strings

~50 user-facing strings are overridable for copy tweaks and localization — English defaults, and no agent jargon (never “ticket” or raw statuses). Field names are 1:1 with the Flutter ClarioDeskStrings.

Shake to report a bug

Opt-in: a deliberate shake captures a screenshot and opens the bug-report form. Foreground-only, debounced (5 s cooldown), suppressed while the support modal is already up, and needs no Info.plist key.
Shake detection uses the CoreMotion accelerometer, so it does not fire on the iOS Simulator (⌃⌘Z sends a UIKit motion event, not an accelerometer sample). Verify on a physical device.

Headless instead?

Everything the prebuilt screens do rides the same public methods — see the API reference to build the UI in your own design system.