Skip to content

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.

01

Build & dependencies

2 tools

First-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.

02

Dependency injection

2 tools
Factoryour default

Modern, 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 repo

Established container-based DI; flexible, runtime-resolved. Reach for it when you need assembly/module composition.

03

Networking

2 tools
URLSessionour default

The 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.

04

Concurrency

2 tools

async/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.

05

Local storage

3 tools
GRDBour default

A 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.

06

UI & images

2 tools
SwiftUIour default

Declarative UI — our default for new screens. Mind @MainActor isolation.

Async image downloading and caching for SwiftUI/UIKit.

07

Testing

2 tools

First-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.

08

Monitoring & observability

4 tools

Real-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.

09

CI/CD

4 tools
Fastlaneour default

Build, sign (match for certificates), and ship to TestFlight/App Store. Our default for release automation.

GitHub Actionsour default

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.

10

Linting & formatting

3 tools
SwiftLintour default

The de-facto Swift linter — enforce style and catch issues in a build phase or CI. Our default.

SwiftFormatour 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