SwiftDataPreviewer

1.0.1

SwiftDataPreviewKit is a lightweight Swift package designed to simplify SwiftUI previews using SwiftData. It provides an in-memory model container for use in DEBUG builds, allowing you to preview your SwiftData-powered views with sample data.
markbattistella/SwiftDataPreviewer

What's New

1.0.1

2025-02-17T04:56:53Z

Fixed the README with proper package name, and instructions (only bumping because some might use the README within Xcode itself)

SwiftDataPreviewer

Swift Versions

Platforms

Licence

SwiftDataPreviewer is a lightweight Swift package designed to simplify SwiftUI previews using SwiftData. It provides an in-memory model container for use in DEBUG builds, allowing you to preview your SwiftData-powered views with sample data.

Features

  • Seamless SwiftData Previews: Easily inject a ModelContainer into your SwiftUI previews.
  • In-Memory Storage: Prevents persistent data pollution while testing.
  • Automatic Sample Data Insertion: Quickly preview lists and other data-driven views.
  • Developer-Friendly API: Just wrap your view with SwiftDataPreviewer.

Installation

Add SwiftDataPreviewer to your Swift project using Swift Package Manager.

dependencies: [
  .package(url: "https://github.com/markbattistella/SwiftDataPreviewer", from: "1.0.0")
]

Alternatively, you can add SwiftDataPreviewer using Xcode by navigating to File > Add Packages and entering the package repository URL.

Recommended Usage

Note

SwiftDataPreviewer is designed for SwiftUI previews only and is not meant for production usage. It provides an in-memory ModelContainer that is automatically configured for SwiftData-powered views.

Usage

  1. Define a SwiftData Model

    Ensure your SwiftData model conforms to PersistentModel:

    import SwiftData
    
    @Model
    class User {
      @Attribute(.unique) var id: UUID
      var name: String
    
      init(id: UUID = UUID(), name: String) {
        self.id = id
        self.name = name
      }
    }
  2. Create a Preview Container

    Define a PreviewContainer with the model types you want to include:

    #if DEBUG
    import SwiftDataPreviewer
    
    let previewContainer = PreviewContainer([User.self])
    #endif
  3. Use SwiftDataPreviewer in Your Previews

    Wrap your SwiftUI view in SwiftDataPreviewer and pass sample data:

    #if DEBUG
    import SwiftUI
    import SwiftData
    
    struct UserListView: View {
      @Query private var users: [User]
    
      var body: some View {
        List(users) { user in
          Text(user.name)
        }
      }
    }
    
    struct UserListView_Previews: PreviewProvider {
      static var previews: some View {
        SwiftDataPreviewer(preview: previewContainer, items: [
          User(name: "Alice"),
          User(name: "Bob"),
          User(name: "Charlie")
        ]) {
          UserListView()
        }
      }
    }
    #endif

How It Works

  1. PreviewContainer creates an in-memory ModelContainer.

  2. SwiftDataPreviewer injects the container into your SwiftUI view.

  3. Sample data is automatically inserted so your previews are populated.

Contributing

Contributions are welcome! If you find a bug or have suggestions for improvements, feel free to submit a pull request.

Licence

SwiftDataPreviewer is available under the MIT licence. See the LICENCE file for more details.

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

Last updated: Fri May 16 2025 10:14:15 GMT-0900 (Hawaii-Aleutian Daylight Time)