O que é SwiftyConfiguration?
SwiftyConfiguration é uma biblioteca leve para gerenciar configurações de aplicativos em Swift (iOS/macOS). Ela permite externalizar configurações (chaves de API, URLs, parâmetros de ambiente) em arquivos separados e carregá-los em tempo de execução. Diferente do UserDefaults padrão ou do Info.plist, a biblioteca oferece tipagem forte, múltiplos ambientes (dev/staging/prod) e geração automática de código.
Por que isso é necessário?
Em projetos reais, a configuração geralmente está espalhada pelo código: alguns parâmetros ficam em Constants.swift, outros no UserDefaults, e outros ainda no .xcconfig. Isso causa confusão, erros durante merges e dificuldades para dar suporte a diferentes backends. SwiftyConfiguration resolve o problema da fonte única da verdade (single source of truth) para todas as configurações do aplicativo.
Instalação
Adicione a biblioteca via Swift Package Manager no Xcode: File → Add Packages → insira a URL do repositório. Ou através do Package.swift:
dependencies: [ .package(url: "https://github.com/your-repo/SwiftyConfiguration.git", from: "1.0.0")]Após a instalação, importe o módulo: import SwiftyConfiguration.
Principais funcionalidades
- Suporte a YAML/JSON/TOML — configurações em formato legível.
- Type safety — desserialização automática em structs Swift.
- Ambientes — alternância entre dev/staging/prod sem alterar o código.
- Atualização ao vivo — assinatura de mudanças na configuração em tempo de execução.
- Cache — memoização para acelerar o acesso.
Exemplo de código
Crie um arquivo config.yaml na raiz do projeto:
api: baseUrl: "https://api.example.com" timeout: 30analytics: enabled: true appKey: "abc123"Defina o modelo em 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 }}Carregue a configuração:
let config = try Configuration.load(file: "config", type: .yaml, environment: .development)print(config.api.baseUrl) // "https://api.example.com" Para alternar para production, basta alterar o parâmetro environment ou adicionar o arquivo config.prod.yaml.
Quando usar?
- Projetos com múltiplos backends (dev/staging/prod).
- Aplicativos onde a configuração muda sem um novo release (testes A/B, feature toggles).
- Arquitetura de microsserviços em Swift (Vapor, Kitura).
- Desenvolvimento em equipe — um padrão único para todos os desenvolvedores.
A biblioteca é ideal para projetos iOS e macOS onde a pureza do código e a flexibilidade de configuração são importantes. Evite usá-la para aplicativos muito simples com uma única constante — nesse caso, UserDefaults é suficiente. Mas para tudo que for mais complexo que "Hello World", SwiftyConfiguration economizará horas de depuração.
Também na biblioteca
Autorização e Autenticação em C++: Bibliotecas e Exemplos Práticos
Métricas Prometheus em Node.js: biblioteca prom-client para monitoramento
Envio de SMS em Go (Golang): Biblioteca de API golang-sms
Envio de SMS em JavaScript (Node.js): API, bibliotecas e exemplos de código
CORS para JavaScript (Node.js): guia completo com exemplos