feat: add legacy storage key cleanup functionality #1043
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Requirements
Related issues
sdk-569
Describe the solution you've provided
- Introduced
getLegacyStorageKeysmethod to as an optional internal option that could be configured per SDK.- Updated
LDClientImplto support cleaning old persistent data based on the new optioncleanOldPersistentData.- Implemented
getLegacyStorageKeysin Browser SDK so the feature is fully available there.- Added a test to verify that old persistent data is cleaned while retaining current keys.
Additional context
Additionally I've added some refactors that would address the following:
- changing Flagstore + FlagUpdater classes to interface (starting SDK-1686) which saves us a few bytes
- Added a comment in
LDClientImpl.tsto clarify that "override" changes are not being tracked as they are currently used only for debugging and not persisted. This may change in the future. (left over comment from a previous PR)Note
Adds an option to clear legacy persistent storage keys (implemented for browser) and refactors FlagStore/FlagUpdater into factory-based interfaces with corresponding updates and tests.
Introduces optional cleanup of legacy persistent storage and refactors in-memory flag components.
LDOptions.cleanOldPersistentData;LDClientImplusesinternalOptions.getLegacyStorageKeys()to asynchronously clear old keys (logs errors). Browser SDK implementsgetLegacyStorageKeysvia newplatform/LocalStorage.getAllStorageKeysand filters byld:${clientSideId}:*.DefaultFlagStore/FlagUpdaterclasses withFlagStoreinterface +createDefaultFlagStore()andcreateFlagUpdater()factories; updatesFlagManager,FlagPersistence, and tests accordingly.cleanOldPersistentDataand documents behavior; notes that "override" changes aren’t tracked for inspectors.Written by Cursor Bugbot for commit 6b67e86. This will update automatically on new commits. Configure here.