ailog_flutter
Flutter add-on for ailog: automatic error hooks, navigation breadcrumbs, and a bridge so native Kotlin/Swift code logs into the same JSONL file.
What this package is like to depend on
Last release 28 days ago
27 Jul 2026
Too new to tell
only 1 dated releases
Nearly every release is documented
notes for 1 of 1 stable releases
Nothing withdrawn
no release was ever pulled
0 months old
1 releases · first in 2026
1 release in the last 12 months
see the full history below
Release timeline
1 releases · Jul 2026 to Jul 2026Releases
latest 1-
0.3.027 Jul 2026Release notes
Open source →- A
flutter buildrelease now ships with logging off. This followsailog0.4.0, whereLogger.create'senableddefaults to!isReleaseBuild: debug and profile are unaffected, and a release build writes nothing to a user's device unless you passenabled: true(or a runtime flag, for a diagnostics toggle in settings).AilogFlutter.installandrunAppGuardedare unchanged — they route errors into whatever logger you hand them, and a disabled one accepts every call and produces nothing. If you ship a way to retrieve the file, opt back in; the README's "Debug / profile / release" section covers both directions. - Automatic debug-session sync documented, built on
ailog's newinstallDebugSync+ailog_sync. It is now the first option under "Getting the log off a real device", because it is the only one with no manual step:flutter runalready opens the VM Service, so a command on your machine can pull the log continuously while you use the app. Release builds are unaffected — they serve no VM Service at all. AilogLifecycleObserver— foreground/background/termination, with both ends of each transition (paused → resumed). A handful of events over a session, and repeatedly decisive: "crashes when you come back to the app" is invisible in a log that only records what the code did. Defaults totrace, so it stays out of a production file while remaining available as a breadcrumb.- User interaction logging documented, built on
ailog's newlogger.interaction(). Deliberately no automatic "log every tap": measured against a real widget tree, a rootListenerplus a hit test recovers a useful label only for text-labelled buttons — anIconButtonyields "a button", aTextFieldnothing — while costing a hit test per pointer-down and carrying a privacy problem regex redaction cannot solve (semantic labels contain user data: a contacts row is labelled with a person's name). The README states this, with the numbers and a recipe for anyone who wants it anyway. runAppGuardedgainscapturePrint/forwardPrintsToConsole: plainprint()calls (yours or a dependency's) are routed into the structured log viaailog'scapturePrints.- Depends on
ailog ^0.4.0as a hosted dependency, making the package publishable; local development usespubspec_overrides.yaml.
Release notes
Open source →Fixed
-
The digest over-counted errors, corrupting its own ranking. Idiomatic usage logs one failure more than once as it propagates —
span()records the failure passing through it, then the caller catches the same exception at a boundary and logs it again. Both are correct; together they doubled the reported frequency, and could rank a deep-stack error above a shallower but genuinely more widespread one. Verified on a realistic session: two failed requests were reported as×4.ErrorGroupnow tracksincidents(distinct traces) alongsideoccurrences(raw log events), ranks by the former, and reports both when they diverge. Untraced events count individually, since they can't be attributed to a request.
Changed
ErrorGroup.countrenamed toErrorGroup.occurrences;incidentsadded. The digest's JSON output gainsincidentsand renamescounttooccurrences.- The digest picks the richest available causal chain for a group rather than the chronologically last one — the last event is often the outermost re-log, which carries less context than the innermost.
- Retained sample trace IDs per error group are bounded (32); the incident count stays exact past that bound.
- A