iOS Quickstart
Use CircleBox SDK and CircleBoxCloud in Swift apps with SPM.
Install (Git Tag)
Add the repository as a Swift Package dependency:
text
.package(url: "https://github.com/jeremiahseun/circle-box.git", from: "0.3.1") Xcode setup (app project)
- Open your iOS app in Xcode.
File->Add Package Dependencies....- URL:
https://github.com/jeremiahseun/circle-box.git. - Dependency rule:
Up to Next Majorwith version0.3.1. - Add products:
CircleBoxSDK(required)CircleBoxCloud(optional cloud uploader)CircleBoxIntegrations(optional Sentry/PostHog mappers)
Important:
- Add the package URL once (
circle-box) and select products from it. - Do not add separate package references that point to
ios/CircleBoxSDKorios/CircleBoxCloud, or Xcode will show duplicate target-name conflicts.
Select products:
CircleBoxSDKCircleBoxCloud(optional)CircleBoxIntegrations(optional adapter helpers)
Core Setup
Initialize once at startup.
SwiftUI app
text
import SwiftUI import CircleBoxSDK @main struct MyApp: App { init() { CircleBox.start(config: .default) } var body: some Scene { WindowGroup { ContentView() } } } UIKit app
text
import UIKit import CircleBoxSDK @main class AppDelegate: UIResponder, UIApplicationDelegate { func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil ) -> Bool { CircleBox.start(config: .default) return true } } Call CircleBox.start once per process launch.
Then use breadcrumbs and export APIs anywhere in app code:
text
import CircleBoxSDK CircleBox.breadcrumb("checkout_started", attrs: ["flow": "standard"]) Pending Crash Export
text
if CircleBox.hasPendingCrashReport() { let paths = try CircleBox.exportLogs(formats: [.json, .csv, .jsonGzip, .summary]) print(paths) } Optional Cloud Upload
Start cloud companion in the same startup path right after CircleBox.start(...):
text
import CircleBoxCloud CircleBoxCloud.start( config: CircleBoxCloudConfig( endpoint: URL(string: "https://circlebox.seunjeremiah.workers.dev")!, ingestKey: "paste_ingest_key_from_control_plane", flushIntervalSec: 15, immediateFlushOnHighSignal: true ) ) Optional Adapter Use
Use CircleBoxIntegrations to map exports into Sentry breadcrumbs or PostHog properties without pulling those SDKs into core CircleBox.