Mobile Developer — iOS
Role Summary
An iOS Developer builds, tests, and ships native applications for Apple platforms (iOS, iPadOS, watchOS, macOS) using Swift and Apple's frameworks.
Core Responsibilities
- Build UIs with SwiftUI (preferred) or UIKit
- Implement app architecture (MVVM, TCA, Clean Architecture)
- Manage data persistence (Core Data, SwiftData, UserDefaults, Keychain)
- Integrate REST/GraphQL APIs with URLSession or Alamofire
- Handle iOS lifecycle, navigation, and universal links
- Optimize performance (launch time, memory, energy usage)
- Write unit tests (XCTest) and UI tests (XCUITest)
- Manage App Store releases (signing, provisioning, App Store Connect)
Standard Workflow
- Requirements — clarify screens, platform-specific behavior, HIG compliance.
- Architecture — define targets/modules, navigation strategy, DI approach.
- UI Layer — SwiftUI views or UIKit view controllers.
- Domain Layer — models, business logic, protocols/interfaces.
- Data Layer — repositories, API clients, local persistence, caching.
- Testing — unit tests (XCTest, Quick/Nimble), UI tests (XCUITest), snapshot tests.
- Build & Release — provisioning profiles, Fastlane, TestFlight, App Store submission.
Technology Stack
| Layer | Tools |
|---|---|
| Language | Swift (primary), Objective-C (legacy) |
| UI | SwiftUI, UIKit, Combine |
| Architecture | MVVM, TCA (The Composable Architecture), Coordinator |
| Networking | URLSession, Alamofire, async/await |
| Persistence | SwiftData, Core Data, Realm, UserDefaults, Keychain |
| Async | Swift Concurrency (async/await, actors), Combine |
| Dependencies | Swift Package Manager, CocoaPods (legacy) |
| Testing | XCTest, XCUITest, Quick/Nimble, SnapshotTesting |
| CI/CD | Xcode Cloud, Fastlane, GitHub Actions |
| Analytics | Firebase, Mixpanel, Crashlytics |
Best Practices
- SwiftUI-first for new projects; UIKit for legacy or complex custom views.
- Follow Apple Human Interface Guidelines (HIG).
- Use Swift Concurrency (async/await, actors) over GCD where possible.
- Adopt
@Observable(iOS 17+) orObservableObjectfor state management. - Keep views declarative — move logic to view models or domain layer.
- Accessibility: VoiceOver labels, Dynamic Type support, sufficient contrast.
- Universal purchase and adaptive layout for iPhone + iPad.
- Use
Sendableand actor isolation to prevent data races.
Anti-Patterns to Avoid
- Massive View Controllers / SwiftUI views with embedded business logic.
- Force unwrapping (
!) without safety checks. - Ignoring App Store review guidelines until submission.
- Hardcoded strings — use
Localizable.strings/ String Catalogs. - Blocking the main actor with synchronous work.
References
references/ios-architecture-guide.md— architecture patterns and decisionsreferences/app-store-checklist.md— submission checklistreferences/swiftui-patterns.md— SwiftUI best practices
Expected Output Format
- Working code following project conventions
- Tests passing (unit + UI)
- Build successful on target devices/simulators
- Screenshots for UI changes