Releases: statsig-io/android-sdk
4.33.0 - Adds ParameterStores
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
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
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
Full Changelog: 4.31.0...4.32.0
4.31.0 - New API refreshCache
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
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
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
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
New feature:
- Update user with bootstrap values, the same bootstrap validation logic apply to update user
Included In This Release
Full Changelog: 4.27.0...4.28.0
4.27.0 - 🚩 [Bug Fix] Initialization Timeout Behavior Fix and Debug View Refresh callback
🚩🚩🚩 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
Full Changelog: 4.26.0...4.27.0
4.26.0 - add custom cache key creator to statsigoptions
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
Full Changelog: 4.25.1...4.26.0
4.25.1 - Bugfix updateUser network request race condition
-
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