-
Notifications
You must be signed in to change notification settings - Fork 569
CarPlay iOS xcode27.0 b1
Alex Soto edited this page Jun 9, 2026
·
1 revision
#CarPlay.framework
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h 2026-05-29 01:03:40
@@ -0,0 +1,38 @@
+
+//
+// CPChargingStationConnection.h
+// CarPlay
+//
+// Copyright © 2024 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, CPChargingStationConnectionConnector) {
+ CPChargingStationConnectionConnectorCCS1 NS_SWIFT_NAME(ccs1),
+ CPChargingStationConnectionConnectorCCS2 NS_SWIFT_NAME(ccs2),
+ CPChargingStationConnectionConnectorJ1772 NS_SWIFT_NAME(j1772),
+ CPChargingStationConnectionConnectorCHAdeMO NS_SWIFT_NAME(chaDeMo),
+ CPChargingStationConnectionConnectorMennekes NS_SWIFT_NAME(mennekes),
+ CPChargingStationConnectionConnectorGBTDC NS_SWIFT_NAME(gbtDC),
+ CPChargingStationConnectionConnectorGBTAC NS_SWIFT_NAME(gbtAC),
+ CPChargingStationConnectionConnectorNACSDC NS_SWIFT_NAME(nacsDC),
+ CPChargingStationConnectionConnectorNACSAC NS_SWIFT_NAME(nacsAC),
+} NS_SWIFT_NAME(CPChargingStationConnection.Connector);
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPChargingStationConnection : NSObject <NSCopying, NSSecureCoding>
+
+- (instancetype)initWithConnector:(CPChargingStationConnectionConnector)connector
+ voltage:(NSMeasurement<NSUnitElectricPotentialDifference *> *)voltage
+ power:(NSMeasurement<NSUnitPower *> *)power;
+
+@property (nonatomic, assign, readonly) CPChargingStationConnectionConnector connector;
+@property (nonatomic, strong, readonly) NSMeasurement<NSUnitElectricPotentialDifference *> *voltage;
+@property (nonatomic, strong, readonly) NSMeasurement<NSUnitPower *> *power;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPInterfaceController.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPInterfaceController.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPInterfaceController.h 2026-04-19 00:18:54
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPInterfaceController.h 2026-05-29 01:03:40
@@ -116,6 +116,31 @@
- (void)dismissTemplateAnimated:(BOOL)animated
completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos);
+/**
+ Show a template as an overlay over the current template hierarchy. Only one overlay template may be shown at a time.
+
+ @note Supported template types: @c CPVoiceControlTemplate
+
+ The completion block will be called after the template has been shown. If the template was shown successfully,
+ the boolean parameter will be YES. Otherwise, the boolean parameter will be NO and an @c NSError will be provided describing the failure.
+
+ @note If the template is not successfully shown AND no completion block is specified, an exception will be thrown.
+ */
+- (void)showOverlayTemplate:(__kindof CPTemplate *)templateToShow
+ animated:(BOOL)animated
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0));
+
+/**
+ Dismiss the current overlay template, optionally animating the dismissal.
+
+ @note If there is no current overlay template, this method will have no effect.
+
+ The completion block will be called after the template has been dismissed. If the template was dismissed successfully,
+ the boolean parameter will be YES. Otherwise, the boolean parameter will be NO and an @c NSError will be provided describing the failure.
+ */
+- (void)hideOverlayTemplateAnimated:(BOOL)animated
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0));
+
#pragma mark - Template Access
/**
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h 2026-05-29 01:03:41
@@ -0,0 +1,65 @@
+//
+// CPMapPanel.h
+// CarPlay
+//
+// Created by Rico Bowman on 4/20/26.
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CarPlay/CPMapPanelSection.h>
+#import <CarPlay/CPPanel.h>
+#import <CarPlay/CPMapPanelButtonConfiguration.h>
+
+@class CPMapPanel;
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+NS_SWIFT_NAME(CPMapPanel.Delegate)
+@protocol CPMapPanelDelegate <NSObject>
+@optional
+- (void)panelDidShow:(CPMapPanel *)panel;
+- (void)panelDidHide:(CPMapPanel *)panel;
+@end
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPMapPanel : CPPanel
+
+/**
+ Initializes a new overlay page.
+
+ @param title An optional title for the page.
+ @param sections An array of @c CPPanelListSection objects describing the content of the page.
+ @param buttonConfiguration An optional button configuration for the page.
+ @return A new @c CPPanelList instance
+ */
+- (instancetype)initWithTitle:(nullable NSString *)title
+ sections:(NSArray<CPMapPanelSection *> *)sections
+ buttonConfiguration:(nullable CPMapPanelButtonConfiguration *)buttonConfiguration NS_DESIGNATED_INITIALIZER;
+
+/**
+ The title of the page.
+ */
+@property (nonatomic, copy, readonly, nullable) NSString *title;
+
+/**
+ The sections contained in this page.
+ */
+@property (nonatomic, copy, readonly) NSArray<CPMapPanelSection *> *sections;
+
+/**
+ The button configuration for this page.
+ */
+@property (nonatomic, strong, readonly, nullable) CPMapPanelButtonConfiguration *buttonConfiguration;
+
+/**
+ The @c CPMapPanelDelegate.
+ */
+@property (nonatomic, weak, nullable) id<CPMapPanelDelegate> delegate;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h 2026-05-29 01:03:42
@@ -0,0 +1,46 @@
+//
+// CPMapPanelButtonConfiguration.h
+// CarPlay
+//
+// Created by Rico Bowman on 5/6/26.
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <CarPlay/CPPanelButtonConfiguration.h>
+#import <CarPlay/CPTravelEstimates.h>
+
+@class CPTextButton;
+@class CPButton;
+@class CPTravelEstimates;
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPMapPanelButtonConfiguration : CPPanelButtonConfiguration
+
+/**
+ Initializes a map panel button configuration with a primary action, optional travel estimates,
+ and an optional secondary button.
+
+ @param primaryAction The primary text button for the panel.
+ @param symbolButton An optional secondary button. Note: only the image property of this button is used. Any title provided will be dropped.
+ @param travelEstimates Optional travel estimates to display alongside the primary button.
+ @return A new @c CPMapPanelButtonConfiguration instance.
+ */
+- (instancetype)initWithPrimaryAction:(CPTextButton *)primaryAction
+ symbolButton:(nullable CPButton *)symbolButton
+ travelEstimates:(nullable CPTravelEstimates *)travelEstimates NS_DESIGNATED_INITIALIZER;
+
+/**
+ Optional travel estimates displayed alongside the primary action.
+ */
+@property (nonatomic, strong, readonly, nullable) CPTravelEstimates *travelEstimates;
+
+/**
+ An optional secondary button shown with this configuration. Note: only the image property of this button is used.
+ */
+@property (nonatomic, strong, readonly, nullable) CPButton *symbolButton;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h 2026-05-29 01:03:43
@@ -0,0 +1,70 @@
+//
+// CPMapPanelItem.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <CarPlay/CPPanelItem.h>
+#import <UIKit/UIKit.h>
+
+@class CPTrip;
+@class CPTravelEstimates;
+@class CPRouteChoice;
+@class CPListItem;
+@class CPGridButton;
+@class CPRouteDetail;
+@class CPChargingStationConnection;
+@class CPMapTemplateWaypoint;
+@class CPTextButton;
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPMapPanelItem : CPPanelItem
+
+/**
+ Initializes a map template item wrapping a @c CPTrip.
+ */
+- (instancetype)initWithTrip:(CPTrip *)trip handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping a @c CPTravelEstimates.
+ */
+- (instancetype)initWithTravelEstimates:(CPTravelEstimates *)travelEstimates handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping a @c CPRouteChoice.
+ */
+- (instancetype)initWithRouteChoice:(CPRouteChoice *)routeChoice handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping an array of @c CPRouteDetail objects.
+ */
+- (instancetype)initWithRouteDetails:(NSArray<CPRouteDetail *> *)routeDetails handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping a @c CPChargingStationConnection.
+ */
+- (instancetype)initWithChargingStationConnection:(CPChargingStationConnection *)chargingStationConnection handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping a @c CPMapTemplateWaypoint.
+ */
+- (instancetype)initWithMapTemplateWaypoint:(CPMapTemplateWaypoint *)mapTemplateWaypoint image:(nullable UIImage *)image handler:(nullable void (^)(CPMapPanelItem *item, dispatch_block_t completionBlock))handler;
+
+/**
+ Initializes a map template item wrapping a @c CPListItem.
+ */
+- (instancetype)initWithListItem:(CPListItem *)listItem;
+
+/**
+ Initializes a map template item wrapping an array of @c CPGridButton objects.
+ */
+- (instancetype)initWithGridButtons:(NSArray<CPGridButton *> *)gridButtons;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h 2026-05-29 01:03:40
@@ -0,0 +1,55 @@
+//
+// CPPanelListSection.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CarPlay/CPMapPanelItem.h>
+
+@class CPMapPanelSection;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ @c CPPanelListSection describes a section within a map template overlay page.
+ Each section contains a title, a collection of content items, and an optional item selection handler.
+ */
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPMapPanelSection : NSObject <NSSecureCoding>
+
+/**
+ Initializes a section with items conforming to @c CPMapPanelItem.
+ Only items that adopt @c CPMapPanelItem are supported when displaying
+ panel sections on a @c CPMapTemplate.
+
+ @param title An optional title for the section.
+ @param items An array of @c CPMapPanelItem conforming objects to display in the section.
+ */
+- (instancetype)initWithTitle:(nullable NSString *)title
+ items:(NSArray<CPMapPanelItem *> *)items NS_DESIGNATED_INITIALIZER;
+
+/**
+ Update the items in this section. If this section is currently visible in a panel,
+ the panel will refresh to show the new items.
+
+ @param items The new array of items to display in this section.
+ */
+- (void)updateItems:(NSArray<CPMapPanelItem *> *)items;
+
+/**
+ The title of the section.
+ */
+@property (nonatomic, copy, nullable) NSString *title;
+
+/**
+ The items displayed in this section, or @c nil if the section does not contain items.
+ */
+@property (nonatomic, copy) NSArray<CPMapPanelItem *> *items;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h 2026-04-19 00:18:57
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h 2026-05-29 01:19:57
@@ -8,11 +8,15 @@
#import <CarPlay/CPBarButtonProviding.h>
#import <CarPlay/CPMapButton.h>
+#import <CarPlay/CPMapPanel.h>
#import <CarPlay/CPMapTemplateWaypoint.h>
+#import <CarPlay/CPMultiStopCardConfiguration.h>
#import <CarPlay/CPNavigationAlert.h>
#import <CarPlay/CPNavigationSession.h>
+#import <CarPlay/CPPanel.h>
#import <CarPlay/CPRouteSource.h>
#import <CarPlay/CPTemplate.h>
+#import <CarPlay/CPTextButton.h>
#import <CarPlay/CPTrip.h>
#import <CarPlay/CPTripPreviewTextConfiguration.h>
#import <CarPlay/CPNavigationWaypoint.h>
@@ -82,17 +86,16 @@
- (void)showTripPreviews:(NSArray<CPTrip *> *)tripPreviews textConfiguration:(nullable CPTripPreviewTextConfiguration *)textConfiguration;
/**
-* Display a preview for a trip. Used to provide an overview for the upcoming trip or can show multiple trip options,
-* such as for search results. Trip previews can appear over an active navigation session. Number of trips will be
-* limited to 12. Optionally provide a CPTrip object from the list of trips to be selected when initially presented.
-*/
+ * Display a preview for a trip. Used to provide an overview for the upcoming trip or can show multiple trip options,
+ * such as for search results. Trip previews can appear over an active navigation session. Number of trips will be
+ * limited to 12. Optionally provide a CPTrip object from the list of trips to be selected when initially presented.
+ */
- (void)showTripPreviews:(NSArray<CPTrip *> *)tripPreviews selectedTrip:(nullable CPTrip *)selectedTrip textConfiguration:(nullable CPTripPreviewTextConfiguration *)textConfiguration API_AVAILABLE(ios(14.0));
/**
* Display the route choices for a single trip. Trip previews can appear over an active navigation session.
*/
- (void)showRouteChoicesPreviewForTrip:(CPTrip *)tripPreview textConfiguration:(nullable CPTripPreviewTextConfiguration *)textConfiguration;
-
/**
* Stop displaying any currently shown trip previews.
*/
@@ -181,6 +184,40 @@
*/
- (void)dismissNavigationAlertAnimated:(BOOL)animated completion:(void (^)(BOOL dismissed))completion;
+#pragma mark - Panel
+
+/**
+ Shows an overlay with the specified panel.
+
+ @param panel The panel to display.
+ @param completion An optional block called when the overlay has been shown.
+ */
+- (void)showPanel:(CPMapPanel *)panel
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(showPanel(_:completion:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ Pushes a new panel.
+
+ @param panel The panel to push.
+ @param completion An optional block called when the panel has been pushed.
+ */
+- (void)pushPanel:(CPMapPanel *)panel
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(pushPanel(_:completion:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ Pops the top panel from the overlay's panel stack.
+
+ @param completion An optional block called when the panel has been popped.
+ */
+- (void)popPanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ Hides the overlay.
+
+ @param completion An optional block called when the overlay has been hidden.
+ */
+- (void)hidePanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
@end
API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@@ -228,6 +265,28 @@
*/
- (void)mapTemplate:(CPMapTemplate *)mapTemplate didReceiveRequestForDestination:(CPNavigationWaypoint *)waypoint API_AVAILABLE(ios(26.4));
+#pragma mark - Multi-Stop Routing
+/**
+ Determines if the template should provide UI for multi-stop routing while actively navigating, including the ability to add and remove stops.
+ @return YES if the template should provide multi-stop routing functionalities, otherwise NO
+ */
+- (BOOL)mapTemplateShouldProvideMultiStopRouting:(CPMapTemplate *)mapTemplate API_AVAILABLE(ios(27.0));
+
+/**
+ Called when the user removes a waypoint. Perform a reroute to update the route accordingly.
+ */
+- (void)mapTemplate:(CPMapTemplate *)mapTemplate didRequestToRemoveWaypoint:(CPNavigationWaypoint *)waypoint API_AVAILABLE(ios(27.0));
+
+/**
+ Called when the user removes the waypoint corresponding to the trip's destination. Perform a reroute to update both the trip and route accordingly.
+ */
+- (void)mapTemplate:(CPMapTemplate *)mapTemplate didRequestToRemoveDestination:(CPNavigationWaypoint *)waypoint API_AVAILABLE(ios(27.0));
+
+/**
+ Called when the user requests multi-stop card to be displayed via tapping ETA tray.
+ */
+- (void)mapTemplate:(CPMapTemplate *)mapTemplate didRequestMultiStopCardConfigurationWithCompletion:(void (^)(CPMultiStopCardConfiguration *))completion NS_SWIFT_ASYNC_NAME(multiStopCardConfigurationForMapTemplate(_:)) API_AVAILABLE(ios(27.0));
+
#pragma mark - Notification Policy
/**
Determines if the maneuver should be presented as a notification when the app is in the background.
@@ -279,6 +338,8 @@
This will be called when the pan interface disappears on the map interface.
*/
- (void)mapTemplateDidDismissPanningInterface:(CPMapTemplate *)mapTemplate;
+
+#pragma mark - Navigation Bar Visibility
/**
Called when a pan button is pressed/selected for an extended duration.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplateWaypoint.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplateWaypoint.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplateWaypoint.h 2026-04-19 02:25:15
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplateWaypoint.h 2026-05-29 01:03:42
@@ -15,7 +15,7 @@
* CPMapTemplateWaypoint represents a waypoint with associated travel estimates
*/
API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(tvos)
-@interface CPMapTemplateWaypoint : NSObject
+@interface CPMapTemplateWaypoint : NSObject <NSSecureCoding>
/**
* The navigation waypoint containing location-based information and guidance for a point of interest along a route.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h 2026-05-29 01:03:41
@@ -0,0 +1,36 @@
+//
+// CPMultiStopCardConfiguration.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CarPlay/CPTextButton.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPMultiStopCardConfiguration : NSObject <NSSecureCoding>
+
+/**
+ Initializes a MultiStopCardConfiguration with an optional title and an array of text buttons
+ */
+- (instancetype)initWithTitle:(nullable NSString *)title
+ buttons:(NSArray<CPTextButton *> *)buttons;
+
+/**
+ Title of card presented to configure waypoints along a route. If no title is provided, the card title will default to "Trip Overview".
+ */
+@property (nonatomic, copy, readonly, nullable) NSString *title;
+
+/**
+ An array of text buttons to be displayed at the bottom of the card presented to configure waypoints along a route.
+ @note The multi-stop card may display a maximum of 2 buttons. Setting more than 2 buttons to this
+ property will only display the first 2 buttons.
+ */
+@property (nonatomic, copy, readonly) NSArray<CPTextButton *> *buttons;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationAlert.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationAlert.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationAlert.h 2026-04-19 02:23:40
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationAlert.h 2026-05-22 06:40:02
@@ -72,6 +72,31 @@
duration:(NSTimeInterval)duration;
/**
+ Initialize a @c CPNavigationAlert with a title, image, an array of actions, and duration.
+
+ @param titleVariants An array of titles. The system will select a title that fits in the available space. The variant strings should be provided as localized, displayable content.
+
+ @param subtitleVariants An array of subtitles. The system will select a subtitle that fits in the available space. The variant strings should be provided as localized, displayable content.
+
+ @param avatarImage An optional @c UIImage to display in this navigation alert. Animated images are not supported. It will be displayed in the top leading corner.
+
+ @param alertImage An optional @c UIImage to display in this navigation alert. Animated images are not supported. It will be displayed above the action buttons. Note that this image may be hidden by the system if the available screen space is too small.
+
+ @param actions An array of @c CPAlertAction objects. The number of actions will be clamped to @c maximumActionsCount.
+
+ @param duration The duration for which this alert should be visible. Specify 0 for an alert
+ that displays indefinitely.
+
+ @return an initialized @c CPNavigationAlert.
+ */
+- (instancetype)initWithTitleVariants:(NSArray <NSString *> *)titleVariants
+ subtitleVariants:(NSArray <NSString *> *)subtitleVariants
+ avatarImage:(nullable UIImage *)avatarImage
+ alertImage:(nullable UIImage *)alertImage
+ actions:(NSArray<CPAlertAction *> *)actions
+ duration:(NSTimeInterval)duration API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
The navigation alert may be updated with new title and subtitle variants, either
after it has already been displayed on screen, or before its initial presentation on screen.
@@ -83,13 +108,65 @@
- (void)updateTitleVariants:(NSArray <NSString *> *)newTitleVariants
subtitleVariants:(NSArray <NSString *> *)newSubtitleVariants;
+
+/**
+ Update the navigation alert with new title variants, subtitle variants, image, actions, and duration.
+
+ Updating an alert that has already been dismissed has no effect.
+
+ @param newTitleVariants An updated array of title variants.
+ @param newSubtitleVariants An updated array of subtitle variants.
+ @param avatarImage An optional updated @c UIImage to display.
+ @param alertImage An optional updated @c UIImage to display. Note that this image may be hidden by the system if the available screen space is too small.
+ @param actions An updated array of @c CPAlertAction objects. The number of actions will be clamped to @c maximumActionsCount.
+ @param duration The updated duration for which this alert should be visible. Specify -1 to keep duration unaltered. Specify 0 for an alert that displays indefinitely.
+
+ When providing an image, your app should provide a @c UIImage that is display-ready. If necessary for the image, provide
+ light and dark styles by using an asset from your asset catalog, prepared with light and dark styles
+ or by using @c UIImageAsset to combine two @c UIImage instances into a single image with
+ both styles.
+
+ UIImageAsset is used to combine multiple UIImages with different trait collections into a single UIImage.
+ */
+- (void)updateTitleVariants:(NSArray <NSString *> *)newTitleVariants
+ subtitleVariants:(NSArray <NSString *> *)newSubtitleVariants
+ avatarImage:(nullable UIImage *)avatarImage
+ alertImage:(nullable UIImage *)alertImage
+ actions:(NSArray<CPAlertAction *> *)actions
+ duration:(NSTimeInterval)duration API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
@property (nonatomic, readonly, copy) NSArray <NSString *> *titleVariants;
@property (nonatomic, readonly, copy) NSArray <NSString *> *subtitleVariants;
@property (nullable, nonatomic, readonly, copy) CPImageSet *imageSet;
@property (nullable, nonatomic, readonly, copy) UIImage *image;
+@property (nullable, nonatomic, readonly, copy) UIImage *avatarImage API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+@property (nullable, nonatomic, readonly, copy) UIImage *alertImage API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
@property (nonatomic, readonly, strong) CPAlertAction *primaryAction;
@property (nullable, nonatomic, readonly, strong) CPAlertAction *secondaryAction;
@property (nonatomic, readonly) NSTimeInterval duration;
+
+/**
+ The array of actions associated with this navigation alert.
+
+ If the alert was created with the older @c primaryAction / @c secondaryAction initializer,
+ this property returns those actions as an array for backward compatibility.
+ */
+@property (nonatomic, readonly, copy) NSArray<CPAlertAction *> *actions API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ The maximum number of actions that a @c CPNavigationAlert can display.
+ */
+@property (nonatomic, readonly, class) NSInteger maximumActionsCount API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ The maximum image size for the alert image that a @c CPNavigationAlert can display.
+ */
+@property (nonatomic, readonly, class) CGSize maximumAlertImageSize API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
+ The maximum image size for the avatar image that a @c CPNavigationAlert can display.
+ */
+@property (nonatomic, readonly, class) CGSize maximumAvatarImageSize API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
@end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h 2026-04-19 02:23:39
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h 2026-05-29 01:19:55
@@ -6,6 +6,7 @@
//
#import <CarPlay/CPManeuver.h>
+#import <CarPlay/CPMapPanel.h>
#import <CarPlay/CPRerouteReason.h>
#import <CarPlay/CPRouteInformation.h>
#import <CarPlay/CPRouteSegment.h>
@@ -69,6 +70,16 @@
- (void)resumeTripWithUpdatedRouteSegments:(NSArray<CPRouteSegment *> *)routeSegments currentSegment:(CPRouteSegment *)currentSegment rerouteReason:(CPRerouteReason)rerouteReason NS_SWIFT_NAME(resumeTrip(updatedRouteSegments:currentSegment:rerouteReason:)) API_AVAILABLE(ios(26.4));
/**
+ Resume navigation with an updated trip and route segments for cases such as the trip destination changing.
+
+ @param trip The updated trip
+ @param routeSegments The updated route segments for the current trip
+ @param currentSegment The current route segment
+ @param rerouteReason The reason for the reroute
+ */
+- (void)resumeNavigationWithUpdatedTrip:(CPTrip *)trip routeSegments:(NSArray<CPRouteSegment *> *)routeSegments currentSegment:(CPRouteSegment *)currentSegment rerouteReason:(CPRerouteReason)rerouteReason NS_SWIFT_NAME(resumeNavigation(updatedTrip:routeSegments:currentSegment:rerouteReason:)) API_AVAILABLE(ios(27.0));
+
+/**
Finish the trip.
*/
- (void)finishTrip;
@@ -131,6 +142,11 @@
@param maneuver The maneuver pertaining to this update.
*/
- (void)updateTravelEstimates:(CPTravelEstimates *)estimates forManeuver:(CPManeuver *)maneuver;
+
+/**
+The options panel to display when the ellipsis button on the travel estimates is tapped.
+ */
+@property (nonatomic, strong, nullable) CPMapPanel *optionsPanel API_AVAILABLE(ios(27.0));
/**
The route segments associated with this navigation session.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationWaypoint.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationWaypoint.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationWaypoint.h 2026-04-19 02:25:14
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationWaypoint.h 2026-05-22 06:40:00
@@ -30,15 +30,29 @@
/**
name is an optional display name for the waypoint.
*/
-@property (nonatomic, readonly, nullable) NSString *name;
+@property (nonatomic, readonly, nullable) NSString *name
+API_DEPRECATED_WITH_REPLACEMENT("nameVariants", ios(26.4, 27.0));
/**
+ nameVariants is an array of @c NSString representing variants of the waypoint's display name, arranged from most to least preferred.
+ The variant strings should be provided as localized, displayable content.
+ */
+@property (nonatomic, readonly) NSArray<NSString *> *nameVariants API_AVAILABLE(ios(27.0));
+
+/**
address is an optional address string for the waypoint, formatted with newline characters separating each address component.
Example: "Apple Inc.\n1 Apple Park Way\nCupertino, CA 95014\nUnited States"
*/
-@property (nonatomic, readonly, nullable) NSString *address;
+@property (nonatomic, readonly, nullable) NSString *address
+API_DEPRECATED_WITH_REPLACEMENT("addressVariants", ios(26.4, 27.0));
/**
+ addressVariants is an array of @c NSString representing variants of the waypoint's address, arranged from most to least preferred.
+ The variant strings should be provided as localized, displayable content.
+ */
+@property (nonatomic, readonly) NSArray<NSString *> *addressVariants API_AVAILABLE(ios(27.0));
+
+/**
entryPoints is an optional array of CPLocationCoordinate3D entry points. These represent alternative access points to reach the waypoint.
*/
@property (nonatomic, readonly) CPLocationCoordinate3D *entryPoints NS_REFINED_FOR_SWIFT;
@@ -54,6 +68,17 @@
@property (nonatomic, readonly, nullable) NSTimeZone *timeZone;
/**
+ Initialize a CPNavigationWaypoint object with a center point, location threshold, optional name and name variants, optional long address and short address, optional entry points, and a timezone.
+ */
+- (instancetype)initWithCenterPoint:(CPLocationCoordinate3D)centerPoint
+ locationThreshold:(nullable NSMeasurement<NSUnitLength *> *)locationThreshold
+ nameVariants:(NSArray<NSString *> *)nameVariants
+ addressVariants:(NSArray<NSString *> *)addressVariants
+ entryPoints:(CPLocationCoordinate3D *)entryPoints
+ entryPointsCount:(NSUInteger)entryPointsCount
+ timeZone:(nullable NSTimeZone *)timeZone NS_DESIGNATED_INITIALIZER NS_REFINED_FOR_SWIFT;
+
+/**
Initialize a CPNavigationWaypoint object with a center point, location threshold, optional name and address, optional entry points, and a timezone.
*/
- (instancetype)initWithCenterPoint:(CPLocationCoordinate3D)centerPoint
@@ -62,7 +87,8 @@
address:(nullable NSString *)address
entryPoints:(CPLocationCoordinate3D *)entryPoints
entryPointsCount:(NSUInteger)entryPointsCount
- timeZone:(nullable NSTimeZone *)timeZone NS_DESIGNATED_INITIALIZER NS_REFINED_FOR_SWIFT;
+ timeZone:(nullable NSTimeZone *)timeZone NS_REFINED_FOR_SWIFT
+API_DEPRECATED_WITH_REPLACEMENT("initWithCenterPoint:locationThreshold:nameVariants:addressVariants:entryPoints:entryPointsCount:timeZone:", ios(26.4, 27.0));;
/**
Initialize a CPNavigationWaypoint object from an MKMapItem with a location threshold and optional entry points.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNowPlayingTemplate.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNowPlayingTemplate.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNowPlayingTemplate.h 2026-04-19 02:25:15
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPNowPlayingTemplate.h 2026-05-29 01:03:42
@@ -81,6 +81,15 @@
@property (nonatomic, assign, getter=isUpNextButtonEnabled) BOOL upNextButtonEnabled;
/**
+ A Boolean value indicating whether the mini player is allowed to appear.
+
+ @discussion Set the value of this property to @c NO to hide the mini player.
+
+ Defaults to YES.
+ */
+@property (nonatomic, assign) BOOL allowsMiniPlayer API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
+
+/**
If your template elects to display the "Up Next" button, you may optionally specify a string
indicating the title for the up next button. If no title is specified, a default system title
will be used.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h 2026-05-29 01:03:42
@@ -0,0 +1,22 @@
+//
+// CPPanel.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPPanel : NSObject <NSSecureCoding>
+
+/**
+ A unique identifier for this panel.
+ */
+@property (nonatomic, readonly) NSUUID *identifier;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h 2026-05-29 01:03:43
@@ -0,0 +1,46 @@
+//
+// CPPanelButtonConfiguration.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class CPTextButton;
+@class CPButton;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ @c CPPanelButtonConfiguration describes the button configuration for
+ a panel list section. It contains a primary and secondary action button.
+ */
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPPanelButtonConfiguration : NSObject <NSSecureCoding>
+
+/**
+ Initializes a button configuration with a primary action and an optional secondary action.
+
+ @param primaryAction The primary text button for the panel.
+ @param secondaryAction An optional secondary @c CPTextButton.
+ @return A new @c CPPanelButtonConfiguration instance
+ */
+- (instancetype)initWithPrimaryAction:(CPTextButton *)primaryAction
+ secondaryAction:(nullable CPTextButton *)secondaryAction NS_DESIGNATED_INITIALIZER;
+
+/**
+ The primary action button.
+ */
+@property (nonatomic, copy, readonly) CPTextButton *primaryAction;
+
+/**
+ The secondary action button, or @c nil if excluded.
+ */
+@property (nonatomic, copy, readonly, nullable) CPTextButton *secondaryAction;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h 2026-05-29 01:03:40
@@ -0,0 +1,36 @@
+//
+// CPPanelItem.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ @c CPPanelItem is the base class for all items that can be displayed within a panel section.
+ Subclasses represent items specific to a particular template context (e.g., @c CPMapPanelItem for map templates).
+ */
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+@interface CPPanelItem : NSObject <NSSecureCoding>
+
+/**
+ Whether the item is interactable. Defaults to @c YES.
+ */
+@property (nonatomic, getter=isEnabled) BOOL enabled;
+
+/**
+ When @c NO, the bottom separator line below this item is not drawn. Defaults to @c YES.
+ */
+@property (nonatomic) BOOL showsBottomSeparator;
+
+/**
+ Any custom user info related to this item.
+ */
+@property (nullable, nonatomic, strong) id userInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPRouteDetail.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPRouteDetail.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPRouteDetail.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPRouteDetail.h 2026-05-29 01:03:42
@@ -0,0 +1,355 @@
+//
+// CPRouteDetail.h
+// CarPlay
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CarPlay/CPTemplate.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ @c CPRouteDetail provides additional contextual information about a route that can be displayed
+ alongside standard routing details. This includes environmental data, vehicle consumption metrics,
+ costs, and custom information specific to your app's routing capabilities.
+
+ Route information appears in the route selection interface and during active navigation, helping users
+ make informed decisions about their journey. The system automatically formats and displays this
+ information using appropriate styling and placement.
+
+ @discussion Use route information to differentiate between routing options and provide transparency
+ about journey characteristics. For example, display toll costs to help users choose between paid
+ expressways and free alternatives, or show battery consumption for electric vehicles to ensure
+ destination reachability.
+
+ @note Route information is supplementary to core routing details (distance, time, maneuvers). The
+ system may choose to display some or all information based on available space and user context.
+ */
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+CARPLAY_TEMPLATE_UI_ACTOR
+@interface CPRouteDetail : NSObject <NSCopying, NSSecureCoding>
+
+/**
+ Creates additional route information for a toll amount.
+
+ Use this method to display toll costs associated with a route. The toll amount will be formatted
+ according to the provided locale's currency settings.
+
+ @discussion Toll information helps users make informed routing decisions, particularly when comparing
+ routes with varying toll costs. The system automatically formats the value using the locale's currency
+ symbol, decimal separator, and digit grouping conventions.
+
+ @param value The toll amount as a decimal value (e.g., 5.50 for $5.50)
+ @param locale The locale to use for currency formatting. The locale's currency code determines the
+ currency symbol and formatting rules. Pass @c [NSLocale currentLocale] to use the user's
+ preferred locale, or create a specific locale for fixed currency display.
+ @return A new @c CPRouteDetail instance representing the toll amount
+
+ @note The system displays toll amounts with high visibility during route selection to help users
+ understand cost implications before committing to a route.
+ */
++ (instancetype)routeDetailWithTollAmount:(double)value locale:(NSLocale *)locale;
+
+/**
+ Creates additional route information for a fuel level.
+
+ Use this method to display the estimated fuel level upon arrival at the destination. This helps
+ drivers of liquid-fuel vehicles plan refueling stops along their route.
+
+ @discussion The system automatically converts the measurement to the user's preferred units based on
+ their region and settings (e.g., liters in metric regions, gallons in the US). Display the estimated
+ remaining fuel rather than fuel consumed to help users assess whether refueling is necessary.
+
+ @param fuelLevel A measurement representing the remaining fuel level using @c NSUnitVolume. Common units:
+ - @c NSUnitVolume.liters for gasoline/diesel (metric regions)
+ - @c NSUnitVolume.gallons for gasoline/diesel (US)
+ - @c NSUnitVolume.imperialGallons for gasoline/diesel (UK)
+ @return A new @c CPRouteDetail instance representing the fuel level
+
+ @note For vehicles with alternative fuel types like compressed natural gas or hydrogen, consider using
+ @c routeDetailWithFuelMass: or @c routeDetailWithFuelEnergy: as appropriate for the
+ fuel measurement standard.
+ */
++ (instancetype)routeDetailWithFuelLevel:(NSMeasurement<NSUnitVolume *> *)fuelLevel;
+
+/**
+ Creates additional route information for fuel energy content.
+
+ Use this method to display fuel levels for hydrogen fuel cell vehicles or other vehicles where
+ fuel is measured in energy units rather than volume or mass.
+
+ @discussion Hydrogen fuel cell vehicles often express fuel capacity in kilowatt-hours of energy
+ content. The system formats this appropriately for user display.
+
+ @param fuelEnergy A measurement representing the fuel energy using @c NSUnitEnergy. Common units:
+ - @c NSUnitEnergy.kilowattHours for hydrogen fuel cells
+ - @c NSUnitEnergy.megajoules for alternative energy measurements
+ @return A new @c CPRouteDetail instance representing the fuel energy
+
+ @note This method is distinct from battery energy (@c routeDetailWithKilowattHours:) and should
+ be used specifically for fuel-based energy storage systems.
+ */
++ (instancetype)routeDetailWithFuelEnergy:(NSMeasurement<NSUnitEnergy *> *)fuelEnergy;
+
+/**
+ Creates additional route information for fuel mass.
+
+ Use this method to display fuel levels for vehicles that measure fuel by mass, such as compressed
+ natural gas (CNG) vehicles.
+
+ @discussion CNG and similar compressed gas systems often measure fuel in mass units rather than
+ volume due to the variable density under pressure. The system formats the mass measurement
+ according to the user's preferred units.
+
+ @param fuelMass A measurement representing the fuel mass using @c NSUnitMass. Common units:
+ - @c NSUnitMass.kilograms for compressed natural gas
+ - @c NSUnitMass.pounds for CNG in regions using imperial units
+ @return A new @c CPRouteDetail instance representing the fuel mass
+ */
++ (instancetype)routeDetailWithFuelMass:(NSMeasurement<NSUnitMass *> *)fuelMass;
+
+/**
+ Creates additional route information for battery percentage.
+
+ Use this method to display the estimated battery level upon arrival at the destination for
+ electric vehicles. Display as a percentage (0.0 to 100.0) to show state of charge.
+
+ @discussion Percentage-based battery display is familiar to most users and provides an intuitive
+ understanding of remaining range. The system formats this as a percentage with appropriate visual
+ indicators. Values are clamped to the 0.0-100.0 range if necessary.
+
+ @param batteryLevel The battery level as a percentage from 0.0 (empty) to 100.0 (full). Values
+ outside this range will be clamped.
+ @return A new @c CPRouteDetail instance representing the battery level
+
+ @note For more technical users or when absolute capacity is more relevant, consider using
+ @c routeDetailWithKilowattHours: to show energy in kilowatt-hours instead.
+ */
++ (instancetype)routeDetailWithBatteryLevel:(double)batteryLevel;
+
+/**
+ Creates additional route information for battery energy in kilowatt-hours.
+
+ Use this method to display battery levels for electric vehicles using absolute energy measurements
+ rather than percentages. This provides more meaningful information for users familiar with their
+ vehicle's battery capacity.
+
+ @discussion Displaying battery in kilowatt-hours helps users better understand range and charging
+ needs, particularly for long trips or when comparing vehicles with different battery capacities.
+ A 10% battery in a 100 kWh vehicle (10 kWh) provides very different range than 10% in a 40 kWh
+ vehicle (4 kWh).
+
+ @param kilowattHours A measurement of battery energy using @c NSUnitEnergy.kilowattHours
+ @return A new @c CPRouteDetail instance representing the battery energy
+
+ @note Most electric vehicles use kilowatt-hours as the standard unit for battery capacity. The
+ system automatically formats this with the "kWh" abbreviation.
+ */
++ (instancetype)routeDetailWithKilowattHours:(NSMeasurement<NSUnitEnergy *> *)kilowattHours;
+
+/**
+ Creates additional route information for carbon footprint.
+
+ Use this method to display the estimated carbon emissions for the route. This helps
+ environmentally-conscious users evaluate and compare the environmental impact of different
+ route options.
+
+ @discussion The system formats the measurement with appropriate units and precision. Measurements
+ in grams display with the 'g' suffix, while measurements in kilograms use 'kg'. The measurement
+ is automatically formatted as CO₂ in the UI (e.g., "2.5 kg CO₂"). The system may round values
+ for display clarity.
+
+ @param carbonFootprint A measurement of carbon emissions using @c NSUnitMass. Typical units include:
+ - @c NSUnitMass.grams for small emissions (e.g., short trips, efficient vehicles)
+ - @c NSUnitMass.kilograms for larger emissions (e.g., long journeys, less efficient vehicles)
+ @return A new @c CPRouteDetail instance representing the carbon footprint
+
+ @note Apps should calculate carbon footprint based on vehicle type, fuel efficiency, route distance,
+ terrain, and traffic conditions. Electric vehicles may show reduced or zero emissions compared
+ to combustion vehicles, depending on the regional electricity generation mix. Consider
+ providing methodology information in your app's settings or help documentation.
+ */
++ (instancetype)routeDetailWithCarbonFootprint:(NSMeasurement<NSUnitMass *> *)carbonFootprint;
+
+/**
+ Creates additional route information for an eco-score rating.
+
+ Use this method to display a normalized environmental efficiency score for the route. The score
+ should be a value between 0.0 and 100.0, where higher values indicate more environmentally
+ friendly routing options.
+
+ @discussion The eco-score can incorporate multiple factors including carbon emissions, fuel
+ efficiency, traffic congestion impact, terrain characteristics, and route optimization. The system
+ displays this as a percentage-like value with appropriate visual indicators. Use consistent
+ calculation methodology across all routes to enable meaningful comparison.
+
+ @param value The eco-score rating from 0.0 to 100.0. Values outside this range will be clamped.
+ Higher scores indicate more environmentally friendly routes.
+ @return A new @c CPRouteDetail instance representing the eco-score
+
+ @note The interpretation and calculation methodology of eco-scores may vary by app. Consider
+ documenting your scoring algorithm in your app's help or settings, and ensure the score
+ remains consistent across app updates to maintain user trust and understanding.
+ */
++ (instancetype)routeDetailWithEcoScore:(double)value;
+
+/**
+ Creates additional route information for emissions data.
+
+ Use this method to display estimated emissions for the route. This differs from carbon footprint
+ by potentially including other pollutants beyond CO₂, or representing total emissions using
+ different measurement approaches.
+
+ @discussion This method provides flexibility for apps that want to display emissions data differently
+ than the standard carbon footprint calculation. Use cases include displaying other greenhouse gases
+ (methane, nitrous oxide), air pollutants (NOx, particulate matter), or alternative carbon accounting
+ methodologies. Unlike @c carbonFootprint, this method does not automatically append "CO₂" to the
+ display value, giving you control over how emissions are labeled.
+
+ @param emissions A measurement of emissions using @c NSUnitMass. The system formats with appropriate
+ units and precision. Common units include:
+ - @c NSUnitMass.grams for small emissions quantities
+ - @c NSUnitMass.kilograms for standard emissions display
+ - @c NSUnitMass.milligrams for particulate matter or trace pollutants
+ @return A new @c CPRouteDetail instance representing emissions
+
+ @note Consider using @c routeDetailWithCarbonFootprint: for standard CO₂ measurements, as it
+ provides optimized formatting with the CO₂ label. Reserve this method for comprehensive
+ emissions reporting or alternative pollutant measurements where the generic "emissions" label
+ is more appropriate.
+ */
++ (instancetype)routeDetailWithEmissions:(NSMeasurement<NSUnitMass *> *)emissions;
+
+
+/**
+ Creates additional route information for a route rating.
+
+ Use this method to display a user-generated or quality rating for the route. The rating can
+ represent various quality metrics such as road conditions, scenic value, or overall route quality.
+
+ @discussion Route ratings help users select routes based on quality assessments beyond just time
+ and distance. The system displays this as a rating value with appropriate visual indicators.
+ Values are clamped to the 0.0-5.0 range to match common rating systems.
+
+ @param rating The route rating from 0.0 to 5.0. Values outside this range will be clamped.
+ Higher ratings indicate better quality routes.
+ @return A new @c CPRouteDetail instance representing the route rating
+
+ @note Rating methodologies may vary by app. Consider providing information about what the rating
+ represents (e.g., road quality, scenic views, user reviews) in your app's documentation.
+ */
++ (instancetype)routeDetailWithRating:(double)rating;
+
+/**
+ Creates additional route information for High-Occupancy Vehicle (HOV) lane access.
+
+ Use this method to display information about HOV lane eligibility and requirements for the route.
+ This helps users understand whether they can use faster HOV lanes based on vehicle occupancy.
+
+ @discussion HOV information is valuable for users planning carpools or understanding time savings
+ from using HOV lanes. Display requirements such as minimum passenger count or time restrictions.
+
+ @return A new @c CPRouteDetail instance representing HOV lane information
+
+ @note Ensure HOV information is accurate for the specific route and time of day, as restrictions
+ often vary by time and location.
+ */
++ (instancetype)routeDetailWithHOV:(NSString *)hovInfo;
+
+/**
+ Creates additional route information for the number of traffic lights along the route.
+
+ Use this method to display the count of traffic signals that will be encountered along the route.
+ This helps users understand potential stop-and-go traffic patterns and estimate realistic travel time.
+
+ @discussion Traffic light count provides valuable context for route selection, especially in urban
+ areas where signal timing can significantly impact travel time. Routes with fewer traffic lights
+ may offer smoother travel despite similar distances.
+
+ @param trafficLights The number of traffic lights along the route. Common values range from 0 to 50+
+ for typical urban routes.
+ @return A new @c CPRouteDetail instance representing the traffic light count
+
+ @note The count should include all signalized intersections where the route requires stopping or
+ yielding. Consider excluding traffic lights on cross streets that don't affect the route.
+ This information pairs well with travel time estimates to help users understand route flow.
+ */
++ (instancetype)routeDetailWithTrafficLights:(NSUInteger)trafficLights;
+
+/**
+ Creates additional route information for route warnings.
+
+ Use this method to display important warnings or alerts about conditions along the route. This
+ helps users prepare for challenging or hazardous conditions they may encounter.
+
+ @discussion Warnings draw attention to significant issues that may affect route safety or
+ accessibility. Use this for critical information that users should be aware of before selecting
+ a route.
+
+ @return A new @c CPRouteDetail instance representing a route warning
+
+ @note Reserve warnings for significant conditions. Use the tintColor property to set an
+ appropriate color (such as red or orange) to ensure warnings are visually prominent.
+ Consider localizing warning messages for international users.
+ */
++ (instancetype)routeDetailWithWarning:(NSString *)warning;
+
+/**
+ Creates custom additional route information with a symbol name and value.
+
+ Use this method to display app-specific route information that doesn't fit the predefined
+ categories. You provide a custom SF Symbol name and a formatted string value that will be
+ displayed together.
+
+ @discussion Custom route information provides flexibility for specialized use cases not covered
+ by predefined types. However, the system may not display custom items in as many contexts as
+ predefined information types (toll, fuel, battery, etc.), which receive optimized placement and
+ visual treatment. Use custom information sparingly for truly unique routing characteristics.
+
+ @param symbolName An SF Symbol name to display alongside the value. Choose simple, recognizable
+ icons that clearly communicate the information type. Symbol images are rendered as templates
+ and automatically adapt to the current appearance mode (light/dark). Must not be nil.
+ @param value A pre-formatted string to display. The string should be concise and include any
+ necessary units or symbols. The system does not perform additional formatting on custom
+ values, so ensure proper localization and unit conversion in your app.
+ @return A new @c CPRouteDetail instance with the custom symbol and value
+
+ @note Custom route information should be used only when predefined types are insufficient. Consider
+ whether your use case might be addressed by future additions to the framework. If you find
+ yourself creating many custom information types, consider filing enhancement requests for
+ new predefined types that would benefit other developers.
+ */
++ (instancetype)routeDetailWithSymbolName:(NSString *)symbolName value:(NSString *)value;
+
+/**
+ The labelTintColor to apply to the label.
+
+ The system requires a dynamic color that adapts to appearance changes. Static colors without
+ light and dark variants fall back to the system default label color. Alpha components are
+ ignored and all colors render at full opacity.
+
+ @seealso Use @c +[UIColor colorWithDynamicProvider:] or asset catalog colors to create
+ dynamic colors that adapt to light and dark appearances.
+ */
+@property (nonatomic, strong, nullable) UIColor *labelTintColor;
+
+/**
+ The symbolTintColor to apply to the label.
+
+ The system requires a dynamic color that adapts to appearance changes. Static colors without
+ light and dark variants fall back to the system default label color. Alpha components are
+ ignored and all colors render at full opacity.
+
+ @seealso Use @c +[UIColor colorWithDynamicProvider:] or asset catalog colors to create
+ dynamic colors that adapt to light and dark appearances.
+ */
+@property (nonatomic, strong, nullable) UIColor *symbolTintColor;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPThumbnailImage.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPThumbnailImage.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPThumbnailImage.h 2026-04-19 02:25:14
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPThumbnailImage.h 2026-05-29 01:03:41
@@ -40,7 +40,7 @@
@property (nonatomic, strong) UIImage *image API_AVAILABLE(ios(26.4));
/**
- An optional overlay for the thumbnail.
+ An optional overlay for the thumbnail.
*/
@property (nonatomic, strong, nullable) CPImageOverlay *imageOverlay API_AVAILABLE(ios(26.4));
@@ -48,6 +48,18 @@
An optional sports overlay for the thumbnail.
*/
@property (nonatomic, strong, nullable) CPSportsOverlay *sportsOverlay API_AVAILABLE(ios(26.4));
+
+/**
+ Returns the recommended maximum image size for a @c CPThumbnailImage with the given aspect ratio.
+
+ @discussion Use this method to determine the correct size for images before providing them to
+ @c CPThumbnailImage. Supplying a correctly-sized image avoids unnecessary memory use from
+ oversized images being held in the thumbnail pipeline.
+
+ @param aspectRatio The width-to-height ratio of the image.
+ @return The recommended @c CGSize at which to size the image.
+ */
++ (CGSize)maximumImageSizeForAspectRatio:(CGFloat)aspectRatio API_AVAILABLE(ios(27.0));
@end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTravelEstimates.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTravelEstimates.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTravelEstimates.h 2026-04-19 02:25:14
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTravelEstimates.h 2026-05-29 01:03:40
@@ -9,6 +9,8 @@
NS_ASSUME_NONNULL_BEGIN
+@class CPRouteDetail;
+
/**
@c CPTravelEstimates describes the time and distance remaining for the active navigation session.
*/
@@ -32,6 +34,11 @@
- (instancetype)initWithDistanceRemaining:(NSMeasurement<NSUnitLength *> *)distanceRemaining distanceRemainingToDisplay:(NSMeasurement<NSUnitLength *> *)distanceRemainingToDisplay timeRemaining:(NSTimeInterval)time NS_DESIGNATED_INITIALIZER API_AVAILABLE(ios(17.4));
/**
+ Initialize a @c CPTravelEstimates with distance, distance to display, time remaining, and additional trip information.
+ */
+- (instancetype)initWithDistanceRemaining:(NSMeasurement<NSUnitLength *> *)distanceRemaining distanceRemainingToDisplay:(NSMeasurement<NSUnitLength *> *)distanceRemainingToDisplay timeRemaining:(NSTimeInterval)time routeDetails:(NSArray<CPRouteDetail *> *)routeDetails NS_DESIGNATED_INITIALIZER API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos);
+
+/**
Distance remaining for displaying to the user. If not set falls back to distanceRemaining;
*/
@property (nonatomic, readonly, copy) NSMeasurement<NSUnitLength *> *distanceRemainingToDisplay API_AVAILABLE(ios(17.4));
@@ -45,6 +52,11 @@
Time remaining.
*/
@property (nonatomic, readonly, assign) NSTimeInterval timeRemaining;
+
+/**
+ Additional trip information such as battery, fuel, or toll information to display with travel estimates.
+ */
+@property (nonatomic, readonly, copy) NSArray<CPRouteDetail *> *routeDetails API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos);
@end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTrip.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTrip.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTrip.h 2026-04-19 02:23:39
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPTrip.h 2026-05-29 01:19:56
@@ -12,6 +12,8 @@
NS_ASSUME_NONNULL_BEGIN
@class CPNavigationWaypoint;
+@class CPRouteDetail;
+@class CPTravelEstimates;
/**
@c CPRouteChoice describes a possible route for a @c CPTrip.
@@ -25,6 +27,34 @@
*/
- (instancetype)initWithSummaryVariants:(NSArray<NSString *> *)summaryVariants additionalInformationVariants:(NSArray<NSString *> *)additionalInformationVariants selectionSummaryVariants:(NSArray<NSString *> *)selectionSummaryVariants NS_DESIGNATED_INITIALIZER;
+/**
+ Initialize a @c CPRouteChoice with summary variants, additional information variants,
+ selection summary variants, and travel estimates.
+
+ @discussion This initializer enables you to provide comprehensive route information including
+ supplementary details through the travel estimates parameter. During route selection, users
+ can compare routes based on time, distance, and additional factors like toll costs or
+ energy consumption.
+
+ @param summaryVariants An array of summary strings, from most to least preferred. The system
+ selects the first variant that fits available space. Example: "Via I-280 S"
+ @param additionalInformationVariants An array of additional information strings describing
+ route characteristics. Example: "Fastest Route", "Avoids Tolls"
+ @param selectionSummaryVariants An array of summary strings used when this route is selected
+ @param travelEstimates Optional travel estimates including distance, time, and additional
+ route information like tolls, fuel consumption, or battery usage. This information
+ helps users compare routes beyond just time and distance.
+ @return A new @c CPRouteChoice instance with travel estimates
+
+ @note When travel estimates include additional route information, the system displays this
+ information prominently during route selection to facilitate informed decision-making.
+ */
+- (instancetype)initWithSummaryVariants:(NSArray<NSString *> *)summaryVariants
+ additionalInformationVariants:(NSArray<NSString *> *)additionalInformationVariants
+ selectionSummaryVariants:(NSArray<NSString *> *)selectionSummaryVariants
+ travelEstimates:(nullable CPTravelEstimates *)travelEstimates NS_DESIGNATED_INITIALIZER
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos);
+
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;
@@ -53,6 +83,22 @@
*/
@property (nullable, nonatomic, strong) id userInfo;
+/**
+ Trip preview information such as battery, fuel, or toll information to display for this route choice.
+
+ @discussion The travel estimates associated with this route choice provide comprehensive information
+ about the route, including traditional metrics (time and distance) and supplementary information
+ (tolls, energy consumption, etc.).
+
+ During route selection, the system displays this information to help users make informed decisions.
+ For example, users can compare toll costs between different route options or evaluate whether
+ their vehicle's battery level will be sufficient for a particular route.
+
+ @note This property is read-only and set during initialization. To update route information,
+ create a new CPRouteChoice instance with updated travel estimates.
+ */
+@property (nullable, nonatomic, readonly, strong) CPTravelEstimates *travelEstimates API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos);
+
@end
/**
@@ -109,7 +155,7 @@
this trip, arranged from most to least preferred. You must provide at least one variant.
The variant strings should be provided as localized, displayable content.
*/
-@property (nonatomic, copy, nullable) NSArray<NSString *> *destinationNameVariants API_AVAILABLE(ios(17.4));
+@property (nonatomic, copy, nullable) NSArray<NSString *> *destinationNameVariants API_DEPRECATED_WITH_REPLACEMENT("destinationWaypoint.nameVariants", ios(17.4, 27.0));
/**
Set to @YES to enable sharing of the destination of this trip.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPVoiceControlTemplate.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPVoiceControlTemplate.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPVoiceControlTemplate.h 2026-04-19 00:18:57
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CPVoiceControlTemplate.h 2026-05-22 06:40:02
@@ -41,6 +41,30 @@
image:(nullable UIImage *)image
repeats:(BOOL)repeats;
+/**
+ Initialize a voice control state with a title and image.
+
+ @param identifier A custom identifier you can use to identify this voice control state. You'll also
+ switch to this state by specifying this identifier.
+ @param titleVariants An array of title variants. The Voice Control template will select the longest
+ variant that fits your specified content.
+ @param image An image to be animated while this template is visible. The system
+ enforces a minimum cycle duration of 0.3 seconds and a maximum cycle duration of 5 seconds.
+ Voice Control state images may be a maximum of 150 by 150 points.
+ @param backgroundImage A custom background image to be displayed behind the voice control template content.
+ The background image fills the entire template view and appears behind all voice control
+ state content, including the state image, title variants, and action buttons.
+ @param repeats For an animated image, YES if the animation should repeat indefinitely, NO
+ to run the animation only once.
+
+ @discussion When providing an image, your app should provide a @c UIImage that is display-ready. If necessary for the image, provide light and dark styles by using an asset from your asset catalog, prepared with light and dark styles or by using @c UIImageAsset to combine two @c UIImage instances into a single image with both styles.
+ */
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ titleVariants:(nullable NSArray <NSString *> *)titleVariants
+ image:(nullable UIImage *)image
+ backgroundImage:(nullable UIImage *)backgroundImage
+ repeats:(BOOL)repeats API_AVAILABLE(ios(27.0));
+
@property (nullable, nonatomic, readonly, copy) NSArray <NSString *> *titleVariants;
@property (nullable, nonatomic, readonly, strong) UIImage *image;
@@ -72,6 +96,14 @@
* @return The maximum number of action buttons supported by this template.
*/
@property (nonatomic, readonly, class) NSInteger maximumActionButtonCount API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(tvos, visionos) API_UNAVAILABLE(macos, watchos);
+
+/**
+ A custom background image to be displayed behind the voice control template content.
+
+ The background image fills the entire template view and appears behind all voice control
+ state content, including the state image, title variants, and action buttons.
+ */
+@property (nullable, nonatomic, readonly, strong) UIImage *backgroundImage API_AVAILABLE(ios(27.0));
@end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CarPlay.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CarPlay.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CarPlay.h 2026-04-19 02:25:12
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CarPlay.framework/Headers/CarPlay.h 2026-05-29 01:03:38
@@ -12,6 +12,7 @@
#import <CarPlay/CPAlertTemplate.h>
#import <CarPlay/CPBarButton.h>
#import <CarPlay/CPBarButtonProviding.h>
+#import <CarPlay/CPChargingStationConnection.h>
#import <CarPlay/CPContact.h>
#import <CarPlay/CPContactTemplate.h>
#import <CarPlay/CPDashboardButton.h>
@@ -27,6 +28,7 @@
#import <CarPlay/CPInformationTemplate.h>
#import <CarPlay/CPInstrumentClusterController.h>
#import <CarPlay/CPInterfaceController.h>
+#import <CarPlay/CPLaneGuidance.h>
#import <CarPlay/CPLocation.h>
#import <CarPlay/CPListImageRowItem.h>
#import <CarPlay/CPListImageRowItemCardElement.h>
@@ -44,9 +46,13 @@
#import <CarPlay/CPManeuver.h>
#import <CarPlay/CPMapButton.h>
#import <CarPlay/CPMapTemplate.h>
+#import <CarPlay/CPMapPanelItem.h>
+#import <CarPlay/CPMapPanel.h>
+#import <CarPlay/CPMapPanelSection.h>
#import <CarPlay/CPMapTemplateWaypoint.h>
#import <CarPlay/CPMessageComposeBarButton.h>
#import <CarPlay/CPMessageListItem.h>
+#import <CarPlay/CPMultiStopCardConfiguration.h>
#import <CarPlay/CPNavigationAlert.h>
#import <CarPlay/CPNavigationEnum.h>
#import <CarPlay/CPNavigationSession.h>
@@ -54,9 +60,14 @@
#import <CarPlay/CPNowPlayingButton.h>
#import <CarPlay/CPNowPlayingMode.h>
#import <CarPlay/CPNowPlayingTemplate.h>
+#import <CarPlay/CPPanel.h>
+#import <CarPlay/CPMapPanelButtonConfiguration.h>
+#import <CarPlay/CPPanelButtonConfiguration.h>
+#import <CarPlay/CPPanelItem.h>
#import <CarPlay/CPPlaybackConfiguration.h>
#import <CarPlay/CPPointOfInterest.h>
#import <CarPlay/CPPointOfInterestTemplate.h>
+#import <CarPlay/CPRouteDetail.h>
#import <CarPlay/CPSearchTemplate.h>
#import <CarPlay/CPListItemTypes.h>
#import <CarPlay/CPRerouteReason.h>