Skip to content

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
Step-by-step guide: how to use EurekaInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
Eureka (this)11.8kLibraryintermediate2.1 years agoiOS developers building form-heavy screens in Swift
NVActivityIndicatorView10.7kLibrarybeginner8 months agoiOS developers who want a ready-made loading indicator with many styles
SwifterSwift15.3kLibrarybeginner4 days agoSwift developers building iOS or macOS apps who want common helper methods ready to use
SVProgressHUD12.4kLibrarybeginner8 months agoiOS developers who need a quick loading indicator for a blocking task
FSCalendar10.6kLibraryintermediate2.2 years agoiOS developers who need a calendar or date-picker view in their app
SDWebImage25.6kLibraryintermediate7 months agoiOS 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.