What is SwiftyConfiguration?
SwiftyConfiguration is a lightweight library for managing application configurations in Swift (iOS/macOS). It allows you to move settings (API keys, URLs, environment parameters) into separate files and load them at runtime. Unlike standard UserDefaults or Info.plist, the library supports strong typing, multiple environments (dev/staging/prod), and automatic code generation.
Why is this needed?
In real projects, configuration is often scattered throughout the code: some parameters are in Constants.swift, others in UserDefaults, and still others in .xcconfig. This leads to confusion, merge errors, and difficulties supporting different backends. SwiftyConfiguration solves the problem of a single source of truth for all application settings.
Installation
Add the library via Swift Package Manager in Xcode: File → Add Packages → enter the repository URL. Or via Package.swift:
dependencies: [ .package(url: "https://github.com/your-repo/SwiftyConfiguration.git", from: "1.0.0")]After installation, import the module: import SwiftyConfiguration.
Main Features
- YAML/JSON/TOML Support — configurations in a readable format.
- Type Safety — automatic deserialization into Swift structures.
- Environments — switch between dev/staging/prod without changing code.
- Live Updates — subscribe to configuration changes at runtime.
- Caching — memoization for faster access.
Code Example
Create a config.yaml file in the project root:
api: baseUrl: "https://api.example.com" timeout: 30analytics: enabled: true appKey: "abc123"Define the model in Swift:
import SwiftyConfiguration
struct AppConfig: Codable { let api: API let analytics: Analytics
struct API: Codable { let baseUrl: String let timeout: Int }
struct Analytics: Codable { let enabled: Bool let appKey: String }}Load the configuration:
let config = try Configuration.load(file: "config", type: .yaml, environment: .development)print(config.api.baseUrl) // "https://api.example.com" To switch to production, simply change the environment parameter or add a config.prod.yaml file.
When to use?
- Projects with multiple backends (dev/staging/prod).
- Applications where configuration changes without a release (A/B tests, feature toggles).
- Microservice architecture on Swift (Vapor, Kitura).
- Team development — a single standard for all developers.
The library is ideal for iOS and macOS projects where code cleanliness and configuration flexibility are important. Avoid using it for super-simple applications with a single constant — UserDefaults will suffice there. But for anything more complex than "Hello World", SwiftyConfiguration will save hours of debugging.