ZuuppaConfig tells the SDK which backend and auth project to use. It defaults to Zuuppa production, so most apps never construct it — you just pass an eventId and the shared .default is used.
public struct ZuuppaConfig: Sendable {
public var apiBaseURL: URL // Zuuppa API server
public var supabaseURL: URL // Supabase project (buyer auth)
public var supabaseAnonKey: String // Supabase publishable ("anon") key
public init(apiBaseURL: URL, supabaseURL: URL, supabaseAnonKey: String)
public static let `default`: ZuuppaConfig
}| Parameter | Type | Description |
|---|---|---|
apiBaseURL | URL | Base URL of the Zuuppa API server. |
supabaseURL | URL | Base URL of the Supabase project used for the buyer's OTP sign-in. |
supabaseAnonKey | String | Supabase publishable ("anon") key. This is a client-side value and safe to embed. |
config as .default.The default is applied automatically — these two are equivalent:
ZuuppaTicketsScreen(eventId: "evt-uuid")
ZuuppaTicketsScreen(eventId: "evt-uuid", config: .default)let staging = ZuuppaConfig(
apiBaseURL: URL(string: "https://staging.api.zuuppa.com")!,
supabaseURL: URL(string: "https://your-project.supabase.co")!,
supabaseAnonKey: "sb_publishable_..."
)
ZuuppaTicketsScreen(eventId: "evt-uuid", config: staging)There is no theming field. The SDK renders in dark mode and derives its accent color from the event’s accentColor returned by the backend, so the flow automatically matches each event.