FrameGuard mark

FrameGuard

Performance regressions, testable.

Latest 0.6.0 on pub.dev

Capture Flutter frame timings, classify jank, enforce budgets, compare baselines, and fail CI on measurable UI regressions — locally, with no backend.

pub package release license thanks.dev

Install from pub.dev

Add FrameGuard to your Flutter project, then capture a session or assert in tests.

pubspec.yaml

dependencies:
  frameguard: ^0.6.0

Package page: pub.dev/packages/frameguard · Notes: v0.6.0 release

Why FrameGuard?

DevTools answers what happened. FrameGuard answers whether this build should fail.

Budgets & baselines

Refresh-rate-aware gates and deliberate golden updates — never silent overwrites.

Evidence-backed findings

FG001–FG010 diagnostics with measured facts separated from heuristics.

CI-native exports

JSON, HTML, Markdown, JUnit, SARIF, CSV — plus exit codes for pipelines.

Local by default

No telemetry, no accounts, no required dashboard. Reports stay on disk.

What’s new in 0.6.0

Local history, budget suggestions, and a reusable GitHub Action for CI gates.

  • Local history store with CLI history and gradual drift checks
  • suggest-budget drafts budgets from measured reports
  • Reusable composite action .github/actions/frameguard-check
  • Healthier report labeling and inclusive jank-rate thresholds

Full release notes · Changelog

Quick capture

final report = await FrameGuard.runSession(
  name: 'home_scroll',
  body: () async {
    await scrollHome();
  },
);
await report.writeJson(File('reports/home_scroll.json'));
await report.writeMarkdown(File('reports/home_scroll.md'));