Home AssistantHome AssistantContributors
On this page

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.

The repository

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.

Set up

  • Get started: install Xcode and the tools, set up signing, and run the app.

Architecture

  • Architecture: how the code is organized, the Current environment 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.

Write code

  • Code style: SwiftFormat, SwiftLint, and the conventions of the project.

Test

  • Testing: unit, snapshot, UI, and end-to-end tests, and the patch coverage gate.

Ship

Translate

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.

Who to talk to

Was this page helpful?

Last updated on .

Last verified against the source on .