A Swift package for adding a native macOS settings window to your app with minimal code.
Settings is a Swift package that provides a ready-to-use settings window for macOS applications. It solves the problem of implementing a native, HIG-compliant settings interface by handling window management, tab styles, and animations, allowing developers to add settings in minutes instead of days.
macOS app developers using Swift who need to add a settings or preferences window to their applications, particularly those targeting macOS 10.13 and later.
Developers choose Settings because it dramatically reduces implementation time, ensures compliance with macOS design guidelines, and offers a clean API with support for both AppKit and SwiftUI, avoiding the common pitfalls of manual implementation.
⚙ Add a settings window to your macOS app in minutes
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically adheres to Apple's Human Interface Guidelines for settings windows, including proper titling and localization rules, reducing design review time.
Supports both toolbar item and segmented control styles out-of-the-box, allowing developers to choose the UI presentation that fits their app's design without custom code.
Works with both modern SwiftUI views and legacy AppKit view controllers via protocols like SettingsPane, easing migration and supporting mixed codebases.
Handles complex aspects like window restoration, transition animations, and auto-layout behind the scenes, eliminating common implementation pitfalls.
Exclusively for macOS, so it cannot be used for cross-platform apps, requiring separate implementations for iOS or other systems.
Requires careful configuration such as using auto-layout or setting explicit sizes; otherwise, windows may not show, as noted in the known issues section.
Animation features like crossfade transitions do not work on macOS 10.13 and earlier, reducing visual consistency for apps targeting those versions.