Journal

CarPlay Audio App Template in SwiftUI: How It Works

Apple gives you the templates; you supply the data. And you need the audio entitlement before any of it ships.

CarPlay Audio App Template in SwiftUI: How It Works: a reflective 3D App Store icon on a blue and purple gradient

TL;DR

A CarPlay audio app is not custom SwiftUI on the car screen. CarPlay audio apps are template-based: Apple provides safe, fixed templates (lists, now-playing, tab bar) and you populate them with your content, while your phone app stays SwiftUI. Two things gate it: you must request the CarPlay audio entitlement from Apple before you can build against it, and you drive playback through MediaPlayer and the now-playing system. Start your phone app from a clean SwiftUI layout, like a free VP0 design at $0, and add the CarPlay scene on top.

A CarPlay audio app surprises most people the first time, because you cannot draw custom SwiftUI on the car screen. For driver safety, Apple controls the in-car UI: CarPlay audio apps are template-based, so Apple gives you a fixed set of safe templates and you populate them with your content. Your phone app is still ordinary SwiftUI. On top of that, the whole thing is gated by an entitlement you must request from Apple. Here is the real architecture and how to start without going down a wrong path. For the phone-side screens, begin from a free VP0 design (the free iOS and React Native design library AI builders read from) at $0.

Templates, not custom views

The core idea: you do not lay out the car screen, you describe it with CarPlay templates. For an audio app the building blocks are a tab or list of content, an item list, and the now-playing screen.

LayerWhat you buildWhere
Phone appFull SwiftUI UIYour normal app
CarPlay sceneCPTemplate objects (list, now-playing, tab bar)A separate scene
ContentMap your data into template itemsShared with the app
PlaybackAVAudioSession + now-playing infoiOS audio stack

Apple’s CarPlay design guidance explains why the templates are fixed: the driver must not face a novel, distracting interface. So you spend your effort on content and playback, not pixels.

The entitlement gate

This is the step people miss. You must request the CarPlay audio entitlement from Apple through the developer portal before you can build and run a CarPlay scene; it is a request to Apple, not a switch you toggle. Plan for it early, because shipping is blocked until it is granted. Until then you can structure the code, but the CarPlay scene will not activate.

Playback is your normal audio stack

CarPlay does not have its own playback API. You play audio with an AVAudioSession, then publish now-playing metadata and remote command handlers through the MediaPlayer framework so the car’s hardware controls (play, pause, skip) and the now-playing template work. In other words, get your audio and now-playing system right on the phone first, and CarPlay mostly reflects it. The existing Apple CarPlay audio app UI template and CarPlay audio player template for iOS cover the phone-side player UI you build alongside.

Test in the simulator first

Xcode ships a CarPlay Simulator: run on the iOS Simulator, open the external CarPlay display, and your CarPlay scene shows there (the entitlement still has to be in place for the scene to activate). It is enough to validate navigation and template layout; do final checks on real hardware. The same tight-space, constrained-surface discipline that keeps text readable in React Native text cut off on iPhone SE applies here, and if your app also navigates, Mapbox navigation in React Native UIs covers the map side (note CarPlay navigation uses its own map templates and a separate entitlement).

The one CarPlay category that draws its own pixels, navigation, with system maneuver chrome above your map, is covered in the navigation overlay guide.

Key takeaways

  • CarPlay audio apps are template-based; you fill Apple’s templates, you do not draw custom views.
  • Request the CarPlay audio entitlement from Apple early; shipping is blocked without it.
  • Playback is your normal AVAudioSession plus MediaPlayer now-playing info and remote commands.
  • Test with the Xcode CarPlay Simulator, then validate on real hardware.
  • Build the phone-side audio screens from a free VP0 design at $0.

Frequently asked questions

Can I build a custom SwiftUI UI for CarPlay?

No, not for audio apps. CarPlay audio apps are template-based: Apple supplies a fixed set of safe templates (list, now-playing, tab bar, grid) and you fill them with your data, because the system controls the in-car UI for driver safety. Your phone app is still SwiftUI; CarPlay is a separate scene built from CPTemplate objects, not arbitrary views.

Do I need an entitlement to make a CarPlay app?

Yes. You must request the appropriate CarPlay entitlement from Apple (for an audio app, the CarPlay audio entitlement) through the developer portal before you can build and run against CarPlay. Without it the CarPlay scene will not activate. Plan for this early, because it is a request to Apple, not a checkbox you flip yourself.

How does audio playback work in a CarPlay app?

Playback runs through your app’s audio stack and the MediaPlayer now-playing system, not through CarPlay-specific playback code. You set up an AVAudioSession, play audio, and publish now-playing info and remote command handlers so the car’s controls (play, pause, skip) and the now-playing template work. CarPlay shows the templates; the audio engine is your normal iOS audio.

How do I test a CarPlay app without a car?

Use the CarPlay Simulator that ships with Xcode: run your app on the iOS Simulator, open the external CarPlay display, and your CarPlay scene appears there. You still need the entitlement for the scene to activate. The simulator covers layout and navigation; final validation should happen on real hardware.

What is the best way to start a CarPlay audio app?

Build the phone app from a clean SwiftUI layout, request the CarPlay audio entitlement, and add a CarPlay scene that maps your content into Apple’s templates. A free VP0 design, the free iOS and React Native design library for AI builders, gives you the phone-side audio screens to generate in Cursor or Claude Code at $0.

What VP0 builders also ask

Can I build a custom SwiftUI UI for CarPlay?

No, not for audio apps. CarPlay audio apps are template-based: Apple supplies a fixed set of safe templates (list, now-playing, tab bar, grid) and you fill them with your data, because the system controls the in-car UI for driver safety. Your phone app is still SwiftUI; CarPlay is a separate scene built from CPTemplate objects, not arbitrary views.

Do I need an entitlement to make a CarPlay app?

Yes. You must request the appropriate CarPlay entitlement from Apple (for an audio app, the CarPlay audio entitlement) through the developer portal before you can build and run against CarPlay. Without it the CarPlay scene will not activate. Plan for this early, because it is a request to Apple, not a checkbox you flip yourself.

How does audio playback work in a CarPlay app?

Playback runs through your app's audio stack and the MediaPlayer now-playing system, not through CarPlay-specific playback code. You set up an AVAudioSession, play audio, and publish now-playing info and remote command handlers so the car's controls (play, pause, skip) and the now-playing template work. CarPlay shows the templates; the audio engine is your normal iOS audio.

How do I test a CarPlay app without a car?

Use the CarPlay Simulator that ships with Xcode: run your app on the iOS Simulator, open the external CarPlay display, and your CarPlay scene appears there. You still need the entitlement for the scene to activate. The simulator covers layout and navigation; final validation should happen on real hardware.

What is the best way to start a CarPlay audio app?

Build the phone app from a clean SwiftUI layout, request the CarPlay audio entitlement, and add a CarPlay scene that maps your content into Apple's templates. A free VP0 design, the free iOS and React Native design library for AI builders, gives you the phone-side audio screens to generate in Cursor or Claude Code at $0.

Part of the Native Hardware, Sensors & Device Features hub. Browse all VP0 topics →

Keep reading

Build a SwiftUI Photo Gallery Grid with Pinch to Zoom: a glass iPhone app-grid icon on a mint and teal gradient
Guides 6 min read

Build a SwiftUI Photo Gallery Grid with Pinch to Zoom

A SwiftUI photo gallery has two pinch gestures: pinch the grid to change density, pinch a photo to zoom. Here is how to build both with LazyVGrid and bounded zoom.

Lawrence Arya · June 8, 2026
AI Pin Style Voice Interface Animation in SwiftUI: Guide: a glass iPhone UI wireframe icon on a holographic purple gradient
Guides 5 min read

AI Pin Style Voice Interface Animation in SwiftUI: Guide

Building an AI Pin style voice orb in SwiftUI: TimelineView plus Canvas, mic-driven RMS levels, five truthful states, captions, and Reduce Motion support.

Lawrence Arya · June 4, 2026
Gyroscope 3D Parallax Effect in SwiftUI (Free Start): the App Store logo as a frosted glass icon on a pink and blue gradient with bubbles
Guides 5 min read

Gyroscope 3D Parallax Effect in SwiftUI (Free Start)

Build a tilt-driven gyroscope 3D parallax effect in SwiftUI from a free VP0 design: read CoreMotion attitude, offset layers, smooth jitter, respect Reduce Motion.

Lawrence Arya · June 2, 2026
iOS Document Picker UI Customization in SwiftUI: a glowing iPhone home-screen icon on a purple and blue gradient
Guides 4 min read

iOS Document Picker UI Customization in SwiftUI

Use the iOS document picker in SwiftUI to import and export files from Files and iCloud, from a free VP0 design. With security-scoped access.

Lawrence Arya · May 31, 2026
Custom Camera UI With AVFoundation in SwiftUI: the App Store logo as a glossy glass icon on a purple and blue gradient with floating bubbles
Guides 4 min read

Custom Camera UI With AVFoundation in SwiftUI

Build a custom camera UI in SwiftUI with AVFoundation: live preview, capture, and controls, from a free VP0 design. Privacy-first, with the permission string.

Lawrence Arya · May 31, 2026
Lime Scooter QR Unlock Scanner UI in SwiftUI: a reflective 3D App Store icon on a blue and purple gradient
Guides 5 min read

Lime Scooter QR Unlock Scanner UI in SwiftUI

The scanner is the easy half. The unlock state machine, where billing starts only on the scooter's confirmation, is the product.

Lawrence Arya · June 7, 2026