Optional egress allowlist: if non-empty, the survey transport asserts the
resolved apiUrl host is in this list before any fetch/submit (fail-closed
data-residency control for regulated clients).
Foreground resume after this many background milliseconds rotates to a
fresh replay session. The 30-minute value is the fail-safe fallback when
versioned server policy is unavailable. Set 0 to keep app-switch resumes
in the same SDK session until the app process is killed or
resetIdentity / reset is called.
Base capture-walk cadence in milliseconds. Lower means higher
replay/heatmap fidelity at more CPU; higher is cheaper and coarser.
Sampling of replay itself is server-owned, not a client knob.
Auto-screenshot non-structural content (custom-painted widgets like charts,
candlesticks, maps) into a pixel imageRef instead of a gray placeholder.
Default off (opt-in). Respects maskCustomPaints — only unmasked content is
captured. GPU/Texture/PlatformView content cannot be rasterized and stays a
placeholder.
When true, the SDK's own "Ask" survey overlay is captured INTO session
replay instead of being omitted (wraps the overlay without the exclusion
marker). Default false = privacy-safe exclusion. The dashboard project
policy can also opt future sessions in; third-party surveys should stay
masked/excluded.
Back-compat alias, true when logLevel is LogLevel.debug or more
verbose. The [cxorbi] request/transport logs are gated on this, so
setting logLevel: LogLevel.none (or any level below debug) silences
them exactly as debug: false always did.
True when this build's traffic should be flagged as test/debug. Defaults
to Flutter's kDebugMode, so debug builds are auto-flagged; set it
explicitly for profile/release staging builds (where kDebugMode is
false). Stamped on the session so you can spot and hide test traffic in
Live Events. (Excluding it from aggregate production reports is dashboard
configuration, not an SDK concern.)
Experimental, default false. Drive replay capture from semantic triggers
plus a periodic keyframe safety checkpoint instead of walking the tree on
every painted frame. Leave false until completeness tests confirm coverage
parity for your app.
Bounded dynamic-content checkpoint interval (ms) used only when
eventDrivenCapture is true. Catches passive content changes that arrive
without a navigation or pointer trigger. Set 0 to rely on keyframes only.
Screen-change capture debounce (ms). Default 300: the per-screen capture
is deferred and coalesced until navigation is quiet this long, so capture
work runs after the transition settles. Set 0 for immediate capture.
Periodic foreground recovery for durable replay-tail rows. Default 30000
(30 seconds), clamped to 1 second..5 minutes; set
replayTailDrainEnabled false or interval 0 to disable. This intentionally
runs separately from sessionHeartbeatIntervalMs so heartbeat-disabled apps
still recover stranded replay tails while foregrounded.
Lightweight foreground activity-marker cadence in milliseconds. These
markers keep the session duration and final-screen dwell accurate even
when unchanged replay frames are deduplicated. Default 15000 (15 seconds),
clamped to 5 seconds..5 minutes; set 0 to disable.
Master kill-switch for the survey layer. Default false — the entire
Ask layer is inert (no fetch/present) until the host opts in, so adding it
never changes existing 0.2.x behavior.
Whether the versioned project policy returned at mobile-session bootstrap
may replace backgroundSessionTimeoutMs. Keep true for production.
Test fixtures that require deterministic short sessions can set false.