iOS Developer Competency Matrix
Use this skill as a review + implementation checklist when building features in this repo.
1) Quick triage questions (pick the right lane)
Answer these before coding:
- Is this mostly UI (SwiftUI/UIKit), domain logic, data/network, or platform integration?
- Do we need async work? If yes: can we use structured concurrency end-to-end?
- What are the states (loading/empty/error/success) and how are they represented?
- What must be testable (unit/UI/snapshot) and what is the acceptance criteria?
2) Swift language & concurrency rules
- Prefer Swift concurrency (
async/await) over nested completion handlers. - UI mutations on the main actor (
@MainActor/await MainActor.run). - Use actors or isolated types for shared mutable state.
- Watch for ARC traps: closures capturing
self→ use[weak self]when needed.
3) UI (SwiftUI + UIKit)
- SwiftUI: choose the right state tool (
@State,@Binding,@StateObject,@ObservedObject,@Environment). - UIKit: respect lifecycle, safe areas, and Auto Layout anchors.
- Interop:
- SwiftUI in UIKit:
UIHostingController - UIKit in SwiftUI:
UIViewRepresentable/UIViewControllerRepresentable
- SwiftUI in UIKit:
4) Architecture & patterns
Default opinionated picks (override only with reason):
- SwiftUI screens: MVVM (View + ViewModel + injected services)
- Navigation complexity: add a Coordinator (or a routing layer)
- Scale/enterprise modules: consider Clean boundaries (domain/use-cases, repositories)
- Dependency injection: start with initializer injection; add a container only when it pays off.
5) Networking & data
- Prefer
URLSession+Codablewith explicit domain errors. - Model API errors → map to user-facing messages at the edge.
- Persistence: SwiftData/Core Data for relational graphs; Keychain for secrets; UserDefaults for prefs.
6) Platform integration
- Understand scene lifecycle vs app delegate responsibilities.
- For background work, pick the correct API (and keep expectations realistic).
- Device features (camera/location/push/biometrics): treat permission flows + failure paths as first-class.
7) Quality: tests, debugging, performance
- Unit tests for logic; UI tests for key flows; snapshot tests for UI regressions (if used here).
- Use Instruments for leaks/time/energy when performance matters.
8) Release readiness
- HIG alignment + accessibility basics.
- Review Guideline landmines: privacy disclosures, permissions strings, incomplete flows.
- CI/CD: prefer SPM; automate build/test; keep signing/provisioning sane.
References
- Deep checklists + snippets:
references/checklists.md
Converted and distributed by TomeVault — claim your Tome and manage your conversions.