liquid_analytics 0.1.1
liquid_analytics: ^0.1.1 copied to clipboard
Vendor-neutral analytics for Flutter. Emit one typed event and fan it out to any set of providers through a middleware pipeline and a built-in consent gate.
Changelog #
0.1.1 #
Two correctness fixes in the consent gate and the event pipeline. Both are behaviour changes; neither changes the public API.
- Consent is now re-checked when the delivery queue drains. Previously
consent was evaluated only when an event was emitted and when it was
enqueued. An event that was queued (batch mode, or awaiting retry after a
sink failure) while consent was granted would still be delivered even if the
user revoked consent before the flush — and because the queue is persisted,
that could happen on a later launch. Queued entries whose category has since
been denied, or which no longer route to the sink under
ConsentPolicy.map, are now dropped; entries whose category has returned to undecided are held rather than sent. - Event order is now preserved when middleware is asynchronous.
LiquidMiddleware.applyreturns aFutureOr, but the client did not wait for one message to finish the pipeline before starting the next, so any middleware that awaited (device info, disk, network) let later events overtake earlier ones and reach sinks out of order. The pipeline is now serialized, which also fixes ordering of the consent buffer replay. A slow sink now delays the events behind it — useDeliveryOptions.batchModefor HTTP-heavy destinations. Liquid.flush()now waits for in-flight pipeline work before draining, so events emitted immediately before the call are included.- A middleware that throws no longer stops subsequent events from being processed.
- Add an
example/covering typed events, consent gating and fan-out.
0.1.0 #
- Initial release of
liquid_analytics. - Typed events, middleware pipeline, consent gate with buffer/replay.
- Offline delivery queue with exponential backoff and optional persistence.
- Batch mode with count/timer flush policies; lifecycle flush.