Skip to content

FreakUI 0.5.0-beta

Pre-release
Pre-release

Choose a tag to compare

@valzubkov valzubkov released this 10 Aug 13:31

FreakUI 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 FComponentSize scale replaces component-specific size systems.
  • FHorizontalSizingMode and FVerticalSizingMode make hug, fill, and fixed sizing explicit by axis.
  • FSurfaceAppearance composes fill, outline, and elevation across surface-owning components.
  • Theme and typography APIs now follow the shared F naming 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, and FNumberFormat APIs.
  • 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

  • BalanceRow remains application-owned rather than becoming a generic framework component.
  • ToolTipNSView is replaced by native SwiftUI help in client code.
  • TiledBackground and PoweredByFreakUI were 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

  1. Update the package requirement to exact 0.5.0-beta.
  2. Replace theme, typography, size, sizing, formatter, and color foundations first.
  3. Migrate surfaces and controls, then inputs, data presentation, charts, layout, navigation, and feedback.
  4. Replace removed product-specific wrappers with application-owned composition.
  5. Recheck loading, empty, read-only, saving, failure, destructive, accessibility, and Reduce Motion states.
  6. 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