feat: Add Identify hooks to Client SDK#234
Merged
abelonogov-ld merged 25 commits intomainfrom Mar 13, 2026
Merged
Conversation
…ailable before registration
…dk-identify * andrey/clientsdk-plugins-and-hooks: address feadback remove files remove identify # Conflicts: # pkgs/sdk/client/src/Hooks/IdentifySeriesResult.cs
* main: chore(main): release LaunchDarkly.ServerSdk.Ai 0.9.3 (#233) fix: Make defaultValue optional with a disabled default (#232) chore(main): release LaunchDarkly.ClientSdk 5.6.0 (#231) feat: Add plugin support to Client SDK (#229) # Conflicts: # pkgs/sdk/client/src/Internal/Hooks/Executor/Executor.cs
- Modified the ILdClient and ILdClientExtensions interfaces to add a maxWaitTime parameter to IdentifyAsync. - Updated related documentation and references across multiple files to reflect the new method signature. - Enhanced the Identify method implementation to utilize the updated IdentifyAsync method with the maxWaitTime parameter. - Introduced IdentifySeries method in the hook executor to manage identify operations with hooks, including error handling and execution order.
…ementation - Updated the IdentifyAsync method to remove the maxWaitTime parameter from the public interface. - Adjusted related documentation to reflect the new method signature. - Ensured internal implementation retains the maxWaitTime parameter for flexibility in asynchronous identification operations.
- Updated IdentifySeriesContext to accept TimeSpan instead of int for timeout, improving clarity and flexibility. - Adjusted IdentifySeries method in Executor to align with the new IdentifySeriesContext signature. - Modified IdentifySeriesTest to utilize TimeSpan.Zero for timeout, ensuring consistency in test cases.
tanderson-ld
requested changes
Mar 11, 2026
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
tanderson-ld
requested changes
Mar 13, 2026
tanderson-ld
approved these changes
Mar 13, 2026
abelonogov-ld
pushed a commit
that referenced
this pull request
Mar 13, 2026
🤖 I have created a release *beep* *boop* --- ## [5.7.0](LaunchDarkly.ClientSdk-v5.6.0...LaunchDarkly.ClientSdk-v5.7.0) (2026-03-13) ### Features * Add Identify hooks to Client SDK ([#234](#234)) ([ddbb81f](ddbb81f)) --- 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** > Low risk release-metadata update: only version numbers and changelog entries are modified, with no runtime code changes in this diff. > > **Overview** > **Releases `LaunchDarkly.ClientSdk` v5.7.0.** > > Bumps the client SDK version from `5.6.0` to `5.7.0` in `.release-please-manifest.json` and `LaunchDarkly.ClientSdk.csproj`, and adds the `5.7.0` changelog entry noting the new *Identify hooks* feature. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 430f4bc. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
evgenygunko
pushed a commit
to evgenygunko/CopyWordsDA
that referenced
this pull request
Mar 15, 2026
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [LaunchDarkly.ClientSdk](https://github.com/launchdarkly/dotnet-core) | nuget | minor | `5.6.0` -> `5.7.0` | --- ### Release Notes <details> <summary>launchdarkly/dotnet-core (LaunchDarkly.ClientSdk)</summary> ### [`v5.7.0`](https://github.com/launchdarkly/dotnet-core/releases/tag/LaunchDarkly.ClientSdk-v5.7.0): LaunchDarkly.ClientSdk: v5.7.0 [Compare Source](launchdarkly/dotnet-core@LaunchDarkly.ClientSdk-v5.6.0...LaunchDarkly.ClientSdk-v5.7.0) ##### Features - Add Identify hooks to Client SDK ([#​234](launchdarkly/dotnet-core#234)) ([ddbb81f](launchdarkly/dotnet-core@ddbb81f)) *** 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 --> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or PR is renamed to start with "rebase!". 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Adds BeforeIdentify / AfterIdentify hook stages to the existing hooks infrastructure, mirroring the evaluation series pattern. Hooks execute in forward order for BeforeIdentify and reverse (LIFO) order for AfterIdentify.
Wraps LdClient.IdentifyAsync with the identify hook series so that configured hooks receive callbacks before and after each identify operation, with IdentifySeriesResult.Completed on success and IdentifySeriesResult.Error on failure.
Threads maxWaitTime from Identify / IdentifyAsync into IdentifySeriesContext.Timeout so hooks have visibility into the caller's timeout configuration.
Note
Medium Risk
Changes
LdClientinitialization andIdentify/IdentifyAsyncflow to run new hook callbacks and to always emit an identify series result, which could affect timing/ordering and error propagation around context changes.Overview
Adds an identify hook series to the SDK hook infrastructure, introducing
Hook.BeforeIdentify/Hook.AfterIdentifyplus newIdentifySeriesContext(includes timeout) andIdentifySeriesResult(Completed/Error).Extends the internal hook executor (
IHookExecutor,Executor,NoopExecutor) with an asyncIdentifySeriespipeline that runs hooks in forward order before identify and reverse order after, logging and isolating hook-stage failures while still propagating identify exceptions.Updates
LdClientto route both startup identify event recording andIdentify/IdentifyAsyncthrough the new identify series (including threadingmaxWaitTimeinto hook context) and adds unit tests covering ordering, data passing, logging on hook errors, result status, and activation during init.Written by Cursor Bugbot for commit b881e20. This will update automatically on new commits. Configure here.