Skip to content

fix(metadata): ingest new data and regenerate products#373

Open
github-actions[bot] wants to merge 1 commit intomainfrom
metadata-update
Open

fix(metadata): ingest new data and regenerate products#373
github-actions[bot] wants to merge 1 commit intomainfrom
metadata-update

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Mar 19, 2026

Metadata has changed. Ensure that the changes obey patch semantics (data added or modified in a non-breaking
way), as upstream services may consume these changes automatically.

DELETE FROM sdk_features WHERE id='combined-browser' AND feature='allFlags';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='appMetadata';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='bigSegments';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='bootstrapping';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='contexts';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='experimentation';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='flagChanges';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='hooks';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='inlineContextCustomEvents';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='perContextSummaryEvents';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='pluginSupport';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='privateAttrs';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='relayProxyProxy';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='secureMode';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='track';
DELETE FROM sdk_features WHERE id='combined-browser' AND feature='variationDetail';
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','allFlags','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','appMetadata','2.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','contexts','2.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','experimentation','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','inlineContextCustomEvents','2.1.3',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','offlineMode','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','privateAttrs','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','relayProxyDaemon','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','relayProxyProxy','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','storingData','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','storingDataRedis','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','track','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('lua-server-sdk','variationDetail','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','allFlags','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','appMetadata','2.0.4',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','bigSegments','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','bootstrapping','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','contexts','3.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','experimentation','1.1',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','flagChanges','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','privateAttrs','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','relayProxyProxy','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','secureMode','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','track','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('node-client-sdk','variationDetail','1.0',NULL,NULL);
INSERT INTO sdk_features(id,feature,introduced,deprecated,removed) VALUES('react','contexts','0.0.1',NULL,NULL);
DELETE FROM sdk_features WHERE id='react-universal' AND feature='contexts';
DELETE FROM sdk_languages WHERE id='combined-browser' AND language='JavaScript';
DELETE FROM sdk_languages WHERE id='combined-browser' AND language='TypeScript';
INSERT INTO sdk_languages(id,language) VALUES('react','JavaScript');
INSERT INTO sdk_languages(id,language) VALUES('react','TypeScript');
DELETE FROM sdk_languages WHERE id='react-universal' AND language='JavaScript';
DELETE FROM sdk_languages WHERE id='react-universal' AND language='TypeScript';
UPDATE sdk_names SET name='JavaScript Client SDK' WHERE id='browser';
DELETE FROM sdk_names WHERE id='combined-browser';
INSERT INTO sdk_names(id,name) VALUES('react','React SDK');
DELETE FROM sdk_names WHERE id='react-universal';
DELETE FROM sdk_repos WHERE id='combined-browser' AND github='launchdarkly/js-core';
INSERT INTO sdk_repos(id,github) VALUES('react','launchdarkly/js-core');
DELETE FROM sdk_repos WHERE id='react-universal' AND github='launchdarkly/js-core';
DELETE FROM sdk_types WHERE id='combined-browser';
INSERT INTO sdk_types(id,type) VALUES('react','client-side');
DELETE FROM sdk_types WHERE id='react-universal';
UPDATE sdk_user_agents SET id='fastly', userAgent='FastlyEdgeSDK' WHERE rowid=21;
UPDATE sdk_user_agents SET id='node-server', userAgent='NodeJSClient' WHERE rowid=22;
UPDATE sdk_user_agents SET id='react-native', userAgent='ReactNativeClient' WHERE rowid=23;
UPDATE sdk_user_agents SET id='server-ai', userAgent='NodeJSAIClient' WHERE rowid=24;
UPDATE sdk_user_agents SET id='shopify-oxygen', userAgent='ShopifyOxygenSDK' WHERE rowid=25;
UPDATE sdk_user_agents SET id='svelte', userAgent='SvelteClient' WHERE rowid=26;
UPDATE sdk_user_agents SET id='vercel', userAgent='VercelEdgeSDK' WHERE rowid=27;
UPDATE sdk_user_agents SET id='relay-proxy', userAgent='LDRelay' WHERE rowid=28;
UPDATE sdk_user_agents SET id='node-client-sdk', userAgent='NodeClientSide' WHERE rowid=29;
UPDATE sdk_user_agents SET id='php-server-sdk', userAgent='PHPClient' WHERE rowid=30;
UPDATE sdk_user_agents SET id='python-server-sdk', userAgent='PythonClient' WHERE rowid=31;
UPDATE sdk_user_agents SET id='roku', userAgent='RokuClient' WHERE rowid=32;
UPDATE sdk_user_agents SET id='ruby-server-sdk', userAgent='RubyClient' WHERE rowid=33;
UPDATE sdk_user_agents SET id='rust-server-sdk', userAgent='RustServerClient' WHERE rowid=34;
DELETE FROM sdk_user_agents WHERE rowid=35;
DELETE FROM sdk_user_agents WHERE rowid=36;
UPDATE sdk_wrappers SET id='react', wrapper='react-client-sdk' WHERE rowid=3;
UPDATE sdk_wrappers SET id='react-native', wrapper='react-native-client' WHERE rowid=4;
UPDATE sdk_wrappers SET id='lua-server-sdk', wrapper='lua-server-sdk' WHERE rowid=5;
UPDATE sdk_wrappers SET id='react-client-sdk', wrapper='react-client-sdk' WHERE rowid=6;
INSERT INTO sdk_wrappers(rowid,id,wrapper) VALUES(7,'vue','vue-client-sdk');

Note

Medium Risk
Primarily data-only metadata updates, but it removes/renames SDK identifiers (notably combined-browser and react-universal), which could break downstream consumers that reference those IDs.

Overview
Regenerates SDK metadata and derived api-js, api/sdkmeta, and products JSON datasets.

This drops the combined-browser SDK from feature/language/name/repo/type/user-agent catalogs, renames the browser display name to JavaScript Client SDK, and replaces react-universal with a new react SDK entry (new path/tag-prefix and wrapper mapping to react-client-sdk).

It also adds full feature capability matrices for lua-server-sdk and node-client-sdk into the shared feature catalogs and the corresponding metadata/launchdarkly_*.json sources.

Written by Cursor Bugbot for commit 9e83cc2. This will update automatically on new commits. Configure here.

@github-actions github-actions bot requested a review from a team as a code owner March 19, 2026 07:21
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

"android": "Android SDK",
"apex-server-sdk": "Apex Server SDK",
"browser": "JavaScript Browser SDK",
"browser": "JavaScript Client SDK",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate display name for two distinct SDK IDs

Low Severity

Renaming browser from "JavaScript Browser SDK" to "JavaScript Client SDK" creates a duplicate display name — the existing js-client-sdk entry already has the name "JavaScript Client SDK". Two distinct SDK IDs now map to the same display name across all three copies of names.json, which could cause ambiguity in any downstream UI or service that displays or indexes SDKs by name.

Additional Locations (1)
Fix in Cursor Fix in Web

"react": {
"wrapperNames": [
"react-client-sdk"
]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shared wrapper name shadows existing SDK lookup result

Medium Severity

The new react entry has wrapperNames: ["react-client-sdk"], identical to the existing react-client-sdk entry. Because GetSDKNameByWrapperOrUserAgent iterates alphabetically and react sorts before react-client-sdk, looking up the wrapper name "react-client-sdk" now returns "React SDK" instead of "React Web SDK". The react-client-sdk wrapper entry is effectively unreachable.

Fix in Cursor Fix in Web

@aaron-zeisler
Copy link
Contributor

The additions to the sdk_features table are what I expected. I'm not sure about the other items related to our javascript SDKs. @joker23 how does this look to you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant