apptracer_flutter_platform_interface 0.1.0
apptracer_flutter_platform_interface: ^0.1.0 copied to clipboard
Common platform interface, data models and Dart stack-trace parser for the unofficial apptracer_flutter integration with the Tracer (apptracer.ru) service.
Changelog #
All notable changes to this package are documented here.
The format follows Keep a Changelog,
and this package adheres to Semantic Versioning.
While the version is below 1.0.0, a breaking change bumps the minor version,
as pub.flutter-io.cn expects.
Unreleased #
0.1.0 - 2026-08-28 #
Added #
-
TracerOptions.resolvedEnvironment, which falls back toprodin a release build anddevotherwise, so an application no longer passesenvironmentfor the ordinary case.releaseanddistbecame optional in the same spirit: Android and iOS read the version from the application bundle. -
TracerOptions.iosAppTokenandTracerOptions.webAppToken, resolved byTracerOptions.resolvedAppToken. Every platform is a separate Tracer project with a token of its own, and an application shipping on both iOS and web had to pick between them by hand; now it passes both.appTokenremains the fallback, and Android is absent on purpose — its SDK reads the token from a resource the Gradle plugin generates. Only the resolved token is serialized, so an unrelated project's token never crosses the channel. -
Initial release.
-
TracerPlatformcontract and the inertUnsupportedTracerPlatformdefault. -
MethodChannelTracer, shared by the Android and iOS implementations, which degrades to "disabled" onMissingPluginExceptionorPlatformExceptioninstead of propagating. -
DartStackTrace.parse, covering JIT frames, obfuscated AOT frames together with thebuild_idheader,dart2jsframes in V8 and SpiderMonkey notation, and the<asynchronous suspension>marker. Unrecognised lines are preserved rather than dropped, and the verbatim text is always kept. -
TracerOptions,TracerEvent,TracerBreadcrumb,TracerSeverity. -
DartStackTrace.limitFrames, which caps the parsed frames while leaving the verbatim text whole — trimming that would destroy the only artefact an obfuscated trace can be decoded from.
Fixed #
-
Grouping on Android. Measured against a live Tracer project on 2026-08-26, Tracer keys a group on the top frame's class and method alone: a
StateErrorand aTimeoutExceptionthrown from two closures inside onebuildlanded in the same group. When the caller supplies noissueKey, one is now synthesised from the error type and the innermost named frame — the rule iOS already used, moved into Dart so both platforms share it. Neither file nor line goes into the key, so editing code does not scatter a group. -
The diagnostic
UnsupportedTracerPlatformprints on an unsupported platform told the reader to registerTracerHttpTracer"withTracerOptions.dsnset". That transport authenticates withappToken;dsnbelongs to the Sentry one, and following the message would have left collection off.