Skip to content

Releases: statsig-io/android-sdk

4.33.0 - Adds ParameterStores

08 Jul 16:53
a8192ce
Compare
Choose a tag to compare

New Features

  • Parameter Stores

https://docs.statsig.com/client/concepts/parameter-stores

Included In This Release

  • 800ae7c tore-statsig
    • feat: add parameter stores (#239)

Full Changelog: 4.32.1...4.33.0

4.32.1 - Improve gson deserialize initialization result

07 Jun 21:49
82bc470
Compare
Choose a tag to compare

Prevent potential runtime exception with gson deserialization:

  • GSON serialization/deserialization is executed in jvm level, and it does not use default values when construct a data class, which can cause null pointer exception at run time.

Included In This Release

  • 457f8da Xin Li
    • Prevent flaky gson deserialization (#238)

Full Changelog: 4.32.0...4.32.1

4.32.0 - Support look up hashed name

06 Jun 00:06
0bc1afd
Compare
Choose a tag to compare

Feature

  • Support look up hashed name: the logic is now we look-up name without hashing first if not exists hash config name and lookup again.

Fix

  • Proper reset dedupe key when updating user

Included In This Release

  • 0860357 Xin Li
    • Update Store.kt (#236)
  • 4514f81 Kenny Yi
    • properly reset dedupe key when updating user with values

Full Changelog: 4.31.0...4.32.0

4.31.0 - New API refreshCache

21 May 18:15
Compare
Choose a tag to compare

Added new API refreshCache to update the values in memory and in cache for the current user. Effectively equivalent to calling updateUser on the current user.

Included In This Release

  • bcea69b Kenny Yi
    • refreshCache api

Full Changelog: 4.30.0...4.31.0

4.30.0 - GetFeatureGate api and callback bug fixes

09 May 20:09
47a2f6e
Compare
Choose a tag to compare

New API:

  • getFeatureGate

Bug fix:

  • Fix evaluation callback being called twice
  • Fix userObjectValidator is not being called with updateUserAsync
    • This fix also enables you to use userObjectValidator as an interceptor

Included In This Release

  • 354fd14 Xin Li
    • update user (#230)
  • 9a3b4e7 sroyal-statsig
    • Add GetFeatureGate (#231)

Full Changelog: 4.29.0...4.30.0

4.29.0 - 🚩 [Bug Fix] Initialization Network Timeout Behavior, Move retry failed log to background, and More SDK Configuration

03 May 23:57
f28a20b
Compare
Choose a tag to compare

Bug Fix:

  • Initialization Network Timeout Does not expire on time
    • We applied timeout in network framework (HttpUrlConnection) and also wrapped the timeout with a coroutine withTimeout function to ensure intialization network request will be interrupted when timeout expires. But we noticed in some devices that coroutine withTimeout cannot interrupt current thread and expire on time. This is likely because not all HttpUrlConnection have the same underlying behavior, some have thread blocking behavior.
    • Fix is to wrap network request into a cancellable job by doing scope.launch{}.join()

Change Initialization Behavior

  • At initialization, we also retry send log event to our server, which is also an expensive operation, we fixed this behavior by moving it to background thread.

SDK Configuration (SDK Options)

  • Add disableLogEventRetries which is default to be false, set this to be true to skip retry failed log event logic

Internal Logging

  • We also added more diagnostics logging to understand client side behavior

Included In This Release

  • 7d14740 Xin Li
    • Add more logging (#220)
  • 920d37c Xin Li
    • network timeout coroutine timeout fix (#224)
  • bf3b951 Xin Li
    • Revert "fix: remove eb since failure logging goes to diagnostics (#222)" (#226)
  • 5ad9178 tore-statsig
    • feat: add option to disable log event retries (#221)
  • 4a90f87 tore-statsig
    • fix: remove eb since failure logging goes to diagnostics (#222)
  • 75666a6 tore-statsig
    • fix: stub network connectivity in tests (#225)

Full Changelog: 4.28.0...4.29.0

4.28.0 - Update User With Values

30 Apr 21:29
8b1b7b2
Compare
Choose a tag to compare

New feature:

  • Update user with bootstrap values, the same bootstrap validation logic apply to update user

Included In This Release

  • b5e6108 Xin Li
    • logging for updateuser with values (#218)
  • eb3270a Xin Li
    • update user with values (#217)

Full Changelog: 4.27.0...4.28.0

4.27.0 - 🚩 [Bug Fix] Initialization Timeout Behavior Fix and Debug View Refresh callback

26 Apr 00:31
ce565ce
Compare
Choose a tag to compare

🚩🚩🚩 We recommend updating to this version as soon as possible

This version patches a pair of critical bugs in the android sdk.

The first bug was related specifically to initialization timeouts, which were improperly applied. The initialization method, especially under poor network conditions could continue past the configure initTimeoutMs. This bug has affected sdks from v4.21.0.

The second was related to exception handling in the sdk. In cases where an exception was thrown within the core API methods for the first time in a session, we attempt to notify the statsig backend. This was a blocking network call, which shouldn’t have been. This bug has affected sdks from v4.6.0.

Please don’t hesitate to reach out on this thread if you have any additional questions

Bug fix

  • Fix bugs that caused SDK Initilization takes much longer than initializationTimeout to happend when exception happened
  • Fixes are changing posting logging data to statsig server from blocking to be non-blocking

New feature:

  • Callback for openDebugView to inform that a refresh is needed

Included In This Release

  • 5736d6f Xin Li
    • Fix error boundary (#214)
  • 247c7cf tore-statsig
    • test: initialization timeout hit when eb stalls (#215)
  • cd19142 Xin Li
    • Fix runblocking behavior for error handling (#213)
  • 53e4eb2 Xin Li
    • Debug view (#212)

Full Changelog: 4.26.0...4.27.0

4.26.0 - add custom cache key creator to statsigoptions

19 Apr 22:58
00fe9ab
Compare
Choose a tag to compare

Adds a function to StatsigOptions called customCacheKey

var customCacheKey: ((String, StatsigUser) -> String) = { sdkKey, user -> "${user.getCacheKey()}:$sdkKey" },

By default, this creates the existing cache key (the userId and set of customIDs). Overriding this method will override the caching behavior of the client. If you have custom fields that you want to distinguish users from eachother, for example, you can include that as a part of the cache key

Included In This Release

  • 40e2017 tore-statsig
    • include sdk key as param to custom cache key (#210)
  • 21e6889 tore-statsig
    • feat: add custom cache key function to statsig options (#208)
  • 9458ab3 tore-statsig
    • fix: locale and language test (#209)

Full Changelog: 4.25.1...4.26.0

4.25.1 - Bugfix updateUser network request race condition

05 Apr 22:59
3b9e98f
Compare
Choose a tag to compare
  • Bug: when multiple updateUser/initialize requests fired for the same user (identified by user ids + custom ids) and responses come out of order, delayed response will overwrite correct response.

  • Fix: when a new initialize request network fired for a user, we will cancel (by calling connection.disconnect) previous requests for the same user. And the definition of same user is they have same user id and custom ids.

Included In This Release

  • b186f19 Xin Li
    • cancel previous request (#203)

Full Changelog: 4.25.0...4.25.1