Skip to content

Enable Live Activities on iPad (iPadOS 17+)#4574

Merged
bgoncal merged 2 commits into
home-assistant:mainfrom
rwarner:fix/ipad-live-activities
Apr 28, 2026
Merged

Enable Live Activities on iPad (iPadOS 17+)#4574
bgoncal merged 2 commits into
home-assistant:mainfrom
rwarner:fix/ipad-live-activities

Conversation

@rwarner
Copy link
Copy Markdown
Contributor

@rwarner rwarner commented Apr 28, 2026

Summary

iPad has supported Live Activities since iPadOS 17 — the previous userInterfaceIdiom == .pad guard in LiveActivitySettingsView was incorrect. areActivitiesEnabled (the ActivityAuthorizationInfo API) already returns the correct value on iPad, so no platform-specific gate is needed.

Changes:

  • Remove the userInterfaceIdiom == .pad branch from LiveActivitySettingsView that showed a static "Not available on iPad" label. iPad users now see the same enabled/open-settings states as iPhone.
  • Drop the live_activity.status.not_supported localisation key from all 34 locale files and the generated Strings.swift accessor.
  • Update a stale comment in HAAPI.swift that incorrectly stated iPads report false for areActivitiesEnabled.

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

  • On iPhone: Live Activities settings screen shows enabled/open-settings as before
  • On iPad (iPadOS 17+): settings screen no longer shows "Not available on iPad"; shows enabled/open-settings
  • On iPad (iPadOS 17+): Live Activities can be started and updated from Home Assistant
  • On iPad (iPadOS 16 or earlier): areActivitiesEnabled returns false; open-settings button shown
  • Verify live_activity.status.not_supported key is absent from all .lproj files

🤖 Generated with Claude Code

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]>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_supported localization key (and the generated SwiftGen accessor).
  • Update the Live Activities support comment in HAAPI.swift to 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.

Comment thread HomeAssistant.xcodeproj/project.pbxproj
Comment thread HomeAssistant.xcodeproj/project.pbxproj Outdated
Comment thread HomeAssistant.xcodeproj/project.pbxproj
@bgoncal bgoncal enabled auto-merge (squash) April 28, 2026 16:16
@bgoncal
Copy link
Copy Markdown
Member

bgoncal commented Apr 28, 2026

I manually deleted live_activity.status.not_supported in Lokalise ✅

@bgoncal bgoncal merged commit 480dd6d into home-assistant:main Apr 28, 2026
6 checks passed
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@c4dd4f1). Learn more about missing BASE report.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rwarner rwarner deleted the fix/ipad-live-activities branch April 28, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants