What is SeamComponents?
SeamComponents is a themeable SwiftUI component library designed to work hand-in-hand with the Seam iOS SDK. It provides:- An all-in-one view —
SeamAccessViewhandles key retrieval, credential display, unlocking, error handling, and user interactions with two lines of code. - Composable building blocks —
SeamCredentialsView,SeamKeyCardView, andSeamUnlockCardViewlet you build custom experiences that fit your app’s design. - Flexible theming — Override colors, fonts, and card appearance globally or per-subtree using the
SeamThemeenvironment system. - Protocol-based service —
SeamServiceProtocolmakes it easy to inject live, mock, or preview implementations without changing your UI code. - Accessibility first — All components are built with accessibility as a first-class feature.
Prerequisites
- iOS 15.0+
- Add to your
Info.plist:NSBluetoothAlwaysUsageDescription
- Optional: Request the
com.apple.developer.passkit.pass-presentation-suppressionentitlement to prevent Apple Wallet from appearing during BLE/NFC scans.
Getting Started
Add SeamComponents to your project
Add SeamComponents using Swift Package Manager:
- Open your Xcode project.
- Go to File > Add Packages…
- Enter the package URL:
- Choose the latest version and add it to your app target.
Initialize the Seam SDK
Before using any SeamComponents UI, initialize and activate the Seam SDK with your client session token:Call
initialize after sign-in (or app launch), then activate() to begin syncing credentials.See Quickstart for full initialization details.Theming and Appearance
SeamComponents supports full white-labeling via theSeamTheme environment system. Override colors, fonts, and card appearance by injecting a custom theme:
If you do not inject a theme, SeamComponents use
SeamTheme.default, which
matches the native iOS style.SeamTheme API uses a builder pattern with nested .with(...) calls. Override only the parts you need — everything else falls back to the default. Theming can be applied globally at your app root or scoped to any view subtree.
See Customizing Appearance for details and advanced examples.
Custom Integration
If you need more control over layout, navigation, or data flow, compose your own UI using SeamComponents building blocks:SeamCredentialsView— Coordinator view that manages selection, pull-to-refresh, and empty state handling.SeamCredentialGrid/SeamCredentialTable— Pure, stateless subviews for displaying credentials in grid or list format.SeamKeyCardView— Displays an individual credential as a visually rich key card with status and error overlays.SeamUnlockCardView— Manages all unlock functionality for a selected credential, including progress and error feedback.
SeamService or a mock conforming to SeamServiceProtocol for previews and tests.
See Custom Integration for code samples and advanced patterns.
What’s Next
Customizing Appearance
Override colors, fonts, and card styles using the SeamTheme system.
Custom Integration
Compose building blocks and inject mock services for full UI control.

