Toolset · Swift, SwiftUI, Swift Concurrency
iOS
- Swift
- SwiftUI
- async/await
Modern iOS is Swift + SwiftUI with structured concurrency. We lean on the platform where it's strong (URLSession, Codable, Keychain) and add libraries only where they earn their place.
Where two tools compete, the one marked our default is what we reach for.
Build & dependencies
2 toolsFirst-party dependency manager, integrated into Xcode. Our default — no extra tooling.
Mature dependency manager; still needed for a few libraries that lag on SPM support.
Dependency injection
2 toolsModern, compile-safe DI with a tiny footprint and SwiftUI-friendly property wrappers. Our default.
extension Container {
var apiClient: Factory<APIClient> { self { APIClient() } }
var userRepo: Factory<UserRepository> { self { UserRepository() } }
}
// use it:
@Injected(\.userRepo) private var repoEstablished container-based DI; flexible, runtime-resolved. Reach for it when you need assembly/module composition.
Networking
2 toolsThe built-in HTTP stack with native async/await; for most apps you don't need more. Use uploadTask(fromFile:) for large uploads (see the out-of-bundle blueprint). Our default.
Higher-level networking (retries, interceptors, multipart); worth it when request plumbing gets complex.
Concurrency
2 toolsasync/await, actors, and structured tasks — our default. Actors close the data-race gaps that background callbacks open.
Apple's reactive framework; still useful for streams and bindings.
Local storage
3 toolsA robust, well-documented SQLite toolkit with record types and observation. Our default for structured local data.
Apple's object-graph persistence; SwiftData is the modern SwiftUI-native layer.
Ergonomic Keychain wrapper for tokens and secrets — write access and refresh tokens atomically.
UI & images
2 toolsDeclarative UI — our default for new screens. Mind @MainActor isolation.
Async image downloading and caching for SwiftUI/UIKit.
Testing
2 toolsFirst-party unit and UI testing; Swift Testing is the modern macro-based successor. Our default.
BDD-style specs and expressive matchers when the team prefers that flow.
Monitoring & observability
4 toolsReal-time crash reporting with symbolicated stack traces and impact grouping. Our default for crash monitoring.
Crashes, performance traces, and release health in one product — the pick when app and backend errors share a vendor.
Apple's on-device power, performance, and crash diagnostics, delivered daily — no third-party SDK.
Unified structured logging, and signposts for measuring performance intervals in Instruments.
CI/CD
4 toolsBuild, sign (match for certificates), and ship to TestFlight/App Store. Our default for release automation.
CI on macOS runners for build/test/lint. Our default CI.
Apple's integrated CI/CD, wired into Xcode and TestFlight.
Beta distribution to internal and external testers.
Linting & formatting
3 toolsThe de-facto Swift linter — enforce style and catch issues in a build phase or CI. Our default.
Opinionated auto-formatter for Swift. Our default for formatting.
Apple's official formatter and linter for Swift.
Building on iOS?
We ship production iOSwith exactly this stack. Tell us what you're building.
Start a conversation