Skip to main content

Stringboot’s A/B testing engine works seamlessly on iOS.

How It Works

1

Assignment

The SDK assigns a unique Device ID and determines the user’s variant.
2

Delivery

SBText, SBLabel, and StringProvider.get() automatically return the variant string.
3

Tracking

You log the assignment to your analytics provider.

Analytics Integration

To track experiment performance, implement the StringbootAnalyticsHandler protocol.
1

Implement Analytics Handler

Create a class conforming to StringbootAnalyticsHandler. Choose your analytics provider below:
class MyAnalyticsHandler: StringbootAnalyticsHandler {
    func onExperimentAssigned(_ assignment: ExperimentAssignment) {
        Analytics.logEvent("experiment_assigned", parameters: [
            "experiment_key": assignment.experimentKey,
            "variant_name": assignment.variantName,
            "string_key": assignment.stringKey
        ])
    }

    func onExperimentViewed(_ experimentKey: String, variantName: String) {
        Analytics.logEvent("experiment_viewed", parameters: [
            "experiment_key": experimentKey,
            "variant_name": variantName
        ])
    }
}
2

Register Handler

Pass the handler during initialization:
let analyticsHandler = FirebaseAnalyticsHandler()

StringProvider.shared.initialize(
    cacheSize: 1000,
    apiToken: "YOUR_API_TOKEN",
    analyticsHandler: analyticsHandler
)

Debugging

You can inspect active experiments:
Task {
    let experiments = await StringProvider.shared.getExperiments()
    for (key, exp) in experiments {
        print("Key: \(key), Variant: \(exp.variantName)")
    }
}