Skip to content

Document client assignment request reliability - #39560

Draft
leoromanovsky wants to merge 2 commits into
masterfrom
leo.romanovsky/document-flag-assignment-reliability
Draft

Document client assignment request reliability#39560
leoromanovsky wants to merge 2 commits into
masterfrom
leo.romanovsky/document-flag-assignment-reliability

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Motivation

Client applications need a visible way to protect assignment initialization from stalled requests without changing default SDK behavior. The primary setup path should show a bounded timeout, while the platform guides retain the complete timeout, retry, and lower-level transport building blocks.

This PR consolidates the cross-client documentation and supersedes #38869, #38870, #38871, #38872, and #38873.

Changes

  • Add an early getting-started warning and a timeout-only browser setup example capped at 1,500 milliseconds.
  • Add timeout-only setup examples for iOS, Android, Flutter, and Unity. Unity uses one second because its API accepts whole seconds.
  • Document browser flagConfigurationFetch with withRetry(withTimeout(globalThis.fetch, timeoutMs), retries) in advanced configuration.
  • Document opt-in scalar timeout/retry controls for iOS, Android, Flutter, and Unity in advanced configuration.
  • Add composable assignment-only examples for iOS AssignmentRequestFetch, Android Call.Factory, Dart http.Client, and Unity IAssignmentRequestTransport.
  • Clarify transport ownership, policy precedence, full-body timeout scope, fresh request attempts, and telemetry isolation.

Decisions

  • Preserve default request behavior across every client: 0 disables the SDK timeout and retry policies, producing one initial request while underlying platform/custom transport limits remain authoritative.
  • Show a timeout in primary setup guidance, keep retry configuration in advanced guidance, and keep every recommended timeout at or below 1,500 milliseconds.
  • Retry network errors, timeouts, HTTP 408, and HTTP 5xx only when explicitly configured; never retry HTTP 429.
  • Defer React Native documentation until the iOS and Android APIs are published and React Native can consume released native versions.
  • Keep this PR draft until every documented native API is released.

Validation

  • git diff --check passes.
  • Vale over all client/getting-started pages reports 0 errors.
  • Examples were checked against the exact public API fixtures and live draft PR heads.
  • A full Hugo build is unavailable in this sparse documentation worktree because build dependencies and Makefile.config are absent.

Dependencies

  1. Browser @datadog/openfeature-browser@1.4.0 is published to npm as latest.
  2. iOS [FFL-2891] Add composable assignment request transport dd-sdk-ios#3167 and Android [FFL-2929] Add composable assignment request transport dd-sdk-android#3693 can land independently.
  3. Flutter [FFL-2930] Add composable assignment request transport dd-sdk-flutter#1104 and Unity [FFL-2931] Add composable assignment request transport dd-sdk-unity#239 can land independently.
  4. React Native follows only after released iOS and Android versions are available.
  5. Merge this documentation PR after the documented SDK versions are released.

@leoromanovsky leoromanovsky changed the title Document client assignment request timeouts and retries Document client assignment request reliability Aug 28, 2026
Document zero-default assignment timeout and retry controls for supported client SDKs, including composable transport examples. Defer React Native until released native dependencies are available.

Environment: Datadog workspace
@leoromanovsky
leoromanovsky force-pushed the leo.romanovsky/document-flag-assignment-reliability branch from bb55615 to a1b96ad Compare August 28, 2026 23:20
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