Yes. Widgetbook is open source and free. Widgetbook Cloud is a separate, optional product for hosted builds and visual reviews.
Yes.
Widgetbook lives in its own package that depends on your app or design system.
widgetbook init sets it up.
To catalog several packages from one Widgetbook, see Widgetbook in a Monorepo.
Args control the widget's properties: text, color, state. They come from the widget's constructor.
Modes control the environment: theme, locale, viewport, text scale. They come from Addons.
See Core Concepts.
Both are generated.
Check the stories file has a part directive and a Meta declaration, then run the generator.
part 'button.stories.g.dart';
const meta = Meta(Button.new);dart run build_runner buildUse dart run build_runner watch during development.
See Code Generation.
Constructor parameters without a usable default must be passed through args.
A required onPressed has no default, so the story needs onPressed: Arg.fixed(() {}).
Widgets whose parameters are all optional or defaulted work with _Story().
See Quick Start.
Mock the dependency and inject it with the story's setup hook: a ProviderScope, a BlocProvider, a stubbed repository.
See Mocking.
No.
Write Scenarios.
flutter test captures a screenshot of each one.
With Widgetbook Cloud those snapshots are diffed on every pull request.
See What are Visual Tests?.
build/.widgetbook in your Widgetbook package.
See Run Scenarios.
Yes.
| App type | Addon |
|---|---|
MaterialApp | MaterialThemeAddon |
CupertinoApp | CupertinoThemeAddon |
| Custom theme | ThemeAddon |
See Theme Addon.
It reports anonymous usage data after build_runner build, and no personal data.
Telemetry lists what is sent and how to opt out.
See the v4 Migration Guide. It recommends writing a few v4 stories by hand first, then using an agent primed with your conventions. A manual workflow is at the end of the page.
Discord, or Resources for talks, articles, and example projects.

