v1.29.0-beta.1 - User persistent storage adapter for sticky experiments
Pre-release
Pre-release
·
136 commits
to main
since this release
Added an option to provide a custom storage adapter for user-persisted values IUserPersistentStorage. This allows the SDK the persist values for users in active experiments, in otherwords, run experiments with sticky bucketing.
Ruby gems pre-release version: https://rubygems.org/gems/statsig/versions/1.29.0.pre.beta.1
Warning
This is an experimental feature that may be subject to change.
Example usage
class DummyPersistentStorageAdapter < Statsig::Interfaces::IUserPersistentStorage
attr_accessor :store
def initialize
@store = {}
end
def load(key)
return nil unless @store&.key?(key)
@store[key]
end
def save(key, data)
@store[key] = data
end
end
...
Statsig.initialize(
'secret-key',
StatsigOptions.new(
user_persistent_storage: DummyPersistentStorageAdapter.new
)
)
user = StatsigUser.new({ 'userID' => 'test-123' })
exp = Statsig.get_experiment( # User gets saved to persisted storage
user,
'active_experiment',
Statsig::GetExperimentOptions.new(
user_persisted_values: Statsig.get_user_persisted_values(user, 'userID')
)
)
puts exp.group_name # 'Control'
exp = Statsig.get_experiment( # User evaluates using values from persisted storage
StatsigUser.new({'userID' => 'unknown'}),
'active_experiment',
Statsig::GetExperimentOptions.new(
user_persisted_values: Statsig.get_user_persisted_values(user, 'userID')
)
)
puts exp.group_name # 'Control'