Skip to content

v1.29.0-beta.1 - User persistent storage adapter for sticky experiments

Pre-release
Pre-release

Choose a tag to compare

@kenny-statsig kenny-statsig released this 11 Nov 00:45
· 136 commits to main since this release
49f94fd

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'