Describe the state
Use #Preview, @Previewable or PreviewProvider.
Prefire reads #Preview and generates snapshot tests plus an iOS Playbook. No second set of UI states.
The states already in your project become tests and a visual catalog.
One set of preview states becomes repeatable checks and a browsable interface catalog.

Prefire handles the path from source code to generated output.
Use #Preview, @Previewable or PreviewProvider.
The plugin finds previews and generates Swift output.
Run snapshots or open Playbook to inspect the same states.
Use the plugin in Xcode or SwiftPM. Use the CLI for explicit local and CI runs.
Add Prefire as a package dependency, then attach the test or Playbook plugin to the matching target.
Tests target → PrefireTestsPlugin App target → PrefirePlaybookPlugin
Add Prefire once, then attach plugins to the targets that should receive generated output.
.package( url: "https://github.com/BarredEwe/Prefire.git", from: "5.8.1" ) .plugin(name: "PrefireTestsPlugin", package: "Prefire")
Install with Homebrew, then generate tests or Playbook models explicitly.
brew install BarredEwe/formulae/prefire prefire tests prefire playbook
Add .prefire.yml when the defaults no longer match your project. Project-specific control stays in the config.
test_configuration: target: PrefireExample simulator_device: "iPhone15,2" required_os: 16 playbook_configuration: preview_default_enabled: true
Let Prefire turn them into something the whole team can verify.