releases.shpreview
Mapbox/Mapbox Navigation iOS

Mapbox Navigation iOS

$npx @buildinternet/releases show mapbox-navigation-ios
Mon
Wed
Fri
MayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases20Avg6/moVersionsv3.19.0-beta.1 → v3.23.0
Jan 16, 2026

[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 3.18.3, 3.19.1, 3.20.1 or any version from 3.21.0 onward.

Packaging

Map

  • Maps SDK's MapboxMaps.MapView is now initialized by NavigationMapView using MapboxMaps.MapInitOptions(locationDataModel:). This passes location and heading providers during initialization, rather than overriding them afterwards using MapboxMaps.MapView.location.override(locationProvider:headingProvider:). This prevents MapView from creating a redundant MapboxMaps.AppleLocationProvider (which is unused by NavigationMapView and the Navigation SDK).

Navigation Camera

  • Fixed a long animation during the initial location update in NavigationViewController.
  • Fixed an issue where the camera would switch to the following state on the first location update even after NavigationMapView.stop() was called.
Dec 19, 2025

Packaging

Routing

  • Fixed an issue where extra faster route requests could be initiated by the SDK.
Dec 9, 2025

Packaging

API Deprecations

  • Deprecated RouteVoiceController.init(routeProgressing:rerouteStarted:fasterRouteSet:speechSynthesizer:) in favor of the new RouteVoiceController.init(routeProgressing:rerouteSoundTrigger:speechSynthesizer:).

Audio

  • Audio playback operations (play, stop, set volume) of the AVAudioPlayer within the MapboxSpeechSynthesizer are now triggered on a background thread. This change minimizes the risk of the application hanging during voice instruction playback.
  • Improved reroute sound logic. The reroute sound now plays only when a new route is fetched and applied, rather than when rerouting starts. This applies to both automatic reroutes and faster route scenarios.
  • Fixed an issue that audio sessions activated by the SDK (for playback of voice instructions and reroute sound) were not interrupting spoken audio content playback from other applications (e.g. Podcasts).

Directions

  • Added detection of duplicated URL request parameters derived from DirectionsOptions, IsochroneOptions, and MatrixOptions - an error is logged when duplicates are found.
Nov 21, 2025

Packaging

Audio

  • Audio playback operations (play, stop, set volume) of the AVAudioPlayer within the MapboxSpeechSynthesizer are now triggered on a background thread. This change minimizes the risk of the application hanging during voice instruction playback.
Nov 11, 2025

Packaging

Nov 10, 2025

Packaging

Map

  • Added the congestion configuration CongestionColorsConfiguration.displaySoftGradientForTraffic to customize if the color transition between traffic congestion changes should use a soft gradient appearance or abrupt color change.
Nov 7, 2025

Changes since v2.20.2:

Routing

  • NavigationRouteOptions.init(waypoints:profileIdentifier:queryItems:) and NavigationMatchOptions.init(waypoints:profileIdentifier:queryItems:) set the default values for shapeFormat, locale, distanceMeasurementSystem, routeShapeResolution, includesSpokenInstructions, and includesVisualInstructions only if the values were not passed in queryItems. (#4794)

Map

  • Fixed an issue where the initially set CarPlay navigation camera values were being overwritten when updates to this property were disabled.

Audio

  • Fixed an issue that audio sessions activated by the SDK (for playback of voice instructions and reroute sound) were not interrupting spoken audio content playback from other applications (e.g. Podcasts).

Documentation is available online or within Xcode.

Oct 24, 2025

Packaging

API Deprecations

  • ViewportState.routeProgress is deprecated and is always nil now. Use ViewportState.navigationProgress instead.
  • ViewportState.heading is deprecated and is always nil now. Use ViewportState.navigationHeading instead.
  • ViewportState.location is deprecated in favor of ViewportState.navigationLocation instead.
  • ViewportState.init(location:routeProgress:viewportPadding:heading:) is deprecated in favor of ViewportState.init(navigationLocation:navigationProgress:viewportPadding:navigationHeading:).
  • NavigationRoute.nativeRoute, NavigationRoute.init?(nativeRoute:), and AlternativeRoute.init?(mainRoute:alternativeRoute:) are deprecated and should no longer be used.
  • CoreConfig.routeRequestConfig is deprecated. Configure request options directly using RouteOptions and MatchOptions.
  • TelemetryAppMetadata.userId and TelemetryAppMetadata.sessionId are deprecated and no longer have any effect.

Routing

  • Fixed an issue where request parameters could be lost on reroutes when using a custom RouteOptions subclass. If you subclass RouteOptions, make sure to implement urlQueryItems, init(from:), encode(to:), and init(waypoints:profileIdentifier:queryItems:).
  • NavigationRouteOptions.init(waypoints:profileIdentifier:queryItems:) and NavigationMatchOptions.init(waypoints:profileIdentifier:queryItems:) set the default values for shapeFormat, locale, distanceMeasurementSystem, routeShapeResolution, includesSpokenInstructions, and includesVisualInstructions only if the values were not passed in queryItems.
  • RoutingConfig.datasetProfileIdentifier was added to configure the dataset profile for routing tiles. It is important to set this value before initializing MapboxNavigationProvider and use the same value for the following ProfileIdentifier in route requests options.
  • Fixed an issue where authentication route request parameters could be duplicated when using a custom DirectionsOptions subclass.

Navigation Camera

  • When implementing a custom ViewportDataSource for the navigation camera, migrate to viewportState.navigationProgress for tracking active guidance progress.

Map

  • Fixed the crash on an alternative map route annotation offset calculation when a deviation point is further than 80% of the main route.

CarPlay

  • Fixed an incorrect CarPlayActivity value passed in CarPlayManagerDelegate function calls:

    • carPlayManager(_:, leadingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, trailingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, mapButtonsCompatibleWith traitCollection:, in:, for:).

    Now CarPlayActivity.panningInBrowsingMode and CarPlayActivity.panningInNavigationMode are passed in the above delegate function calls when the map is panned after showing the panning interface. Previously, those values were only passed at the moment of initial presentation of the panning interface and immediately after performing any panning (or any action that exits the map camera's follow mode), the passed CarPlayActivity was reverted to CarPlayActivity.browsing or CarPlayActivity.navigating even though the panning interface was still shown.

    In addition, CarPlayManager.currentActivity is also updated correctly in the mentioned scenarios.

  • Fixed a problem that navigation bar buttons would not be updated properly for navigation mode when customized with CarPlayManagerDelegate implementation, because of too early execution of calls to CarPlayManagerDelegate functions:

    • carPlayManager(_:, leadingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, trailingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, mapButtonsCompatibleWith traitCollection:, in:, for:).

    Those calls were previously executed before CarPlayNavigationViewController instantiation. Now they are performed after CarPlayNavigationViewController instantiation, right after calling CarPlayManagerDelegate.carPlayManager(_:, willPresent:).

Other changes

  • Fixed a possible race condition in NavigationCamera state updates.
  • Fixed memory leaks caused by Task.detached usage in NavigationController.
  • Fixed memory leaks in NWPathMonitor caused by a non-stopped monitor.
  • Removed excessive Sendable conformance for types from Turf and Maps.
  • StepsViewController.measurementSystem is now public.
Oct 10, 2025

Packaging

API Deprecations

  • ViewportState.routeProgress is deprecated and is always nil now. Use ViewportState.navigationProgress instead.
  • ViewportState.heading is deprecated and is always nil now. Use ViewportState.navigationHeading instead.
  • ViewportState.location is deprecated in favor of ViewportState.navigationLocation instead.
  • ViewportState.init(location:routeProgress:viewportPadding:heading:) is deprecated in favor of ViewportState.init(navigationLocation:navigationProgress:viewportPadding:navigationHeading:).

Navigation Camera

  • When implementing a custom ViewportDataSource for the navigation camera, migrate to viewportState.navigationProgress for tracking active guidance progress.

Other changes

  • Fixed a possible race condition in NavigationCamera state updates.
  • Fixed memory leaks caused by Task.detached usage in NavigationController.
  • Fixed memory leaks in NWPathMonitor caused by a non-stopped monitor.
  • Removed excessive Sendable conformance for types from Turf and Maps.
Oct 3, 2025

Packaging

Sep 30, 2025

Packaging

Sep 26, 2025

Packaging

API Deprecations

  • NavigationRoute.nativeRoute, NavigationRoute.init?(nativeRoute:), and AlternativeRoute.init?(mainRoute:alternativeRoute:) are deprecated and should no longer be used.
  • CoreConfig.routeRequestConfig is deprecated. Configure request options directly using RouteOptions and MatchOptions.
  • TelemetryAppMetadata.userId and TelemetryAppMetadata.sessionId are deprecated and no longer have any effect.

Routing

  • Fixed an issue where request parameters could be lost on reroutes when using a custom RouteOptions subclass. If you subclass RouteOptions, make sure to implement urlQueryItems, init(from:), encode(to:), and init(waypoints:profileIdentifier:queryItems:).
  • NavigationRouteOptions.init(waypoints:profileIdentifier:queryItems:) and NavigationMatchOptions.init(waypoints:profileIdentifier:queryItems:) set the default values for shapeFormat, locale, distanceMeasurementSystem, routeShapeResolution, includesSpokenInstructions, and includesVisualInstructions only if the values were not passed in queryItems.
  • RoutingConfig.datasetProfileIdentifier was added to configure the dataset profile for routing tiles. It is important to set this value before initializing MapboxNavigationProvider and use the same value for the following ProfileIdentifier in route requests options.

Map

  • Fixed the crash on an alternative map route annotation offset calculation when a deviation point is further than 80% of the main route.

CarPlay

  • Fixed an incorrect CarPlayActivity value passed in CarPlayManagerDelegate function calls:

    • carPlayManager(_:, leadingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, trailingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, mapButtonsCompatibleWith traitCollection:, in:, for:).

    Now CarPlayActivity.panningInBrowsingMode and CarPlayActivity.panningInNavigationMode are passed in the above delegate function calls when the map is panned after showing the panning interface. Previously, those values were only passed at the moment of initial presentation of the panning interface and immediately after performing any panning (or any action that exits the map camera's follow mode), the passed CarPlayActivity was reverted to CarPlayActivity.browsing or CarPlayActivity.navigating even though the panning interface was still shown.

    In addition, CarPlayManager.currentActivity is also updated correctly in the mentioned scenarios.

  • Fixed a problem that navigation bar buttons would not be updated properly for navigation mode when customized with CarPlayManagerDelegate implementation, because of too early execution of calls to CarPlayManagerDelegate functions:

    • carPlayManager(_:, leadingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, trailingNavigationBarButtonsCompatibleWith traitCollection:, in:, for:),
    • carPlayManager(_:, mapButtonsCompatibleWith traitCollection:, in:, for:).

    Those calls were previously executed before CarPlayNavigationViewController instantiation. Now they are performed after CarPlayNavigationViewController instantiation, right after calling CarPlayManagerDelegate.carPlayManager(_:, willPresent:).

Other changes

  • StepsViewController.measurementSystem is now public.
Sep 19, 2025

Packaging

Sep 12, 2025

Packaging

Electronic horizon

Note: The Mapbox Electronic Horizon feature of the Mapbox Navigation SDK is in public beta and is subject to changes, including its pricing. Use of the feature is subject to the beta product restrictions in the Mapbox Terms of Service. Mapbox reserves the right to eliminate any free tier or free evaluation offers at any time and require customers to place an order to purchase the Mapbox Electronic Horizon feature, regardless of the level of use of the feature.

  • RoadObject initializer is now optional.

Other changes

  • Fixed NavigationController.bannerInstructions. Now a new event is published only when a new banner instruction is available and not with every route progress update.
  • Avoid using precondition and preconditionFailure to avoid possible runtime crashes in Release builds.
  • Updated default route line traffic colors to match the Mapbox Standard style.

User interface

  • Removed an initial hardcoded call to StandardDayStyle().apply(). The StandardDayStyle and StandardNightStyle are still default values when initializing NavigationViewController and can be changed by setting NavigationOptions.styles value.
Sep 1, 2025

Packaging

Aug 29, 2025

Packaging

Aug 25, 2025

Changes since v2.20.1:

Routing

  • Fixed the usage of the RouteOptions type from the initial route request instead of a hardcoded type, ensuring additional parameters are preserved on reroutes. (#4789)
  • Fixed ProfileIdentifier comparison for the custom profile identifiers, so that route refresh is enabled for custom automobileAvoidingTraffic profiles.

Documentation is available online or within Xcode.

Aug 19, 2025

Packaging

Electronic horizon

Note: The Mapbox Electronic Horizon feature of the Mapbox Navigation SDK is in public beta and is subject to changes, including its pricing. Use of the feature is subject to the beta product restrictions in the Mapbox Terms of Service. Mapbox reserves the right to eliminate any free tier or free evaluation offers at any time and require customers to place an order to purchase the Mapbox Electronic Horizon feature, regardless of the level of use of the feature.

  • RoadObject initializer is now optional.

Other changes

  • Fixed NavigationController.bannerInstructions. Now a new event is published only when a new banner instruction is available and not with every route progress update.
  • Avoid using precondition and preconditionFailure to avoid possible runtime crashes in Release builds.

User interface

  • Removed an initial hardcoded call to StandardDayStyle().apply(). The StandardDayStyle and StandardNightStyle are still default values when initializing NavigationViewController and can be changed by setting NavigationOptions.styles value.
Aug 8, 2025

Packaging

Aug 1, 2025

Packaging

Latest
v3.23.0
Tracking Since
Apr 26, 2024
Last checked May 1, 2026