# Native iOS — Swift + SwiftUI
URL: https://wwadd.dev/stacks/ios-swift-swiftui
Last verified: 2026-09-30

An iOS app with SwiftUI screens and Swift services around Apple SDKs, for teams whose device integration matters more than sharing one UI across platforms.

## When to use it
- iOS is the first platform being implemented
- Bluetooth, camera, AR, or other device APIs are central to the product
- The team can maintain Apple-specific code and test on physical devices
- A separate Android implementation is acceptable if it is needed later

## How the pieces fit
SwiftUI renders state-driven screens; Swift services own device connections, networking, and persistence. Keep permissions and lifecycle handling outside view bodies, and bridge to UIKit when a control or SDK needs it. Use the platform API appropriate to the task rather than treating a background task as an always-running process: iOS decides when many kinds of background work can run. Prototype the riskiest hardware integration on a real device before building the rest of the interface. Plan for Xcode on macOS and Apple's signing and distribution workflow.

## The tech and its role
- Swift: App logic and native SDK integration
- SwiftUI: State-driven Apple-platform screens
- UIKit interoperability: Existing controls and SDKs that need UIKit
- Apple device frameworks: Task-specific hardware access with permissions and lifecycle handling
- Xcode: Builds, signing, debugging, and device testing

## Real-world examples
- Ice Cubes: The Mastodon client's public repository describes a SwiftUI app for Apple platforms, with device-side notifications and account credentials in the keychain. SwiftUI app example; not evidence of Bluetooth or AR functionality. (source: https://github.com/Dimillian/IceCubesApp)
- Fruta: Apple's sample demonstrates a feature-rich SwiftUI app and App Clip. A learning sample, not a commercial product or a template for unrestricted background execution. (source: https://developer.apple.com/documentation/appclip/fruta-building-a-feature-rich-app-with-swiftui)

## Skip if
Skip if Android is the first target, or one shared UI implementation across iOS and Android is a hard requirement.

