
Eureka
A Swift library for building iOS settings-style forms with less boilerplate.
- Stars
- 11.8k
- Forks
- 1.3k
- Licence
- MIT
- Language
- Swift
- Last update
- 2.1 years ago
- Type
- Library
No commits in over a year — check for forks or alternatives before adopting.
What it is
Eureka is a Swift library for iOS that helps developers build forms, such as settings or data-entry screens, on top of UITableView. Instead of wiring up each table cell by hand, you describe sections and rows in code using short operators or a result-builder syntax. It is a Swift re-creation of the older XLForm library.
- Build a multi-section settings screen by extending FormViewController and adding rows
- Read all tagged row values at once with form.values()
- Show or hide rows based on other field values
- Add validation rules to rows and react to value changes with onChange callbacks
Great for
- iOS developers building form-heavy screens in Swift
- Teams migrating an XLForm-based Objective-C or Swift app to Swift
- Developers who want built-in row types for text, dates, phone numbers and similar inputs
- Apps that need row validation and show/hide logic for fields
Not ideal for
- Developers working on SwiftUI-only projects, since the README describes a UITableView-based approach
- Non-iOS platforms, since the README lists iOS as the platform
- Teams needing a library with recent maintenance, since the last push shown is 2024-09-12 and the latest release is 5.5.0
How to get it
- 1
Install with a package manager
You'll need: Xcode 11+ · Swift 5.0+
Clone the repository
git clone https://github.com/xmartlabs/Eureka - 2
Run it
- Clone the repository or add Eureka through your package manager, as described in the Installation section
- Open the Example project to see working examples
- Create a class that extends FormViewController
- Add a Section and rows to the form property in viewDidLoad
- 3
Get the most out of it
- Use the Result builders syntax (@FormBuilder, @SectionBuilder) as an alternative to operators
- Configure keyboard navigation with navigationOptions, animateScroll and rowKeyboardSpacing
- Use onChange, cellSetup and cellUpdate callbacks to customize row behavior and appearance
- Read the Validations and Dynamically hide and show rows sections of the README for more logic options
- Review the Custom rows section if built-in rows do not fit your needs
Downloads
Strengths
- Concise syntax for defining sections and rows, including operators and result builders
- Includes a catalog of built-in row types and supports custom rows
- Documented with an example project and a blog post, under the MIT license
Trade-offs
- Requires Xcode 11+ and Swift 5.0+, and the README shows no newer requirements
- Metadata shows no binary release, so you install it from source or a package manager
- The README is truncated, so details on some features and row types are not confirmed here
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| Eureka (this) | 11.8k | Library | intermediate | 2.1 years ago | iOS developers building form-heavy screens in Swift |
| NVActivityIndicatorView | 10.7k | Library | beginner | 8 months ago | iOS developers who want a ready-made loading indicator with many styles |
| SwifterSwift | 15.3k | Library | beginner | 4 days ago | Swift developers building iOS or macOS apps who want common helper methods ready to use |
| SVProgressHUD | 12.4k | Library | beginner | 8 months ago | iOS developers who need a quick loading indicator for a blocking task |
| FSCalendar | 10.6k | Library | intermediate | 2.2 years ago | iOS developers who need a calendar or date-picker view in their app |
| SDWebImage | 25.6k | Library | intermediate | 7 months ago | iOS or macOS app developers who need to show remote images in lists or grids |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.