Navigation and screens
TalariaNavigatorObserver tags events with route and screen, and starts a short INTERNAL transaction that finishes on idle.
Add the observer to every navigator you care about — usually the root MaterialApp / CupertinoApp.
MaterialApp(
navigatorObservers: [TalariaNavigatorObserver()],
// …
)Route tags
On push, replace, and pop the observer sets route and screen tags and records a navigation breadcrumb. Later exceptions in that screen carry those tags.
Short screen transactions
When tracing is on, the observer starts an INTERNAL transaction named after the route and finishes it on the next idle frame (10s cap). That measures page-load work without letting a shell route parent every later HTTP call.
Note
Later API calls should be their own traces (via wrapHttpClient) or children of a transaction you start for a user action — not children of the home shell.
IndexedStack and tabs
Hosts that swap destinations without pushing a route should call TalariaFlutter.setScreen:
void onDestinationSelected(int index) {
setState(() => _index = index);
TalariaFlutter.setScreen(switch (index) {
0 => '/home',
1 => '/lab',
_ => '/settings',
});
}That applies the same tags and the same short INTERNAL span as the navigator observer.
go_router and other delegates
- Pass
TalariaNavigatorObserverinto the navigator observers list those packages expose. - If a custom shell never notifies
NavigatorObserver, callsetScreenon destination change.
Manual transactions for a user flow (checkout, onboarding) still use startTransaction from the Dart tracing API. Call finish() when the flow ends. See Instrumentation and tracing.