A Swift framework for building iOS forms with a declarative, readable syntax and built-in validation.
Formalist is a Swift framework for building forms on iOS using a declarative syntax. It simplifies form creation by providing reusable components, built-in validation, and automatic UI-value binding, reducing the boilerplate typically associated with form handling in UIKit.
iOS developers building data-entry interfaces, settings screens, or any form-heavy applications who want a structured, maintainable approach to form logic.
Developers choose Formalist for its clean declarative API, built-in validation system, and seamless integration with UIKit, offering a more organized alternative to manual form construction.
Declarative form building framework for iOS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Formalist's clear, readable syntax reduces boilerplate and improves maintainability, as demonstrated in the example code using convenience functions like toggle() and textView().
Supports synchronous and asynchronous validation rules, including common cases like email formats and required fields, with easy error display customization via GroupElement configuration.
Uses FormValue to wrap and observe values, ensuring UI controls stay synchronized without manual updates, as detailed in the documentation for value observation and binding.
Implements responder chain support for automatic tabbing between fields, enhancing user experience in data-entry forms with minimal setup, as explained in the responder chain section.
At version 0.1.0, Formalist may have breaking changes, limited testing in production, and fewer features compared to mature alternatives, as indicated by the low version number.
Relies solely on UIKit, making it incompatible with SwiftUI projects and adding migration overhead for apps transitioning to Apple's newer UI frameworks.
Creating highly tailored elements or complex layouts requires subclassing or using ViewElement, which can be more time-consuming than drop-in solutions with pre-styled components.