FreakUI

The open-source SwiftUI foundation for iOS and macOS.

FreakUI is a dependency-free Swift package for building coherent SwiftUI interfaces across iOS and native macOS. Version 0.5.0-beta is the first complete, MIT-licensed public beta.

FreakUI includes themes, semantic color, typography, sizing, controls, inputs, data presentation, charts, feedback, layout, and navigation helpers. Your application continues to own product models, business rules, data access, subscriptions, and product-specific composition.

Requirements

  • Swift 6.2 or later
  • Xcode with the Swift 6.2 toolchain
  • iOS 17 or later
  • macOS 14 or later

Current release

Pin 0.5.0-beta exactly. The release is intentionally breaking from 0.5.0-alpha, and the API may continue to evolve before 1.0.0.

Source of truth:

These guides describe the published 0.5.0-beta tag. Xcode Quick Help contains exact symbol parameters and defaults at the call site, while the GitHub release records compatibility and migration details.

What FreakUI owns

  • Application-wide semantic themes and separate text/number typography
  • One seven-step FComponentSize hierarchy
  • Strict horizontal and vertical sizing modes
  • Composable surface fill, outline, and elevation
  • Actions, menus, inputs, selectors, toggles, counters, and sliders
  • Content, typed values, data rows, dashboard cells, tables, and lists
  • Progress, proportion, pie, donut, and Cartesian chart presentation
  • Callouts, empty states, alerts, toasts, sections, containers, and navigation helpers

What stays app-owned

FreakUI does not own Firebase collections, billing policy, authentication, app routes, product models, or domain-specific rows. Compose those concerns in your application using FreakUI's domain-neutral contracts.

Open source and brand

The source code is available under the MIT License. The FreakUI and The Freak Company names and logos are covered separately by the brand notice.

Next steps

  1. Install the package.
  2. Configure a theme.
  3. Build a first screen.
  4. Browse the component reference, beginning with Button.