Swiftpack.co - BarredEwe/Prefire as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by BarredEwe.
BarredEwe/Prefire 1.5.0
🔥 A library based on SwiftUI Preview, for easy generation: Playbook view, Snapshot and Accessibility tests
⭐️ 128
🕓 9 weeks ago
.package(url: "https://github.com/BarredEwe/Prefire.git", from: "1.5.0")


A library for easily generating automatic Playbook (Demo) view and Tests using SwiftUI Preview

Works with: UI-components, screens and flows

Release Platform Swift5 Swift Package Manager Swift Package Manager



Do you like SwiftUI Preview and use it? Then you must try 🔥Prefire!

You can try 🔥Prefire starting from example project.

  • ✅ Easy to use
  • ✅ Fully automatic generation based on Sourcery
  • ✅ Generation Playbook (Demo) view
  • ✅ Generation Snapshot tests based on swift-snapshot-testing
  • ✅ Generation Accesability Snapshot tests
  • Xcode Plugin supported


Prefire can be install for an Xcode Project or only for one Package.

Xcode Project Plugin

You can integrate Prefire as an Xcode Build Tool Plug-in if you're working on a project in Xcode.

  1. Add Prefire as a package dependency to your project without linking any of the products.
  1. Select the target to which you want to add linting and open the Build Phases inspector. Open Run Build Tool Plug-ins and select the + button. From the list, select PrefirePlaybookPlugin or PrefireTestsPlugin, and add it to the project.

Swift Package Plugin

You can integrate Prefire as a Swift Package Manager Plug-in if you're working with a Swift Package with a Package.swift manifest.

  1. Add Prefire as a package dependency to your Package.swift file.
dependencies: [
    .package(url: "https://github.com/BarredEwe/Prefire", from: "1.0.0")
  1. Add Prefire to a target using the plugins parameter.
    plugins: [
        // For Playbook (Demo) view
        .plugin(name: "PrefirePlaybookPlugin", package: "Prefire")
    plugins: [
        // For Snapshot Tests
        .plugin(name: "PrefireTestsPlugin", package: "Prefire")


For generate tests and playbook, simply mark your preview using protocol - PrefireProvider:

struct Text_Previews: PreviewProvider, PrefireProvider {
    static var previews: some View { ... }

Playbook (Demo) View

To use Playbook, simply use PlaybookView

  • If you want to see a list of all the Views, use isComponent: true
  • If you want to sort by UserStory, use isComponent: false
import Prefire 

struct ContentView: View {
    var body: some View {
        PlaybookView(isComponent: true, previewModels: PreviewModels.models)

Snapshot tests

Just run generated tests 🚀 And all tests will be generated in DerivedData.

Plugin PrefireTestsPlugin will do everything for you 🛠️

For detailed instruction you can see swift-snapshot-testing or examine an example project.


New commands for previews:

  • You can set the delay and precision parameters for the snapshot:

    .snapshot(delay: 0.3, precision: 0.95)
    static var previews: some View {
            .snapshot(delay: 0.3, precision: 0.95)
  • Function for connecting preview together in one Flow:

    static var previews: some View {
    static var previews: some View {

    For example Authorization flow: LoginView, OTPView and PincodeView

  • If a preview contains more than one View, you can mark State for these views.

    static var previews: some View {


You can additionaly configure Prefire by adding a .prefire.yml file to root folder. For example:

  - target: PrefireExample 
  - test_file_path: PrefireExampleTests/PreviewTests.generated.swift
  - template_file_path: CustomPreviewTests.stencil
  - simulator_device: "iPhone15,2"
  - required_os: 16
  • target - Your project Target for Snapshot tests. Default: FirstTarget
  • test_file_path - Filepath to generated file (⚠️ Not compatible with Xcode 15). Default: DeriveData
  • template_file_path - Stencil file for generated file. Optional parameter. Default: Templates/PreviewTests.stencil from the package
  • simulator_device - Device for Snapshot testing. Default: iPhone 14 Pro
  • required_os - iOS version for Snapshot testing. Default: iOS 16


  • Swift 5.6+
  • Xcode 14.0+
  • iOS 14+

Previews Troubleshooting

  • NavigationView in Preview is not supported for Playbook


Stars: 130
Last commit: 2 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

18 weeks ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics