You can copy each block below into a separate GitHub issue (title on the first line, body from the line after ---).
Issue 1 — copy from here
Title: feat: offline queue — persist & flush events when connectivity returns
Summary
Add an offline-capable event path: when the device has no network (or delivery to trackers is impossible), store events safely and send them when connectivity and policy allow.
Problem
- Events can be lost during offline / flaky networks if trackers fail synchronously or the pipeline does not buffer.
- Teams need predictable semantics for ordering, caps, and consent while queued.
Goals
- Durable best-effort delivery for eligible events (policy-driven).
- Bounded memory/disk usage with explicit overflow behavior.
- Clear interaction with consent, routing, and sampling on flush.
Non-goals (MVP)
- Full “analytics database” product; start with a small, auditable queue.
Acceptance criteria
Notes / links
- Likely overlaps with deferred tracker initialization queueing — consider a shared internal “outbox” design.
Implementation hints (optional)
- Consider a pluggable **OutboxStore** (memory + optional persistent impl).
- Consider reusing / aligning with any future “pre-init queue” from deferred setup.
Issue 2 — copy from here
Title: feat: deferred tracker init — fast setup + queue until trackers are ready
Summary
Make initialization non-blocking for app startup: setup / FlexTrackClient.create returns quickly while trackers finish async installation in the background. Events emitted early are queued and delivered once trackers become ready (per policy).
Problem
- Heavy SDK initialization (Firebase, etc.) can block cold start and first-frame work.
- Early lifecycle events (first open, splash) are valuable and should not be dropped.
Goals
- Fast return from setup APIs by default (opt-in “await all inits” if needed).
- Ordered / deterministic delivery after readiness (document global vs per-tracker ordering).
- Failure handling for tracker init timeouts and partial readiness.
Non-goals (MVP)
- Parallel init micro-optimization beyond “don’t block the UI isolate unnecessarily”.
Acceptance criteria
Notes / links
- Likely shares design with offline queue — link issues and plan one outbox if possible.
API ideas (optional)
- `FlexTrackClient.whenReady` / readiness `Stream`
- debug/inspector signal: “pending queue depth”
You can copy each block below into a separate GitHub issue (title on the first line, body from the line after ---).
Issue 1 — copy from here
Title: feat: offline queue — persist & flush events when connectivity returns
Summary
Add an offline-capable event path: when the device has no network (or delivery to trackers is impossible), store events safely and send them when connectivity and policy allow.
Problem
Goals
Non-goals (MVP)
Acceptance criteria
trackcalls are queued instead of dropped (per documented policy).Notes / links
Implementation hints (optional)
- Consider a pluggable **OutboxStore** (memory + optional persistent impl). - Consider reusing / aligning with any future “pre-init queue” from deferred setup.Summary
Make initialization non-blocking for app startup:
setup/FlexTrackClient.createreturns quickly while trackers finish async installation in the background. Events emitted early are queued and delivered once trackers become ready (per policy).Problem
Goals
Non-goals (MVP)
Acceptance criteria
FlexTrack.setup/FlexTrackClient.createcompletes without awaiting all trackerinitializework unless an explicit flag/mode requests it.trackcalls before readiness are queued and later delivered to the correct trackers.trackeventually reachesMockTracker.Notes / links
API ideas (optional)
- `FlexTrackClient.whenReady` / readiness `Stream` - debug/inspector signal: “pending queue depth”