JUST ENDED
|

CarPlay Q&A

Connect with Apple engineers in the CarPlay Q&A on the Apple Developer Forums.

Post

Replies

Boosts

Views

Activity

Scrolling Behavior for Section Headers
When using the new list section headers that include an image, title, subtitle, and action button (e.g., on playlist entity pages), the header remains fixed while the underlying content scrolls. This results in visual overlap between the header and list items, creating readability issues that can appear visually broken during interaction. Is this a known issue, and is there a workaround or fix planned?
1
0
34
2h
Video Now Playing View Configuration
I have questions about how the Video Now Playing experience for music apps is configured and what controls are available: Subtitles / Closed Captions — Does the Video NPV support subtitle or closed caption selection? Playback Speed — Is playback speed control surfaced in the CarPlay Video NPV UI? Playback Controls — Beyond play/pause and seek, what controls are available on the Video NPV? Fallback Behavior — When CPSessionConfiguration.supportsVideoPlayback becomes false mid-session (e.g., vehicle starts moving), how does the transition from video to audio-only Now Playing work? Is there a delegate callback, or should we observe supportsVideoPlayback via KVO? Configuration Scope — Is the video playback surface fully driven by AirPlay streaming + CPPlaybackConfiguration, or are there additional configuration points we should be aware of for controlling the video NPV experience?
1
0
40
3h
Simulator and automatization
I'm looking for options concerning this matter, aiming to have automatized tests in a navigation app. I wasn't able to control either the iOS simulator's extended display nor the CarPlay Simulator (additional tools) via available CLI commands. I couldn’t scan for AX elements either. Closest thing I found is to control the macOS window, take screenshots and simulate user gestures using an agentic workflow. May I have missed something regarding already available tooling?
1
0
27
3h
Up Next Button Visibility Not Updating Dynamically
The CPNowPlayingTemplate.upNextButtonEnabled property does not consistently hide the Up Next (queue) button when set to false at runtime. We can reproduce this reliably: Start playback of a playlist (queue is available, upNextButtonEnabled = true). Switch to AI DJ playback (queue is not applicable, set upNextButtonEnabled = false). The Up Next button remains visible on the Now Playing screen. The button only disappears after the user navigates away from and back to the Now Playing view. This appears to be a state refresh issue where the template does not re-render when the property is toggled during an active session. Is this a known issue? Is there a recommended workaround to force the Now Playing template to refresh its button visibility without requiring the user to navigate away? Should we be using a different mechanism to dynamically control the visibility of the Up Next button based on playback context?
1
0
20
3h
Allow CallKit-logged calls to be called back as native PSTN calls from Recents and CarPlay
We build a call-screening app for VoIP-forwarded calls. Inbound calls are forwarded to our service, screened, and surfaced to the user via CallKit (reportNewIncomingCall) with includesCallsInRecents = true and a CXHandle(type: .phoneNumber, …) carrying the real caller number. Because the call is forwarded at the network before it reaches the handset, the user's native carrier call log never records it — CallKit is the only way the call appears in Recents. The gap: When the user taps "call back" on one of these entries (in the native Phone app or in CarPlay), iOS delivers an INStartCallIntent to our app. Our app's only way to then place a normal cellular/PSTN call is to open a tel: URL, which requires the app to be foregrounded. On the phone this works (with an app launch + the system "Call?" confirmation). On CarPlay it cannot work at all, because CarPlay does not foreground third-party apps or open tel: URLs, and there is no API to initiate a PSTN/cellular call from the background. There is currently no way for an app-logged (CallKit) call to be called back as a native PSTN call — the callback is always routed back into the app, and the app has no sanctioned PSTN-dial path on CarPlay. Requested enhancement (any of these would solve it): A way to mark a CallKit-logged call (e.g., a flag on CXProviderConfiguration or per-call on the handle) such that calling it back from Recents/CarPlay dials the cellular line directly (treating it like a native carrier-logged number), instead of routing INStartCallIntent to the app; or An API to write a call to Recents as a native, PSTN-dialable entry associated with the cellular line; or A sanctioned way, when handling the callback INStartCallIntent on CarPlay, for the app to request a PSTN cellular callback (with the standard user confirmation) rather than only a VoIP call. Why existing APIs don't suffice: CXHandle(type: .phoneNumber) + includesCallsInRecents correctly display the number, and INStartCallIntent correctly delivers the callback — but the callback can only become a VoIP call (via CXStartCallAction) or an app-foregrounded tel: open. Neither yields a native PSTN call on CarPlay. Routing the callback through VoIP is not viable for us: it would present our trunk's caller ID (or require per-user STIR/SHAKEN caller-ID verification), so the user's own number would not appear to the person they call back. User impact (safety & accessibility): Our users skew older (55–65) and rely on the app to screen scam/spam calls. A user driving with CarPlay currently cannot safely return a legitimate screened call — they must pick up the phone, wait for the app to open, and tap a confirmation. This defeats the hands-free safety purpose of CarPlay for exactly the population most exposed to phone scams. For comparison: On Android, a self-managed ConnectionService with EXTRA_LOG_SELF_MANAGED_CALLS lets a screened call appear in the system dialer and be carrier-dialed back with a single tap from Android Auto, no app launch and no confirmation — preserving the user's own caller ID natively. iOS has no equivalent for app-logged calls. Steps to reproduce (current behavior): App reports an incoming call via CallKit with includesCallsInRecents = true and a .phoneNumber handle. End the call so it lands in Recents. In CarPlay, open Recents and tap the entry to call back. Observed: the callback is delivered to the app as INStartCallIntent; the only PSTN path (tel:) cannot open on CarPlay, so no call is placed. Expected: a native PSTN/cellular callback (one confirmation at most), as with a carrier-logged number. Wondering...can this be considered for a future update?
1
0
14
3h
CarPlay Video Support
I was looking into testing the new video playback feature but see that some cars doesn't show it. Will it be a future update that pushes support for all vehicles or will it be up to the manufacture
2
0
27
3h
Custom Toolbar Items
Why can't you include a custom toolbar item on the parent view of a Tab? I got around this by inserting a bespoke item at the top of my list template to represent the action that would have gone in the toolbar item, and then on all subsequent child views I display the toolbar item as intended. This works, but it feels a little clunky. Any guidance here? Thanks!
2
0
27
3h
Template images dropped after carplayd degrade / scene-create watchdog — placeholder glyphs
CarPlay template images falling back to the generic placeholder glyph I have a template CarPlay app (CPTabBarTemplate → CPListTemplates, with tabs use CPListImageRowItem with ~6–7 CPListImageRowItemRowElement chips per row, each a UIGraphicsImageRenderer bitmap we update on a dirty-checked ~2 Hz loop). Customers intermittently see every tile image revert to the system music-note placeholder while text labels keep rendering. From submitted sysdiagnose files, I've isolated two paths to it and want to know if I'm doing something wrong or if this is a framework bug: After extended sessions, all template images go blank and stay blank across app force-quit and even delete-and-reinstall — only an iPhone reboot restores them. That points at persistent carplayd-side state surviving my process. Is there a public-API signal to detect this degraded state, or a way to force the daemon to rebind my images, short of asking the user to reboot? At connect, I have sometimes hit a scene-create watchdog kill (0x8BADF00D, 10 s wall-clock) building the image-row tab; the host respawns and shows placeholders during the ~20 s rebuild. The hung main-thread stack bottoms out in CUICatalog / CUIMutableStructuredThemeStore renditionWithKey: reached via CPListImageRowItemElement.image, and I see "CUIThemeStore: No theme registered with id=0" once per launch. Is reconfiguring one element re-resolving the whole row's images expected behavior? What's the recommended pattern to populate images into CPListImageRowItem template at connect without tripping the scene-create watchdog? Thanks for your help!
2
0
18
3h
CarPlay Now Playing for continuous audio
I work on an ambient sound mixer (looping nature sounds that play continuously, often for hours). There's no meaningful track duration, so a progress bar doesn't represent anything real. I'm aware of MPNowPlayingInfoPropertyIsLiveStream, but our content is continuous rather than live, and the LIVE treatment seems semantically wrong for local looping audio. Three questions: Is isLiveStream the sanctioned way for continuous-but-not-live content to opt out of the scrubber? We'd want to toggle it off when a play timer is active (showing the sleep-timer countdown in the progress bar). Is flipping that flag mid-session supported? Is there a better-fitting presentation I'm missing? Thanks!
1
0
31
3h
CarPlay request category for significant POI apps
For apps that display significant points of interest for a specific category, say breweries, or the places the user frequently visits, what is the best category to submit against the entitlement form? These apps are not quite navigation as they invoke Apple Maps, and they’re not for finding “parking” but a different type of map item category. The app would display specific markers for these map items, voice to search, and then link to Apple Maps for directions. This compliments existing iOS apps. I don’t want to encourage phone usage and being voice search and positional awareness to nearby POI that matter to the CarPlay screen.
1
0
10
3h
CPListTemplateDetailsHeader — Number of Action Buttons
CPListTemplateDetailsHeader supports action buttons for entity pages (e.g., playlist or album detail views). Currently, it appears that the header supports a limited number of trailing action buttons. What is the officially supported maximum number of action buttons on CPListTemplateDetailsHeader? If currently limited to one, is there a plan to support two action buttons to cover common media patterns like Play + Shuffle? Are there alternative patterns the team recommends for presenting multiple primary actions on entity pages within the current template constraints?
2
0
20
3h
Scrolling Behavior for Section Headers
When using the new list section headers that include an image, title, subtitle, and action button (e.g., on playlist entity pages), the header remains fixed while the underlying content scrolls. This results in visual overlap between the header and list items, creating readability issues that can appear visually broken during interaction. Is this a known issue, and is there a workaround or fix planned?
Replies
1
Boosts
0
Views
34
Activity
2h
Video Now Playing View Configuration
I have questions about how the Video Now Playing experience for music apps is configured and what controls are available: Subtitles / Closed Captions — Does the Video NPV support subtitle or closed caption selection? Playback Speed — Is playback speed control surfaced in the CarPlay Video NPV UI? Playback Controls — Beyond play/pause and seek, what controls are available on the Video NPV? Fallback Behavior — When CPSessionConfiguration.supportsVideoPlayback becomes false mid-session (e.g., vehicle starts moving), how does the transition from video to audio-only Now Playing work? Is there a delegate callback, or should we observe supportsVideoPlayback via KVO? Configuration Scope — Is the video playback surface fully driven by AirPlay streaming + CPPlaybackConfiguration, or are there additional configuration points we should be aware of for controlling the video NPV experience?
Replies
1
Boosts
0
Views
40
Activity
3h
number of grid items based on screen size
Is there any way to know the exact number of grid items that will fit across before you render your template? I'm currently delivering 7 items to accommodate the largest screen sizes, but on smaller screens 3 of these are wasted per row.
Replies
1
Boosts
1
Views
23
Activity
3h
Simulator and automatization
I'm looking for options concerning this matter, aiming to have automatized tests in a navigation app. I wasn't able to control either the iOS simulator's extended display nor the CarPlay Simulator (additional tools) via available CLI commands. I couldn’t scan for AX elements either. Closest thing I found is to control the macOS window, take screenshots and simulate user gestures using an agentic workflow. May I have missed something regarding already available tooling?
Replies
1
Boosts
0
Views
27
Activity
3h
Unintended Condensed Grid Items Border Rendering
Condensed grid items and circular grid images with transparent backgrounds render with a subtle border around their edges, creating unintended visual artifacts. Is this a known issue, and is there a workaround or fix planned?
Replies
1
Boosts
0
Views
9
Activity
3h
Resolving server-backed entity catalogs
For large, frequently updated catalogs that live on a server, should Siri resolution use EntityStringQuery with disambiguation, or is IndexedEntity required for acceptable quality in the car?
Replies
1
Boosts
0
Views
24
Activity
3h
Up Next Button Visibility Not Updating Dynamically
The CPNowPlayingTemplate.upNextButtonEnabled property does not consistently hide the Up Next (queue) button when set to false at runtime. We can reproduce this reliably: Start playback of a playlist (queue is available, upNextButtonEnabled = true). Switch to AI DJ playback (queue is not applicable, set upNextButtonEnabled = false). The Up Next button remains visible on the Now Playing screen. The button only disappears after the user navigates away from and back to the Now Playing view. This appears to be a state refresh issue where the template does not re-render when the property is toggled during an active session. Is this a known issue? Is there a recommended workaround to force the Now Playing template to refresh its button visibility without requiring the user to navigate away? Should we be using a different mechanism to dynamically control the visibility of the Up Next button based on playback context?
Replies
1
Boosts
0
Views
20
Activity
3h
Secondary Navigation Buttons on Now Playing View (Top Right Corner)
Is there support (current or planned) for multiple navigation buttons in the top-right corner of CPNowPlayingTemplate? If multiple buttons are supported, what is the maximum number, and can they use icons instead of (or in addition to) text labels?
Replies
1
Boosts
0
Views
19
Activity
3h
Allow CallKit-logged calls to be called back as native PSTN calls from Recents and CarPlay
We build a call-screening app for VoIP-forwarded calls. Inbound calls are forwarded to our service, screened, and surfaced to the user via CallKit (reportNewIncomingCall) with includesCallsInRecents = true and a CXHandle(type: .phoneNumber, …) carrying the real caller number. Because the call is forwarded at the network before it reaches the handset, the user's native carrier call log never records it — CallKit is the only way the call appears in Recents. The gap: When the user taps "call back" on one of these entries (in the native Phone app or in CarPlay), iOS delivers an INStartCallIntent to our app. Our app's only way to then place a normal cellular/PSTN call is to open a tel: URL, which requires the app to be foregrounded. On the phone this works (with an app launch + the system "Call?" confirmation). On CarPlay it cannot work at all, because CarPlay does not foreground third-party apps or open tel: URLs, and there is no API to initiate a PSTN/cellular call from the background. There is currently no way for an app-logged (CallKit) call to be called back as a native PSTN call — the callback is always routed back into the app, and the app has no sanctioned PSTN-dial path on CarPlay. Requested enhancement (any of these would solve it): A way to mark a CallKit-logged call (e.g., a flag on CXProviderConfiguration or per-call on the handle) such that calling it back from Recents/CarPlay dials the cellular line directly (treating it like a native carrier-logged number), instead of routing INStartCallIntent to the app; or An API to write a call to Recents as a native, PSTN-dialable entry associated with the cellular line; or A sanctioned way, when handling the callback INStartCallIntent on CarPlay, for the app to request a PSTN cellular callback (with the standard user confirmation) rather than only a VoIP call. Why existing APIs don't suffice: CXHandle(type: .phoneNumber) + includesCallsInRecents correctly display the number, and INStartCallIntent correctly delivers the callback — but the callback can only become a VoIP call (via CXStartCallAction) or an app-foregrounded tel: open. Neither yields a native PSTN call on CarPlay. Routing the callback through VoIP is not viable for us: it would present our trunk's caller ID (or require per-user STIR/SHAKEN caller-ID verification), so the user's own number would not appear to the person they call back. User impact (safety & accessibility): Our users skew older (55–65) and rely on the app to screen scam/spam calls. A user driving with CarPlay currently cannot safely return a legitimate screened call — they must pick up the phone, wait for the app to open, and tap a confirmation. This defeats the hands-free safety purpose of CarPlay for exactly the population most exposed to phone scams. For comparison: On Android, a self-managed ConnectionService with EXTRA_LOG_SELF_MANAGED_CALLS lets a screened call appear in the system dialer and be carrier-dialed back with a single tap from Android Auto, no app launch and no confirmation — preserving the user's own caller ID natively. iOS has no equivalent for app-logged calls. Steps to reproduce (current behavior): App reports an incoming call via CallKit with includesCallsInRecents = true and a .phoneNumber handle. End the call so it lands in Recents. In CarPlay, open Recents and tap the entry to call back. Observed: the callback is delivered to the app as INStartCallIntent; the only PSTN path (tel:) cannot open on CarPlay, so no call is placed. Expected: a native PSTN/cellular callback (one confirmation at most), as with a carrier-logged number. Wondering...can this be considered for a future update?
Replies
1
Boosts
0
Views
14
Activity
3h
CarPlay Video Support
I was looking into testing the new video playback feature but see that some cars doesn't show it. Will it be a future update that pushes support for all vehicles or will it be up to the manufacture
Replies
2
Boosts
0
Views
27
Activity
3h
Custom Toolbar Items
Why can't you include a custom toolbar item on the parent view of a Tab? I got around this by inserting a bespoke item at the top of my list template to represent the action that would have gone in the toolbar item, and then on all subsequent child views I display the toolbar item as intended. This works, but it feels a little clunky. Any guidance here? Thanks!
Replies
2
Boosts
0
Views
27
Activity
3h
New CarPlay entitlement categories?
Are there plans to ever open up any more categories of apps in CarPlay? In particular, while Calendar.app is allowed in CarPlay, there is no accepted category that a third party calendar app could fall under to have the ability to do the same thing?
Replies
1
Boosts
0
Views
18
Activity
3h
Template images dropped after carplayd degrade / scene-create watchdog — placeholder glyphs
CarPlay template images falling back to the generic placeholder glyph I have a template CarPlay app (CPTabBarTemplate → CPListTemplates, with tabs use CPListImageRowItem with ~6–7 CPListImageRowItemRowElement chips per row, each a UIGraphicsImageRenderer bitmap we update on a dirty-checked ~2 Hz loop). Customers intermittently see every tile image revert to the system music-note placeholder while text labels keep rendering. From submitted sysdiagnose files, I've isolated two paths to it and want to know if I'm doing something wrong or if this is a framework bug: After extended sessions, all template images go blank and stay blank across app force-quit and even delete-and-reinstall — only an iPhone reboot restores them. That points at persistent carplayd-side state surviving my process. Is there a public-API signal to detect this degraded state, or a way to force the daemon to rebind my images, short of asking the user to reboot? At connect, I have sometimes hit a scene-create watchdog kill (0x8BADF00D, 10 s wall-clock) building the image-row tab; the host respawns and shows placeholders during the ~20 s rebuild. The hung main-thread stack bottoms out in CUICatalog / CUIMutableStructuredThemeStore renditionWithKey: reached via CPListImageRowItemElement.image, and I see "CUIThemeStore: No theme registered with id=0" once per launch. Is reconfiguring one element re-resolving the whole row's images expected behavior? What's the recommended pattern to populate images into CPListImageRowItem template at connect without tripping the scene-create watchdog? Thanks for your help!
Replies
2
Boosts
0
Views
18
Activity
3h
CarPlay Now Playing for continuous audio
I work on an ambient sound mixer (looping nature sounds that play continuously, often for hours). There's no meaningful track duration, so a progress bar doesn't represent anything real. I'm aware of MPNowPlayingInfoPropertyIsLiveStream, but our content is continuous rather than live, and the LIVE treatment seems semantically wrong for local looping audio. Three questions: Is isLiveStream the sanctioned way for continuous-but-not-live content to opt out of the scrubber? We'd want to toggle it off when a play timer is active (showing the sleep-timer countdown in the progress bar). Is flipping that flag mid-session supported? Is there a better-fitting presentation I'm missing? Thanks!
Replies
1
Boosts
0
Views
31
Activity
3h
New CarPlay UI Components in iOS 27 Not Mentioned in Release Notes
Is there a comprehensive list of all CarPlay framework changes in iOS 27 beyond what appears in the public release notes? Are there any new or updated CarPlay components in iOS 27 that are not yet reflected in the SDK headers or documentation?
Replies
2
Boosts
0
Views
25
Activity
3h
Clarification and disambiguation in voice-only mode
When a voice assistant needs clarification or disambiguation, is spoken dialog alone sufficient under the rule that voice-based conversational apps must not show text or imagery in query responses? or is there an approved pattern (action buttons, short lists) within the template depth limits?
Replies
1
Boosts
1
Views
31
Activity
3h
Substituting Siri in iOS 27
Are there any restrictions/advice/suggestions on how CarPlay supports the Siri changes in iOS 27?
Replies
1
Boosts
1
Views
23
Activity
3h
CarPlay request category for significant POI apps
For apps that display significant points of interest for a specific category, say breweries, or the places the user frequently visits, what is the best category to submit against the entitlement form? These apps are not quite navigation as they invoke Apple Maps, and they’re not for finding “parking” but a different type of map item category. The app would display specific markers for these map items, voice to search, and then link to Apple Maps for directions. This compliments existing iOS apps. I don’t want to encourage phone usage and being voice search and positional awareness to nearby POI that matter to the CarPlay screen.
Replies
1
Boosts
0
Views
10
Activity
3h
CPListTemplateDetailsHeader — Number of Action Buttons
CPListTemplateDetailsHeader supports action buttons for entity pages (e.g., playlist or album detail views). Currently, it appears that the header supports a limited number of trailing action buttons. What is the officially supported maximum number of action buttons on CPListTemplateDetailsHeader? If currently limited to one, is there a plan to support two action buttons to cover common media patterns like Play + Shuffle? Are there alternative patterns the team recommends for presenting multiple primary actions on entity pages within the current template constraints?
Replies
2
Boosts
0
Views
20
Activity
3h
CarPlay video
Is the video playback feature in CarPlay available only to 2026 models or does it depend on the manufacturer
Replies
1
Boosts
0
Views
27
Activity
3h