Apple
The Home Assistant app for iPhone, iPad, Mac, Apple Watch, and CarPlay. What is in the repository, and where to start.
The Apple app brings Home Assistant to iPhone, iPad, Mac, Apple Watch, and CarPlay. Like the Android app, its center is a web view with the Home Assistant frontend. Around it, a lot is native: onboarding, settings, sensors, location, notifications and Live Activities, widgets and controls, App Intents and Shortcuts, the watch app and its complications, and CarPlay.
All of it lives in one repository, home-assistant/iOS, written in Swift. The Mac app is built with Mac Catalyst from the same code.
Everything lives in home-assistant/iOS. It is one Xcode project, HomeAssistant.xcodeproj, with the source in a few main folders:
| Folder | What it is |
|---|---|
Sources/App |
The iPhone and iPad app |
Sources/Shared |
Code every target shares: the API, the database, sensors, notifications |
Sources/Extensions |
Widgets, App Intents, notifications, share, and Matter extensions |
Sources/Watch, Sources/WatchApp |
The Apple Watch app |
Sources/CarPlay |
CarPlay |
Sources/MacBridge |
Mac specific code for the Catalyst build |
Sources/PushServer |
The push relay server, a separate Swift package |
Tests |
Unit, UI, snapshot, and widget tests |
The full list is in architecture.
- Get started: install Xcode and the tools, set up signing, and run the app.
- Architecture: how the code is organized, the
Currentenvironment that holds it together, and how the app talks to Home Assistant. - Targets: the app, the extensions, the watch, CarPlay, and the Mac, and what a change can affect.
- Code style: SwiftFormat, SwiftLint, and the conventions of the project.
- Testing: unit, snapshot, UI, and end-to-end tests, and the patch coverage gate.
- Submit a pull request: the checklist, the template, and the review.
- Continuous integration: what runs on your pull request, and what happens after a merge.
- Releases: from a merged pull request to App Store Connect, and Mac releases on GitHub.
The text of the app is translated on Lokalise, in its own iOS project. You don't need a Mac or Xcode for that. See your first translation.
- The #apple-apps channel on the Home Assistant Discord. Pick the developer role under Channels & Roles first.
- Issues in the iOS repository, for bugs and feature requests.
- Want to test new features early? Join the TestFlight beta.
- For how the app works for users, see the companion app documentation.