Context for Flutter bugs your team cannot reproduce.
Device, OS, update path, local state, and recent requests captured when a known Flutter failure happens.
01final failure = RevclustInvariantFailure(02 failureKind: 'book_details_author_navigation_mismatch',03 subject: RevclustSubject(04 kind: 'book_ref',05 value: attempt.bookRef,06 ),07 expected: <String, Object?>{08 'destination': attempt.expectedDestination,09 'author_ref': attempt.expectedAuthorRef,10 },11 observed: <String, Object?>{12 'actual_destination': actualDestination,13 'actual_author_ref': actualAuthorRef,14 'navigation_action': attempt.navigationAction,15 },16);1718final outcome = await client.captureInvariantFailure(19 failure,20);
resulting evidence
- trigger
- expected author, opened a different author
- conditions
- Android 17, production build, wifi
- timeline
- book selected, details viewed, author tapped
- state_snapshot
- selected book, selected author, actual author
Production breaks in combinations.
Knowing something broke is easy. Knowing the exact state it broke in is the hard part.
A device your team does not have.
A cache state QA did not create.
An update path that only production users took.
Context, not session replay.
The SDK records one app-owned failure and the context around it.
trigger
expected author, opened a different author
conditions
Android 17, production build, wifi
timeline
book selected, details viewed, author tapped
state_snapshot
selected book, selected author, actual author
Start where logs stop helping.
Images or content disappear for users.
Infinix or other device-specific crashes appear.
Local storage and cache drift apart.
A rollout exposes an edge case after release.
Revclust sits after alerting and before guesswork.
No broad session replay
No source-code capture
No unbounded app state
No generic crash replacement claim