FreakUI 0.5.0-beta
Pre-releaseFreakUI is now available as a complete, dependency-free Swift source package under the MIT License.
This release replaces the earlier binary-distribution model with direct Swift Package Manager installation. It is a deliberately breaking redesign of the 0.5.0-alpha API: obsolete wrappers and deprecated surfaces were removed instead of being carried forward as compatibility aliases.
Requirements
- Swift 6.2 or later
- Xcode with the Swift 6.2 toolchain
- iOS 17 or later
- macOS 14 or later
Installation
Add the package URL in Xcode:
https://github.com/valzubkov/FreakUI.git
Select the exact 0.5.0-beta version.
From another Swift package:
dependencies: [
.package(
url: "https://github.com/valzubkov/FreakUI.git",
exact: "0.5.0-beta"
)
]Then add FreakUI to the target that uses it.
What changed
- The complete framework is distributed as inspectable Swift source with no external package dependencies.
- One seven-step
FComponentSizescale replaces component-specific size systems. FHorizontalSizingModeandFVerticalSizingModemake hug, fill, and fixed sizing explicit by axis.FSurfaceAppearancecomposes fill, outline, and elevation across surface-owning components.- Theme and typography APIs now follow the shared
Fnaming convention and support separate text and number families. - Actions, inputs, content, data display, charts, feedback, layout, and navigation components were rebuilt around consistent public contracts.
- Formatters now live in typed
FDateFormat,FTimeFormat,FDurationFormat, andFNumberFormatAPIs. - Alerts, toasts, haptics, accessibility behavior, minimum hit targets, and Reduce Motion handling were consolidated.
- Direct Swift Package Manager setup, MIT licensing, a separate brand notice, and precise Xcode Quick Help are included in the repository.
Migration from 0.5.0-alpha
There is no compatibility layer. Update a client by category, resolve compiler errors against the new signatures, and verify its interface on every supported platform.
Foundation
| Previous API | 0.5.0-beta |
|---|---|
FreakUITheme |
FTheme |
ThemeManager |
FThemeManager |
SpacingScale |
FSpacingScale |
RadiusScale |
FRadiusScale |
FreakTypography |
FTypography |
FreakFontWeight |
FFontWeight |
FreakFontFaces |
FFontFaces |
FreakTextFontFamily |
FTextFontFamily |
FreakNumberFontFamily |
FNumberFontFamily |
AdaptiveColor |
FAdaptiveColor |
| Component-specific size enums | FComponentSize |
| Optional width/height companions | FHorizontalSizingMode and FVerticalSizingMode |
Generic formatter namespace and DateFormatter helpers |
FDateFormat, FTimeFormat, FDurationFormat, and FNumberFormat |
Custom font files remain owned by the client application. Register them before configuring FThemeManager; custom face values are PostScript names.
Surfaces, controls, and inputs
| Previous API | 0.5.0-beta |
|---|---|
AsCard, AsBlock, AsFrame, FContainerModifier, and wrapper surfaces |
FContainer with FSurfaceAppearance |
Legacy FButton and FMenu signatures |
Rebuilt APIs using FComponentSize, axis sizing, and shared FButtonStyle |
| Custom button-like presentation | FButtonLabel or fButtonModifier |
FToggleWrapper and basicToggle |
FToggle |
Picker wrappers and wheelPickerHeight |
FPicker |
| Disclosure wrappers | FDisclosureGroup |
FTextField and legacy input modifiers |
FInput |
| Legacy text-editor wrappers | FTextEditor |
| Selector wrappers | FSelector |
StepCounter and FStepWrapper |
FStep or FCounter, according to meaning |
| Caption date/time wrappers | FDateTimeCaption |
FInfoWrapper and InfoBlock |
FCallout |
Data, charts, layout, and feedback
| Previous API | 0.5.0-beta |
|---|---|
| Legacy generic data rows | FDataRow, FDataLabel, FDataCell, or FDashboardCell |
CategoryRow |
FCategory |
TransactionRow |
FTransactionRow with optional FCategory |
| Single, dashed, and circular progress wrappers | FProgress |
| Nutrition-style target progress | FGoalProgress |
ProgressBarDouble |
FProportionBar |
| Pie and donut wrappers | FPieChart |
| Cartesian chart modifier | fCartesianChart with explicit axes, scrolling, sizing, and surface appearance |
| Legacy table signatures | FTableHeader and FTableCell with typed sorting or filtering controls |
Native List-based package composition |
FList |
Legacy FTitle, FTitleGroup, and FSection signatures |
Rebuilt semantic title and section APIs |
FViewLayoutHierarchy |
FViewLayoutRole |
navigationBarStyle |
fNavigationBarStyle |
navigationBarParentView |
fParentNavigationBar |
navigationBarChildView |
fChildNavigationBar |
navigationBarSheetView |
fModalNavigationBar |
rightToolbar and leftToolbar |
fRightToolbar and fLeftToolbar |
ToolbarAccept and ToolbarDismiss |
FToolbarAction |
FPosition.bottom |
FBottomOverlay |
FPosition.toast, ToastView, and ToastManager |
FToast and FToastManager |
AppAlert, AnyAppAlert, AlertType, and showCustomAlert |
FAlert, FAlertAction, and fAlert(item:) |
HapticManager |
FHapticManager and optional FHapticImpact values |
Removed without replacement
BalanceRowremains application-owned rather than becoming a generic framework component.ToolTipNSViewis replaced by native SwiftUI help in client code.TiledBackgroundandPoweredByFreakUIwere removed.- Generic top-position behavior, blur helpers, collision-prone view modifiers, and obsolete input helpers were removed.
- Side-stroke and diagonal geometry remain internal experimental foundations and are not public API.
Recommended migration order
- Update the package requirement to exact
0.5.0-beta. - Replace theme, typography, size, sizing, formatter, and color foundations first.
- Migrate surfaces and controls, then inputs, data presentation, charts, layout, navigation, and feedback.
- Replace removed product-specific wrappers with application-owned composition.
- Recheck loading, empty, read-only, saving, failure, destructive, accessibility, and Reduce Motion states.
- Build and exercise the client on iOS and macOS rather than assuming one platform proves both.
Freak Workouts was used as the integration pilot on iOS and macOS. The package previews were also reviewed across the current public component surface. Direct resolution from the published tag in a clean external checkout is the final post-publication verification step.
Beta status
The API may continue to change before 1.0.0. Pin this beta exactly and review the release notes before updating.
No binary framework or additional release asset is required. GitHub's source archives and the repository URL are the distribution path.
License and brand
FreakUI source is available under the MIT License and can be used or modified in proprietary commercial applications. The FreakUI and The Freak Company names and logos are covered separately by the repository's brand notice.
Full comparison: 0.5.0-alpha...0.5.0-beta