If this error persists, please let us know at our support page.
Our engineering team has been notified.
Experiment with onboarding, feature discovery, and re-engagement strategies to improve engagement and retention.
Reduce the risk of launching new features with phased rollouts. Live variables and simple traffic allocation enable you to test new features and quickly remove or improve the ones that don’t work.
Change your app’s behavior in real time without waiting for App Store or Google Play review.
Advanced targeting enables personalized experiences throughout your app. Our mobile SDKs also work seamlessly with all other Optimizely SDKs, enabling you to experiment and personalize across channels and devices, or at any level of your tech stack.
#import <OptimizelySDKiOS/OptimizelySDKiOS.h>
OPTLYManager *manager = [OPTLYManager init:^(OPTLYManagerBuilder * _Nullable builder) {
builder.projectId = @"projectId";
}];
// Asynchronously initialize the Optimizely client
[manager initializeWithCallback:^(NSError * _Nullable error, OPTLYClient * _Nullable client) {
// Activate an experiment
OPTLYVariation *variation = [client activate:@"my_experiment" userId:@"user_123"];
if ([variation.variationKey isEqualToString:@"variation_a"]) {
// Execute code for variation A
}
else if ([variation.variationKey isEqualToString:@"variation_b"]) {
// Execute code for variation B
}
else {
// Execute default code
}
// Track an event
[client track:@"purchase_completed" userId:@"user_123"];
}];
import OptimizelySDKiOS
let optimizelyManager = OPTLYManager.init {(builder) in
builder!.projectId = "projectId"
}
// Asynchronously initialize the Optimizely Client
manager?.initialize(callback: { [weak self] (error, client) in
// Activate an experiment
let variation = client?.activate("my_experiment", userId: "user_123")
if (variation?.variationKey == "variation_a") {
// Execute code for variation A
}
else if (variation?.variationKey == "variation_b") {
// Execute code for variation B
}
else {
// Execute default code
}
// Track an Event
client?.track("purchase_completed", userId: "user_123")
})
import com.optimizely.ab.android.sdk.OptimizelyClient;
OptimizelyClient optimizelyClient = optimizelyManager.getOptimizely();
// Activate an experiment
Variation variation = optimizelyClient.activate("my_experiment", "user_123");
if (variation != null) {
if (variation.is("variation_a")) {
// Execute code for variation A
} else if (variation.is("variation_b")) {
// Execute code for variation B
}
} else {
// Execute default code
}
// Track an event
optimizelyClient.track("purchase_completed", "user_123");
Test pricing, search algorithms, and more. Optimizely’s developer products enable you to experiment beyond the client and deep into your backend.
Open source SDKs
Our Swift, Objective-C, and Android SDKs are transparent, so you know exactly how they work.
Event tracking
Monitor all the conversion metrics and KPIs you care about, in your app or any other service.
Phased rollouts
Reduce the risk of launching new features by rolling them out first to a small set of users, either random or targeted.
Custom configuration
Easily swap out your own components for logging, error handling, event dispatching, integrations, and more.
Audiences
Define custom attributes for fine-grained targeting and segmentation.
Multichannel experimentation
Set your own user IDs to create consistent personalized experiences across all your customer channels.
Full stack experimentation
Run experiments that span both frontend and backend code, in conjunction with any of Optimizely’s SDKs.
Optimizely Stats Engine
See the impact of your experiments in real-time, with the world’s leading Experimentation Platform.
Instant updates
Make updates to your experiments and variables in real-time without waiting for your next App Store release.
Raw event export
Easily download the complete event data from Optimizely.
Traffic splitting
Easily create randomized traffic switches anywhere in your app without affecting performance.
Enterprise-ready security
Roles and permissions, 2-factor authentication, and single sign on.
At Trunk Club, mobile is at the forefront of their business. It’s where new customers first tend to interact with the brand and existing customers browse new collections. Because mobile users were often exploring rather than buying, the Trunk Club team experimented with different app mechanics to help separate the window shoppers from serious buyers.
Learn how Trunk Club increased lead quality and stylist efficiency by optimizing mobile app onboarding.
Read the Case StudyUse experience optimization to drive higher retention, better ratings, and more revenue.
Develop engaging experiences that retain users and extend lifetime value.
Secret Escapes experimented on mobile app onboarding to double their mobile signup rate while optimizing customer acquisition.
Try Optimizely free for 30 days
You can get the very best of Optimizely without spending a dime.
Try it out for 30 days, on us.
Something went wrong
If this error persists, please let us know at our support page.
Our engineering team has been notified.
Contact Sales
Please tell us about yourself and your company (all fields required):
Thank you
Create a developer account
Get a free account with full access to Optimizely's APIs and SDKs.
Thank you