Release Notes
Version 2.4.1 - 08/07/2026
Discover the improvements and new features included in the following version.
Share your thoughts on this release by using the feedback button located at the bottom of the page.
Navigation
Fixes
- Fix an issue where the vehicle horizon service could enter a malfunctioning state, requiring a restart, when navigating through complex multi-lane intersections.
Version 2.4.0 - 06/07/2026
General
Breaking changes
- Starting 6 months after the next NavSDK release, initializing Telemetry will become mandatory.
- Rename
com.tomtom.sdk.common.configuration.OfflineMapConfigurationtocom.tomtom.sdk.common.configuration.RegionStoreConfiguration.
Updates
- Migrate the Map Display Error Dialog and Marker details dialog components to Compose Bottom Sheets, providing a more consistent look and feel across dialogs.
com.tomtom.sdk.common.configuration.CoreConfiguration.Builder2is now available in General Availability.com.tomtom.sdk.common.configuration.SdkConfigurationFactories.kt.buildSdkConfiguration(Context,String,suspend()->UserConsent,String=,CoreConfiguration.BuilderV2.()->Unit=,CacheStorageConfiguration.Builder.()->Unit=):SdkConfigurationis now available in General Availability.com.tomtom.sdk.common.configuration.SdkConfigurationFactories.kt.buildSdkConfiguration(Context,String,suspend()->UserConsent,String=,CoreConfiguration.BuilderV2.()->Unit=,CacheStorageConfiguration.Builder.()->Unit=,RegionStoreConfiguration.Builder.() -> Unit):SdkConfigurationis now available in General Availability.com.tomtom.sdk.common.configuration.RegionStoreConfigurationis now available in General Availability.
Fixes
-
Fix a
dex2oatverifier failure that occurred.when integrating NavSDK into an Android Automotive (AAOS) system image. No action is required.
-
Logs no longer cut off if their size exceeds 4KB and are instead split into multiple lines.
-
OSE Automotive: Fix button issue when planning route.
Deprecations
- Deprecate
com.tomtom.sdk.common.configuration.CoreConfiguration.Builder. - Deprecate the
com.tomtom.sdk.common.configuration.SdkConfigurationFactories.kt.buildSdkConfiguration(Context,String,String=,CoreConfiguration.Builder.()->Unit=,CacheStorageConfiguration.Builder.()->Unit=):SdkConfigurationmethod.
Data Management
Updates
-
The following APIs are now available in General Availability:
- method
com.tomtom.sdk.datamanagement.nds.NdsStore.setUpdatesEnabled - property
com.tomtom.sdk.datamanagement.nds.NdsStore.updater - method
com.tomtom.sdk.datamanagement.nds.NdsStoreConfiguration.buildUpdateConfiguration - method
com.tomtom.sdk.datamanagement.nds.update.NdsStoreUpdateConfigurationFactories.kt.buildNdsStoreUpdateConfiguration - property
com.tomtom.sdk.datamanagement.nds.NdsStoreConfiguration.updateConfiguration - class
com.tomtom.sdk.datamanagement.nds.update.NdsStoreUpdateConfiguration - secondary constructor
com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionsUpdater
- method
-
The factory function
com.tomtom.sdk.datamanagement.nds.NdsStoreFunctions.kt.NdsStoreis now available in General Availability. -
Update the offline map developer guides with the latest configuration and initialization steps.
Fixes
-
com.tomtom.sdk.datamanagement.navigationtile.NavigationTileStorenow only accepts URLs with anhttporhttpsscheme, preventing configuration errors from unsupported URL schemes. -
com.tomtom.sdk.datamanagement.nds.region.RegionUpdaterno longer blocks the UI thread, which could previously cause the app to become unresponsive. This includes:findRegionsAroundPosition()andfindRegionsAlongPolyline()no longer block the UI threadcalculateUninstallSize()no longer blocks the caller's threadcalculateUninstallSize()andcalculateDownloadSize()now return more possibleMapUpdateErrorvalues
-
Fix a rare crash (
ConcurrentModificationException) incom.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionsUpdaterthat could occur when region-update callbacks were processed concurrently. -
Fix an issue where the SDK could not recover from a missing map keystore folder.
-
Fix several rare crashes that could occur during initialization of the NDS.Live tile store, for example due to unexpected encryption or persistent-cache errors.
-
Fix an issue where automatic map updates skipped updating regions around the vehicle's current location if a route was already active when updates were enabled.
-
Fix an issue where the SDK could saturate a CPU core and degrade overall device performance while a map was downloading and no onboard map was yet available.
Location
Updates
com.tomtom.sdk.location.LocationProviderno longer throws anIllegalStateExceptionwhenremoveOnLocationUpdateListenerorremovePredictionsUpdateListeneris called after the provider has been closed.
Map Visualization
Breaking changes
- Traffic sign and traffic light visualization in
com.tomtom.sdk.map.display.visualization.navigation.NavigationVisualizationis now disabled by default.
Fixes
- Fix an issue where certain navigation visualization elements did not update automatically in Jetpack Compose apps, because
com.tomtom.sdk.map.display.visualization.navigation.NavigationVisualizationAdapterwas not connected to the underlying data flows. - Fix an issue where the alternative-route time-difference marker remained visible on the map after requesting a distinct alternative route while driving.
- The map no longer pans unexpectedly when performing a QuickScale (double-tap-and-drag) gesture.
- Fix a style-loading failure that could occur when loading the Satellite map style.
- Fix a crash that could occur during initialization of
com.tomtom.sdk.map.display.visualization.safetylocation.SafetyLocationVisualization. - Fix an issue in Jetpack Compose-based map visualization that could cause incorrect traffic-state tracking across recompositions.
- You can now use multiple
com.tomtom.sdk.map.display.compose.TomTomMapcomposables within a single Compose layout, each with its own independent map visualization state. - Map images are now rendered at the correct resolution, using the display context DPI instead of the application context DPI.
- Fix an issue where
com.tomtom.sdk.map.display.compose.TomTomMapcould keep holding map resources in memory after the composable was removed from the UI. - Fix a crash (
IllegalStateException) that could occur when a message was processed after messaging had been shut down. - Fix a crash that could occur when tapping a traffic incident (such as a jam or roadworks) on the map while using TomTom Orbis Maps V2.
- Prevent unsupported configurations that mix
com.tomtom.sdk.maps:map-display-standardandcom.tomtom.sdk.maps:map-display-premiumunless you use the duo flavor. This means you now need to include only one renderer module in your app, or use the duo flavor when you intentionally bundle both. - You can now use GeoJSON-based Visualization modules with the Satellite map style.
- Fix a crash that could occur when removing certain map visualization elements (such as range visualizations) from the map.
- Stop
IllegalStateException: Instance has been closedfrom being thrown when a route progress update arrives after navigation visualization has been stopped. - Fix a crash in
com.tomtom.sdk.map.display.compose.TomTomMapwhen the composable left composition before the map finished initializing and was re-added within the sameViewModelStoreOwner. - Improve map tile conversion performance, reducing the time it takes for map tiles to become available for rendering.
- Retry initialization with backoff when the renderer rejects the initial map style, so the map no longer stays blank after a transient style-load failure.
Deprecations
- The contents of the
com.tomtom.sdk.maps.visualization:navigationmodule have been relocated tocom.tomtom.sdk.maps.visualization:visualization. Remove the dependency oncom.tomtom.sdk.maps.visualization:navigation. com.tomtom.sdk.map.display.marker.MarkerProperties.balloonTextis now deprecated without replacement. You can now anchor any custom Compose UI element to a geographic coordinate on the map usingcom.tomtom.sdk.map.display.compose.MapViewState.getScreenOffsetForGeoPoint()andModifier.offset. See the Markers guide for a complete example.
Navigation
Breaking changes
-
com.tomtom.sdk.navigation.resumesnapshotrenewer.NavigationResumeSnapshotRenewerno longer saves a navigation resume snapshot in response tocom.tomtom.sdk.navigation.RouteUpdatedListener2events whencom.tomtom.sdk.navigation.resumesnapshotrenewer.NavigationResumeSnapshotRenewerOptions.saveIntervalis set toDuration.INFINITE.Setting
saveIntervaltoDuration.INFINITEnow disables snapshot saves triggered by route updates, reducing flash storage I/O by avoiding writes for dynamic route data (such as traffic, ETA, or section refreshes) that become outdated once the route is paused. Snapshots are still saved on active route change, waypoint arrival or departure, and navigation start. Unless you were relying onsaveIntervalbeingDuration.INFINITE, there is nothing to worry about.
New features
-
Offline-only navigation can now be set up using the new initialization API.
Simple initialization example:
1tomTomNavigation =2 OfflineTomTomNavigationFactory.create(3 Configuration(4 context = context,5 apiKey = TOMTOM_API_KEY,6 locationProvider = locationProvider,7 ndsStore = ndsStore,8 ),9 )Advanced initialization example:
1tomTomNavigation = OfflineTomTomNavigationFactory.create(2 Configuration(3 context = context,4 apiKey = TOMTOM_API_KEY,5 locationProvider = locationProvider,6 ndsStore = ndsStore,7 betterProposalAcceptanceMode = BetterProposalAcceptanceMode.Automatic,8 safetyLocationsConfiguration = safetyLocationsConfiguration,9 hazardsConfiguration = hazardsConfiguration,10 )11)
Updates
-
The following APIs are now in General Availability:
com.tomtom.sdk.datamanagement.nds.update.NdsStoreUpdaterConfiguration.manualUpdateNetworkConfig
Fixes
- Backport fix for error in protobuf conversion error of
CLaneInfoattribute. - Disable Continue Interim feature toggle by default.
- Route updates no longer fail when navigating near waypoints.
- Fix an issue where a resumed navigation session used the wrong instruction language instead of the user's preferred language.
- Respect initial arrival charge at first charging station when it is under
minChargeAtCharginsStations. - When replanning an EV alternative route, the system now correctly respects the initial arrival charge at the first charging station, consistent with active route replanning behaviour.
- Fix confusing road numbers appearing in traffic jam warnings in Japan, South Korea, and Taiwan.
- Fix early guidance announcement trigger distance on high-speed urban roads.
- Fix an issue where the speed limit displayed inside roundabouts could be missing or incorrect when the underlying map data did not provide one.
- Fix a logic error in complex intersection modeling that could cause the predicted road ahead (horizon) to be inaccurate, requiring an unexpected reset when the vehicle deviated from the incorrect prediction.
- Fix an issue where a custom cache directory configured via
com.tomtom.sdk.common.configuration.SdkConfiguration.cacheStorageConfigurationwas ignored, and the SDK used the default cache location instead. - Fix an issue where the predicted vehicle path shown on the map had a visible gap immediately after passing a decision point (such as a roundabout entry).
Deprecations
com.tomtom.sdk.navigation.RouteReplanner.update(),RouteReplanner.fullReplan(), andRouteReplanner.incrementRouteContents()are deprecated and will be removed 6 months after the next release.RouteReplanner.backToRoute()has been moved from an experimental to an internal API and is no longer part of the public interface.
Routing
Updates
- You can now receive turn-by-turn instructions incrementally while planning a route with TomTom Orbis Maps online, reducing the time before the first instruction becomes available.
Fixes
- Fix an issue where route planning could fail with an internal deserialization error when converting a planned route.
- Fix an issue in EV routing where charging station data found through offline search was incorrectly forwarded to the route-planning engine.
- Fix a missing
reachableOffsetproperty incom.tomtom.sdk.routing.route.Summaryfor routes planned with Long Distance EV Routing when using TomTom Orbis Maps V2. - Fix a deadlock that could occur when the route planner was closed while a route was still being calculated.
- Traffic sections now display correctly when using v3 online routing. Previously, traffic sections with v3-specific category types were silently dropped during deserialization.
- Route progress points are no longer missing from EV routing responses. Previously, a server-side interaction between wildcard field expansion and the exclude header could cause progress data to be omitted.
- Reject map-matched events that reference non-existent map segments, improving the robustness of route data processing.
- Online instruction maneuver points and route path points are now returned in GeoJSON format.
- Remove
@RestrictToExtendedFlavor(ExternalScope.LIBRARY_GROUP)fromcom.tomtom.sdk.routing.route.section.traffic.Cause.
Deprecations
com.tomtom.sdk.navigation.NavigationOptions.minDeviationDistanceis deprecated in favor ofcom.tomtom.sdk.navigation.NavigationOptions.minDeviationTime. Update your code to useminDeviationTimeinstead.
Search
Fixes
- Fix an issue where custom POIs did not work with offline search when no map data was available.
- Fix an issue where tapping a POI on the map to view its details could fail because the SDK could not parse the response from the search service.
- Fix EV search failing when the backend returns an unrecognized value in the tariff restriction reservation policy field.
Telemetry
Deprecations
-
com.tomtom.sdk.telemetry.Consentand thecom.tomtom.sdk.telemetry.Telemetry.initialize(context, configProvider)overload are deprecated.Before:
Telemetry.initialize(context, configProvider)Telemetry.userConsent = Consent.PersonalizedAfter:
1Telemetry.initialize(2 context,3 configProvider,4 locationProvider,5 initialConsent = UserConsent.TelemetryOn,6)78// Later, when the end-user changes their preference:9Telemetry.setConsent(UserConsent.LocationOnly)Important:
- When using the consent-aware APIs (
Telemetry.initializeoverloads that acceptinitialConsent/getInitialConsent,Telemetry.consentandTelemetry.setConsent), Telemetry must be initialized (or explicitly opted out by setting the consent toUserConsent.TelemetryOff) before using SDK components that may post telemetry events. Otherwise, the application may crash when telemetry events are posted. - Telemetry initialization can only be performed once. Any subsequent attempt to reinitialize Telemetry will result in an exception.
- Start the
LocationProviderupdates before initializing Telemetry to avoid warnings.
- When using the consent-aware APIs (
-
com.tomtom.sdk.telemetry.RestrictedTelemetryConfigProvideris deprecated and will be removed 6 months after the next release. -
com.tomtom.sdk.telemetry.RestrictedTelemetryConfigProvidermigration instructions:Prerequisite:
First, migrate to the consent-aware
Telemetry.initializeAPI, which has its own migration steps. See theTelemetry.initializedeprecation documentation for details.Before:
Telemetry.initialize(context, RestrictedTelemetryConfigProvider(context, apiKey))After:
- Use
DefaultTelemetryConfigProviderinstead and specifyUserConsent.LocationOnly:
1Telemetry.initialize(2 context,3 DefaultTelemetryConfigProvider(context, apiKey),4 locationProvider,5 initialConsent = UserConsent.LocationOnly,6)Behavioral difference:
-
Setting the consent to
UserConsent.LocationOnlyensures that only location events are allowed, maintaining the same behavior asRestrictedTelemetryConfigProvider. -
It is the integrator's responsibility to limit the end-user consent options to
UserConsent.TelemetryOffandUserConsent.LocationOnly. Allowing the end-user to chooseUserConsent.TelemetryOnwill send all events, which contradicts the use-case of this construct.
- Use
Traffic
Fixes
- Fix a crash during SDK initialization that could occur when an invalid
java.util.Localewas provided in the configuration. The SDK now validates the locale and falls back to a default if it is invalid.
Vehicle
Updates
- Improve the error message shown when consumption options are set via
com.tomtom.sdk.vehicle.VehicleProviderwithout also providingspeedConsumption, making the misconfiguration easier to diagnose.
Fixes
- You can now set electric-vehicle speed-consumption curve values up to 3000 Wh/km for speeds of 100 km/h and above. Previously all values were capped at 750 Wh/km, which caused route planning to fail for high-consumption vehicles such as those towing heavy trailers. Values below 100 km/h are still capped at 750 Wh/km.
Removals
- Remove deprecated
com.tomtom.sdk.vehicle.ChargingConnector.copy()method. - Remove deprecated
com.tomtom.sdk.vehicle.ChargingConnectordestructuring declarations. - Remove deprecated
com.tomtom.sdk.vehicle.ChargingParameters.copy()method. - Remove deprecated
com.tomtom.sdk.vehicle.ChargingParametersdestructuring declarations.
Virtual Horizon
Fixes
- Fix an issue where safety camera icons (and other horizon-based map elements) could flicker or blink on the map due to map data updates reassigning internal element identifiers.
- Fix an issue where the speed limit (and other road information) could stop being displayed after exiting a tunnel, until a route deviation was made.
- Report a speed limit inside roundabouts that previously had none, derived from the lower of the entry and exit limits (capped at 40 km/h urban / 60 km/h non-urban).
Deprecations
- Deprecate
com.tomtom.sdk.navigation.horizon.elements.HorizonElement.idin the interface and all GA horizon elements.