Skip to content

feat: Add FDv2 data system support to NodeClient - #1775

Merged
joker23 merged 7 commits into
mainfrom
skz/sdk-2195/node-client-sdk-next-fdv2-support
Jul 30, 2026
Merged

feat: Add FDv2 data system support to NodeClient#1775
joker23 merged 7 commits into
mainfrom
skz/sdk-2195/node-client-sdk-next-fdv2-support

Conversation

@joker23

@joker23 joker23 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

SDK-2468


Note

Medium Risk
Touches core flag data plumbing and connection/offline semantics, but FDv1 behavior is preserved behind the existing data manager when dataSystem is absent.

Overview
When dataSystem is configured, NodeClient now wires createFDv2DataManagerBase (desktop defaults, transition table, query params for client-side ID vs mobile) instead of NodeDataManager, while leaving the FDv1 path unchanged.

Connection mode is tracked on the client (_connectionMode). In FDv2, setConnectionMode validates modes, no-ops after close or on duplicate mode, serializes concurrent transitions (flush before offline, then event sending + data manager), and getConnectionMode / isOffline read that state rather than the FDv1 data manager.

CI runs FDv2 contract tests (harness v3) against the same long-lived test service (stop_service: 'false'), with a new suppressions file and harness updates (mobile, useMobileKey, extra capabilities). Unit coverage is added in NodeClientFDv2.test.ts; FDv2ConnectionMode is exported from LDCommon.

Reviewed by Cursor Bugbot for commit 01ac80d. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@launchdarkly/js-client-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 39108 bytes
Compressed size limit: 39300
Uncompressed size: 213642 bytes

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@launchdarkly/js-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 26360 bytes
Compressed size limit: 29000
Uncompressed size: 129188 bytes

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@launchdarkly/js-client-sdk size report
This is the brotli compressed size of the ESM build.
Compressed size: 32077 bytes
Compressed size limit: 34000
Uncompressed size: 114525 bytes

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@launchdarkly/browser size report
This is the brotli compressed size of the ESM build.
Compressed size: 179691 bytes
Compressed size limit: 200000
Uncompressed size: 831704 bytes

@joker23

joker23 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

cursor[bot]

This comment was marked as resolved.

@joker23

joker23 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ 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 14bd7e4. Configure here.

@joker23
joker23 force-pushed the skz/sdk-2195/node-client-sdk-next-fdv2-support branch 2 times, most recently from 65b044a to c4aa363 Compare June 26, 2026 17:51
@joker23
joker23 marked this pull request as ready for review June 26, 2026 17:57
@joker23
joker23 requested a review from a team as a code owner June 26, 2026 17:57
devin-ai-integration[bot]

This comment was marked as resolved.

@joker23
joker23 marked this pull request as draft June 29, 2026 18:10
@joker23
joker23 force-pushed the skz/sdk-2195/node-client-sdk-next-fdv2-support branch from f4a4c39 to bc6706f Compare June 29, 2026 18:48
@joker23
joker23 marked this pull request as ready for review June 29, 2026 22:42
joker23 added 5 commits July 7, 2026 14:07
fix: Restore FDv2 connection mode when an offline transition fails

fix: Await in-flight FDv2 transition on duplicate-mode setConnectionMode
@joker23
joker23 force-pushed the skz/sdk-2195/node-client-sdk-next-fdv2-support branch from bc6706f to 254d1a2 Compare July 7, 2026 18:07
streaming/fdv2/reconnection state management/updates previously known state
streaming/fdv2/can discard partial events on errors

# Looks like an issue in the test harness where client SDKs are assumed to have a

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Not fond of the wording of this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Are comments actually supported? I just assume they don't match any test names?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think I specified the wrong set of capabilities, this should have mobile capability as well. Since mobile sdks do not need to do the initial one-shot.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

okay, looking at this more, I think we will need to put in a fix in the test harness for client sdks (tracked in a different ticket). I let claude take a stab at the explanation.

@joker23
joker23 requested a review from kinyoklion July 28, 2026 19:56
cursor[bot]

This comment was marked as resolved.

@joker23
joker23 merged commit 3ea0f33 into main Jul 30, 2026
55 checks passed
@joker23
joker23 deleted the skz/sdk-2195/node-client-sdk-next-fdv2-support branch July 30, 2026 21:08
@github-actions github-actions Bot mentioned this pull request Jul 30, 2026
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.

2 participants