fix: migrate anonymous context namespace to general namespace#1312
Conversation
|
@cursor review |
|
@launchdarkly/js-sdk-common size report |
|
@launchdarkly/browser size report |
|
@launchdarkly/js-client-sdk size report |
|
@launchdarkly/js-client-sdk-common size report |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 35de7b0. Configure here.
🤖 I have created a release *beep* *boop* --- <details><summary>browser: 0.1.17</summary> ## [0.1.17](browser-v0.1.16...browser-v0.1.17) (2026-04-23) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk bumped from 4.6.1 to 4.6.2 </details> <details><summary>browser-telemetry: 1.0.33</summary> ## [1.0.33](browser-telemetry-v1.0.32...browser-telemetry-v1.0.33) (2026-04-23) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/js-client-sdk bumped from 4.6.1 to 4.6.2 </details> <details><summary>jest: 1.0.11</summary> ## [1.0.11](jest-v1.0.10...jest-v1.0.11) (2026-04-23) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/react-native-client-sdk bumped from ~10.16.0 to ~10.17.0 </details> <details><summary>js-client-sdk: 4.6.2</summary> ## [4.6.2](js-client-sdk-v4.6.1...js-client-sdk-v4.6.2) (2026-04-23) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.25.0 to 1.26.0 </details> <details><summary>js-client-sdk-common: 1.26.0</summary> ## [1.26.0](js-client-sdk-common-v1.25.0...js-client-sdk-common-v1.26.0) (2026-04-23) ### Features * support waitForNetworkResults in FDv2 data manager ([#1280](#1280)) ([df7fa9e](df7fa9e)) ### Bug Fixes * FDv2 Only -- Adjust the behavior of initialization when only cache initializers are available. ([#1304](#1304)) ([9a2b25a](9a2b25a)) * migrate anonymous context namespace to general namespace ([#1312](#1312)) ([afbed0f](afbed0f)) </details> <details><summary>node-server-sdk-dynamodb: 6.2.24</summary> ## [6.2.24](node-server-sdk-dynamodb-v6.2.23...node-server-sdk-dynamodb-v6.2.24) (2026-04-23) ### Bug Fixes * **node-server-sdk-dynamodb:** remove unnecessary ioredis package ([#1306](#1306)) ([5d6c86e](5d6c86e)) </details> <details><summary>react-native-client-sdk: 10.17.0</summary> ## [10.17.0](react-native-client-sdk-v10.16.0...react-native-client-sdk-v10.17.0) (2026-04-23) ### Features * **react-native:** no storage fallback to in-memory map ([#1281](#1281)) ([cc86eab](cc86eab)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.25.0 to 1.26.0 </details> <details><summary>react-sdk: 0.2.3</summary> ## [0.2.3](react-sdk-v0.2.2...react-sdk-v0.2.3) (2026-04-23) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk bumped from ^4.6.1 to ^4.6.2 </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Primarily a Release Please version bump across multiple packages with dependency updates; only minimal runtime impact beyond consuming the new `@launchdarkly/js-client-sdk-common` behavior changes pulled in by the bumps. > > **Overview** > **Release automation update:** bumps workspace package versions and changelogs for a coordinated release. > > Updates `@launchdarkly/js-client-sdk` to `4.6.2` (and consumers `@launchdarkly/browser`, `@launchdarkly/react-sdk`, and examples) plus `@launchdarkly/js-client-sdk-common` to `1.26.0`. Also bumps `@launchdarkly/react-native-client-sdk` to `10.17.0` (and `@launchdarkly/jest` dependency), `@launchdarkly/browser-telemetry` to `1.0.33`, and `@launchdarkly/node-server-sdk-dynamodb` to `6.2.24`, along with manifest updates and wrapper/version constants. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 9c1a764. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR will add logic to start migrating the old namespaces generated by
namespaceForAnonymousGeneratedContextKeyto the new general namespaces that are generated bynamespaceForGeneratedContextKey.We've deprecated the specific anonymous namespace for context keys for a while now, but never implemented a way to transition users to the new namespaces.
Note
Medium Risk
Changes how anonymous context keys are read/written in persistent storage by introducing an automatic migration path, which could affect identity continuity if storage behaviors differ across platforms. The migration includes a verification step before clearing legacy data, reducing but not eliminating risk of edge-case storage failures.
Overview
Anonymous contexts now look up generated keys in the general
ContextKeysnamespace, with an automatic fallback migration from the legacyAnonymousKeysnamespace.getOrGenerateKeyaccepts an optional legacy storage key: if the new key is missing but a legacy key exists, it copies the value, verifies the write, and only then clears the legacy entry; otherwise it generates a new UUID as before. Tests were added/updated to cover migration, no-op/failed writes, and the “new key already exists” path.Reviewed by Cursor Bugbot for commit 35de7b0. Bugbot is set up for automated code reviews on this repo. Configure here.