A property wrapper that can validate the property it wraps.

What's New



Full Changelog: v0.2.0...v0.3.0


A property wrapper that can validate the property it wraps.

When the wrapped value changes @Validate will run the provided validations against the value.

Once validated, the isValid and errors properties can provide validation results.

The Validate framwork contains a number of built in validations such as presence, count and format. All which a various array of types.


  • iOS 15.0+
  • macOS 12.0+


Swift Package Manager

dependencies: [
    .package(url: "", from: "2.0.0")


API Reference


import SwiftUI
import Validate

struct ContentView: View {
    @Validate(.presence()) var name: String = ""
    var body: some View {
        VStack(spacing: 60) {
            VStack {
                TextField("Name", text: self.$name.binding)
                VStack {
                    ForEach(self.$name.errors.localizedDescriptions, id: \.self) { message in
            Button("Save") {

Built in validations

Validate includes several validations:

Building validations

You're not just limited to using the built in validations but can build your own by using the Validation builder.

This is how the built in presence validation is built:

public extension Validation {
    /// Validate an optional value is present.
    /// If the value is nil, it is considered invalid.
    /// - Parameters:
    ///   - message: A custom error message.
    /// - Returns: A Validation instance.
    static func presence<T>(
        message: String? = nil
    ) -> Validation<Optional<T>> {
        .init { value in
            if value == nil {
                throw message)

Other libraries

Check out some of my other libraries:

  • Papyrus - Papyrus aims to hit the sweet spot between saving raw API responses to the file system and a fully fledged database like Realm.
  • RedUx - A super simple Swift implementation of the redux pattern making use of Swift 5.5's new async await API's.
  • Kyu - A persistent queue system in Swift.
  • FloatingLabelTextFieldStyle - A floating label style for SwiftUI's TextField.
  • Panel - A panel component similar to the iOS Airpod battery panel.


  • Swift Tools 5.3.0
View More Packages from this Author


  • None
Last updated: Tue Nov 08 2022 20:15:31 GMT-0500 (GMT-05:00)