Enable Live Activities on iPad (iPadOS 17+)#4574
Merged
Merged
Conversation
iPad has supported Live Activities since iPadOS 17 — the previous `userInterfaceIdiom == .pad` guard was incorrect. `areActivitiesEnabled` already returns the correct value on iPad; no platform gate is needed. - Remove the "Not available on iPad" branch from LiveActivitySettingsView - Drop the `live_activity.status.not_supported` localisation key from all 34 locale files and the generated Strings.swift accessor - Update stale comment in HAAPI.swift Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
7 tasks
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the iOS app’s Live Activities settings/UI to treat iPad (iPadOS 17+) the same as iPhone by removing an incorrect iPad-specific “not supported” gate, and cleans up related localization/API comments.
Changes:
- Remove the iPad-only “Not available on iPad” state from
LiveActivitySettingsView. - Remove the
live_activity.status.not_supportedlocalization key (and the generated SwiftGen accessor). - Update the Live Activities support comment in
HAAPI.swiftto reflect iPadOS 17+ behavior.
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Sources/Shared/Resources/Swiftgen/Strings.swift | Removes the notSupported accessor for the deleted localization key. |
| Sources/Shared/API/HAAPI.swift | Updates comment describing how Live Activities support is reported to HA. |
| Sources/App/Settings/LiveActivity/LiveActivitySettingsView.swift | Removes iPad idiom gating; iPad now shows enabled vs open-settings states. |
| Sources/App/Resources/bg.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/ca-ES.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/cs.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/cy-GB.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/da.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/de.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/el.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/en.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/en-GB.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/es.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/es-ES.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/es-MX.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/et.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/fi.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/fr.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/he.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/hu.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/id.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/it.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/ja.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/ko-KR.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/ml.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/nb.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/nl.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/pl-PL.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/pt-BR.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/ru.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/sl.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/sv.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/tr.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/uk.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/vi.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/zh-Hans.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| Sources/App/Resources/zh-Hant.lproj/Localizable.strings | Removes live_activity.status.not_supported translation entry. |
| HomeAssistant.xcodeproj/project.pbxproj | Updates DEVELOPMENT_TEAM values in project build configurations. |
Comments suppressed due to low confidence (1)
Sources/App/Settings/LiveActivity/LiveActivitySettingsView.swift:94
- This settings button opens the app’s Settings via UIApplication.shared.open directly, which bypasses the existing URLOpener/OpenSettingsDestination abstraction used elsewhere (centralized logging + easier mocking in tests). Consider switching to URLOpener.shared.openSettings(...) here for consistency.
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
bgoncal
approved these changes
Apr 28, 2026
Member
|
I manually deleted |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4574 +/- ##
======================================
Coverage ? 0
======================================
Files ? 0
Lines ? 0
Branches ? 0
======================================
Hits ? 0
Misses ? 0
Partials ? 0 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
iPad has supported Live Activities since iPadOS 17 — the previous
userInterfaceIdiom == .padguard inLiveActivitySettingsViewwas incorrect.areActivitiesEnabled(theActivityAuthorizationInfoAPI) already returns the correct value on iPad, so no platform-specific gate is needed.Changes:
userInterfaceIdiom == .padbranch fromLiveActivitySettingsViewthat showed a static "Not available on iPad" label. iPad users now see the same enabled/open-settings states as iPhone.live_activity.status.not_supportedlocalisation key from all 34 locale files and the generatedStrings.swiftaccessor.HAAPI.swiftthat incorrectly stated iPads reportfalseforareActivitiesEnabled.ActivityKit handles Dynamic Island availability transparently — the island pill appears on iPhone 14 Pro/Pro Max and all iPhone 15 and later models; on iPad and older iPhones it simply doesn't render, and the activity shows on the Lock Screen only.
References
Test plan
areActivitiesEnabledreturnsfalse; open-settings button shownlive_activity.status.not_supportedkey is absent from all.lprojfiles🤖 Generated with Claude Code