Changelog for Mapbox Maps SDK for Android
Mapbox welcomes participation and contributions from everyone.
16 KB Page Size Support: Starting with version 11.7.0 and 10.19.0, NDK 27 is supported with dedicated artifacts that include support for 16 KB page sizes. If your app does not require 16 KB page size support, you can keep using our default artifacts without -ndk27 suffix. For more information about our NDK support, see https://docs.mapbox.com/android/maps/guides/#ndk-support
main
11.22.3 May 07, 2026
Features ✨ and improvements 🏁
- Internal fixes and performance improvements.
Dependencies
11.24.0-rc.1 May 05, 2026
Features ✨ and improvements 🏁
- Expose
FeaturesetFeature.originalFeature property.
- Add Vulkan rendering backend support (Public Preview). The Vulkan backend is published as a separate artifact (
android-core-vulkan / android-core-vulkan-ndk27) that replaces the default OpenGL-based android-core. To use it, replace the default core dependency with the Vulkan variant. In your build.gradle.kts add:
configurations.all {
resolutionStrategy.dependencySubstitution {
all {
val requested = requested as? ModuleComponentSelector
if (requested?.group == "com.mapbox.maps" &&
(requested.module == "android-core" || requested.module == "android-core-ndk27")
) {
val vulkanModule = requested.module.replace("android-core", "android-core-vulkan")
useTarget("com.mapbox.maps:$vulkanModule:${requested.version}")
}
}
}
}
Known limitations:
- Android 12 (API 31) or later is recommended. Earlier Android versions may exhibit GPU driver bugs, particularly on devices with Adreno GPUs.
- Only
arm64-v8a is supported.
- No automatic fallback to OpenGL.
MapWidget (Android Auto) is not yet supported.
- Custom layer API is not yet supported.
MapView.snapshot() is not yet supported.
- Rain precipitation effect is not rendered (snow works).
- Add support for rendering landmark models with level-of-detail (LOD), improving performance and memory use for distant 3D landmarks.
- Improve additive blend mode rendering on line layers with high data density, and add the
line-blend-additive-clamp style property for opting out of dynamic density mapping with a fixed value.
- Set a default ambient cache quota of 1 GB and over-evict when the quota is exceeded to reduce eviction churn.
TileStore.create(path) is no longer supported (deprecated since v11.19). Only one TileStore instance per process is now supported.
Bug fixes 🐞
- Fix
isMetricUnits/distanceUnits sync in ScaleBar settings DSL generated by KSP codegen.
- Fix style import config property updates being lost when applied while a concurrent import URL change was loading.
- Fix incorrect color output when applying a color LUT to premultiplied colors.
- Fix incorrect symbol elevation rendering on Mali GPUs (e.g. Google Pixel 9 Pro XL) caused by insufficient shader precision for large z-offset values.
- Fix a crash in the vector tile layer cache when a sibling tile was destroyed during cache reuse.
- Internal fixes and performance improvements.
Dependencies
11.21.4 May 05, 2026
Features ✨ and improvements 🏁
- Internal fixes and performance improvements.
Dependencies
11.23.0 April 29, 2026
Features ✨ and improvements 🏁
- Support symbol paint properties in appearances — symbol layers can now use feature-dependent appearances for paint properties (not only layout), enabling richer per-feature styling of text and icons.
- Improve rendering performance of feature cutouts — optimized depth sampling in the cutout shader yields noticeably smoother rendering when feature cutouts are enabled (e.g. elevated route with cutouts).
- TileStore can now store 3D landmark/navigation tile content types, unblocking their use in offline regions.
- Add support for USB import radius in TileStore — new import parameter for seeding offline tile packs from USB media within a configurable radius.
- Evict tiles based on LRU and optimize eviction — the default eviction policy now uses least-recently-used instead of expiration-based scoring, keeping frequently-viewed tiles around longer and making cleanup passes faster.
- Settings can be set on startup — the SDK now loads
persistent_settings.json and non_persistent_settings.json from the app's internal storage directory at startup, allowing configuration changes without an app rebuild.
Bug fixes 🐞
- Fix attribution links accepting non-HTTP URI schemes.
- Fix a potential file descriptor leak that could cause resource exhaustion.
- Fix icons appearing at incorrect size when
icon-size is data-driven and a non-default scale factor is applied.
- Fix fog incorrectly obscuring the globe when using a custom field of view.
- Fix tile data corruption causing integrity check failures for small tiles stored in the offline cache.
- Fix a crash that could occur when the tile store is destroyed while downloads are still being processed.
- Fix 3D models occasionally not rendering on first load on some devices, caused by background shader compilation not signaling the renderer when compilation completed.
- Fix a crash in
ConfigExpression where dereferencing an empty optional caused undefined behaviour.
- [compose] Fixed Composition leak in ViewAnnotation when annotations are removed from the map.
- [gestures] Fixed interaction leak in
setGesturesManager causing native map interactions to accumulate.
- [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
11.23.0-rc.1 April 20, 2026
Bug fixes 🐞
- Fix attribution links accepting non-HTTP URI schemes.
- Fix a potential file descriptor leak that could cause resource exhaustion.
- [compose] Fixed Composition leak in ViewAnnotation when annotations are removed from the map.
- [compose] Fix Fragment lifecycle observer leak in ViewAnnotation on annotation removal.
Dependencies
11.22.1 April 28, 2026
Bug fixes 🐞
- [gestures] Fixed interaction leak in
setGesturesManager causing native map interactions to accumulate.
- [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
11.22.0 April 16, 2026
Features ✨ and improvements 🏁
- Expose
height and minHeight properties on StandardBuildingsFeature.
- Deprecate
PointAnnotation.iconImage getter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly via PointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed.
- Internal fixes and performance improvements.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManager where bitmap style images were not removed when annotations were deleted.
- Fix feature ID format mismatch in JNI marshaling where whole-number
double feature IDs (e.g. 12345.0) were incorrectly serialized as "12345.000000" instead of "12345", causing setFeatureState to fail when using IDs obtained from queryRenderedFeatures.
- [compose] Fix
MapboxMap crash (place is called on a deactivated node) when used inside a LazyColumn.
- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
Apply is called on deactivated node) may still occur when MapboxMap is used inside a LazyColumn during fast scrolling/item reuse because of LazyColumn prefetch behavior. Workaround: pass a no-op LazyListPrefetchStrategy to rememberLazyListState(); see LazyColumnMapActivity for an example.
- Fix location indicator cutout appearing in the wrong position on devices with high pixel density.
- Fix lines with sub-pixel width being rendered thicker than intended.
- Fix tile data decompression by properly tracking compression state in tile storage.
- Fix potential ANR caused by a deadlock in lifecycle management.
- Fix tile store cleanup task incorrectly deleting in-progress downloads.
- Fix tiles failing to load on some Android devices when the server response is incomplete.
- Fix tunnel roads being clipped or missing near the top of the screen at high pitch angles when crossing tile boundaries.
- Fix stretchable icons used with
icon-text-fit disappearing in some situations.
- Fix dashed lines not rendering correctly when
line-dasharray values are smaller than 1.
Dependencies
11.21.4 May 05, 2026
Dependencies
11.21.3 April 23, 2026
Bug fixes 🐞
- Fix above-ground route line not rendering over tunnel geometry when cutout is active.
- Fix rendering artifacts on feature cutout geometries caused by incorrect shader clipping.
- Fix a potential crash in style configuration expression evaluation when a config value is unset.
Dependencies
11.21.2 April 16, 2026
Features ✨ and improvements 🏁
- Improve rendering performance of feature cutouts
Bug fixes 🐞
- Fix tile cover issues for tunnels
Dependencies
11.20.3 April 14, 2026
Bug fixes 🐞
- Fix tile data decompression by properly tracking compression state in tile storage.
Dependencies
11.21.2 April 16, 2026
Dependencies
11.21.1 April 10, 2026
Features ✨ and improvements 🏁
- Deprecate
PointAnnotation.iconImage getter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly via PointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManager where bitmap style images were not removed when annotations were deleted.
- Fix an issue where overscaled tiles from offline tile packs could delay fetching higher-resolution network tiles.
Dependencies
11.22.0-rc.1 April 08, 2026
11.21.1 April 10, 2026
Dependencies
11.22.0-rc.1 April 08, 2026
Features ✨ and improvements 🏁
- Expose
height and minHeight properties on StandardBuildingsFeature.
- Deprecate
PointAnnotation.iconImage getter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly via PointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed.
- Internal fixes and performance improvements.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManager where bitmap style images were not removed when annotations were deleted.
- Fix feature ID format mismatch in JNI marshaling where whole-number
double feature IDs (e.g. 12345.0) were incorrectly serialized as "12345.000000" instead of "12345", causing setFeatureState to fail when using IDs obtained from queryRenderedFeatures.
- [compose] Fix
MapboxMap crash (place is called on a deactivated node) when used inside a LazyColumn.
- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
Apply is called on deactivated node) may still occur when MapboxMap is used inside a LazyColumn during fast scrolling/item reuse because of LazyColumn prefetch behavior. Workaround: pass a no-op LazyListPrefetchStrategy to rememberLazyListState(); see LazyColumnMapActivity for an example.
- Fix location indicator cutout appearing in the wrong position on devices with high pixel density.
- Fix lines with sub-pixel width being rendered thicker than intended.
- Fix tile data decompression by properly tracking compression state in tile storage.
- Fix potential ANR caused by a deadlock in lifecycle management.
- Fix tile store cleanup task incorrectly deleting in-progress downloads.
- Fix tiles failing to load on some Android devices when the server response is incomplete.
Dependencies
11.21.0 April 02, 2026
Bug fixes 🐞
- Fix tile store eviction failing to clean up files for decompressed tiles, causing gradual storage growth.
- Fix gaps in elevated route line rendering at ramp transitions and tile borders.
- Fix indicator cutout (location puck area) appearing in the wrong position on high-DPI displays.
- Fix incorrect shadow culling on fill-extrusion layers.
- Fix ambient occlusion not being clipped when fill-extrusion layers are clipped by clip layers.
- Fix clip layer updates not always refreshing clipped layers and shadows.
- Fix native memory leak in
AnnotationManager where bitmap style images were not removed onDestroy.
- Fix feature cutout rendering artifacts on some devices caused by insufficient shader precision.
- Fix rendering of stacked underground 3D roads.
- Fix a crash that could occur when the map is destroyed during style loading.
- Fix underground road geometry being clipped in orthographic projection with small viewports.
- Fix map flickering caused by stencil buffer conflicts between raster and hillshade layers.
- Fix potential ANRs when receiving location updates under heavy system load.
- Internal fixes and performance improvements.
Dependencies
11.20.2 March 25, 2026
Bug fixes 🐞
- Fix a bug in eviction logic for TileStore.
Dependencies
11.21.0-rc.1 March 23, 2026
Bug fixes 🐞
- Fix intermittent rendering artifacts (reversed/large bitmaps) on Android Auto caused by stale texture ID reuse in
BitmapWidgetRenderer after surface recreation.
- Fix native memory leak in
AnnotationManager where bitmap style images were not removed onDestroy.
- Fix feature cutout rendering artifacts on some devices caused by insufficient shader precision.
- Fix rendering of stacked underground 3D roads.
- Fix a crash that could occur when the map is destroyed during style loading.
- Fix underground road geometry being clipped in orthographic projection with small viewports.
- Fix map flickering caused by stencil buffer conflicts between raster and hillshade layers.
- Fix potential ANRs when receiving location updates under heavy system load.
- Fix a bug in eviction logic for TileStore.
- Internal fixes and performance improvements.
Dependencies
11.20.1 March 17, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.20.0 March 13, 2026
Features ✨ and improvements 🏁
- [compose] Add declarative animation API to experimental
Marker composable with two animation triggers: appearAnimation and disappearAnimation. Each trigger accepts a list of MarkerAnimationEffect including wiggle (pendulum rotation), scale, fadeIn, and fadeOut. Effects can be customized with parameters (e.g., scale(from = 0.5f, to = 1.5f), fade(from = 0.5f, to = 1.0f)) and combined for rich animations. See MarkersActivity example for usage.
- Improve FPS statistics logging when
mapView.setOnFpsChangedListener() is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.
Bug fixes 🐞
- Fix
MapSurface.setMaximumFps not working correctly on secondary displays (e.g. Android Auto). Use Context.getDisplay() on API 30+ to get the actual display refresh rate instead of always using the primary display's rate.
- Fix
PointAnnotationManager.iconImageBitmap setter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible.
- Fix feature cutout artifacts at route overlaps.
- Fix a data race condition for
FillExtrusion layer.
- Fix several issues related to runtime symbol appearances switches.
- Fix disappearing icons after reducing memory use.
- Fix landmark POI image loads causes relayout for unrelated layers.
- Fix tilestore eviction logic to not block tilestore thread completely.
- Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.
Dependencies
11.20.0-rc.1 March 03, 2026
Features ✨ and improvements 🏁
- [compose] Add declarative animation API to experimental
Marker composable with two animation triggers: appearAnimation and disappearAnimation. Each trigger accepts a list of MarkerAnimationEffect including wiggle (pendulum rotation), scale, fadeIn, and fadeOut. Effects can be customized with parameters (e.g., scale(from = 0.5f, to = 1.5f), fade(from = 0.5f, to = 1.0f)) and combined for rich animations. See MarkersActivity example for usage.
- Improve FPS statistics logging when
mapView.setOnFpsChangedListener() is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.
Bug fixes 🐞
- Fix
MapSurface.setMaximumFps not working correctly on secondary displays (e.g. Android Auto). Use Context.getDisplay() on API 30+ to get the actual display refresh rate instead of always using the primary display's rate.
- Fix
PointAnnotationManager.iconImageBitmap setter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible.
- Fix feature cutout artifacts at route overlaps.
- Fix a data race condition for
FillExtrusion layer.
- Fix several issues related to runtime symbol appearances switches.
- Fix disappearing icons after reducing memory use.
- Fix landmark POI image loads causes relayout for unrelated layers.
- Fix tilestore eviction logic to not block tilestore thread completely.
- Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.
Dependencies
11.19.1 March 10, 2026
Dependencies
11.19.6 April 10, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.5 April 02, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.4 April 02, 2026
Bug fixes 🐞
- Fix overscaled offline tilepack tiles being showed after switching to online mode
Dependencies
11.19.3 March 31, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.2 March 25, 2026
Bug fixes 🐞
- Fix a bug in eviction logic for TileStore.
Dependencies
11.19.0 February 24, 2026
Features ✨ and improvements 🏁
- Introduce new
AnnotationConfig#slotName property to allow to specify a slot to position annotation layer.
- Introduce experimental
queryRenderedRasterValues API for querying the rendered raster values on the map at a specific screen coordinate.
- Deprecate
Tilestore.create(path: String) instead use TileStore.setRootPath().
- Improve data serialization speed when using
LineString or MultiPoint in GeoJsonSource.
- Introduce new
LineLayer.lineElevationGroundScale property to scale elevated lines with terrain exaggeration.
- Promote elevated lines properties to stable:
LineLayer.lineZOffset and LineLayer.lineElevationReference.
- Introduce experimental
SymbolScaleBehavior API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set MapboxMap.symbolScaleBehavior property to configure: SymbolScaleBehavior.system (automatic scaling), SymbolScaleBehavior.system(mapping) (custom mapping function), or SymbolScaleBehavior.fixed(scaleFactor) (fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale.
- General fixes and performance improvements.
Bug fixes 🐞
- Fix rare scenario where map render surface size was wrong.
- Respect
animationDurationMs when custom OverviewViewportStateOptions.animationDurationMs is set.
- Fix point View Annotation flickering and hiding on moving anchor out of screen.
- Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
- Fix elevated line bevel join artifacts at sharp corners.
- [compose] Improved reliability of attribution list updates on source change.
- Fix duplicate name detection bug in symbol appearance conversion.
- Fix a crash when using feature dependent appearances with images and default appearance image is empty.
Dependencies
11.19.0-rc.1 February 12, 2026
Features ✨ and improvements 🏁
- Improve data serialization speed when using
LineString or MultiPoint in GeoJsonSource.
- Introduce new
LineLayer.lineElevationGroundScale property to scale elevated lines with terrain exaggeration.
- Promote elevated lines properties to stable:
LineLayer.lineZOffset and LineLayer.lineElevationReference.
- Introduce experimental
SymbolScaleBehavior API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set MapboxMap.symbolScaleBehavior property to configure: SymbolScaleBehavior.system (automatic scaling), SymbolScaleBehavior.system(mapping) (custom mapping function), or SymbolScaleBehavior.fixed(scaleFactor) (fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale.
- General fixes and performance improvements.
Bug fixes 🐞
- Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
- Fix elevated line bevel join artifacts at sharp corners.
- [compose] Improved reliability of attribution list updates on source change.
Dependencies
11.18.2 February 09, 2026
Bug fixes 🐞
- Fix disappearing icons after reducing memory use.
- Fix Point View Annotation flickering and hiding on moving anchor out of screen
Dependencies
11.18.1 January 29, 2026
Dependencies
Features ✨ and improvements 🏁
- Add
ModelSource support with ModelSourceModel, ModelMaterialOverride, and ModelNodeOverride to enable interactive 3D models. Material overrides allow customization of color, emissive strength, opacity, and color mix intensity. Node overrides enable control of model part transformations such as rotating doors, landing gear, or propellers. Models can be updated via source-driven approach (modifying ModelSource.models directly) or feature-state driven approach (using expressions with feature state for dynamic control). For implementation examples, see Interactive3DModelFeatureStateActivity (Compose), Interactive3DModelSourceActivity (View), and Animated3DModelActivity (Compose).
11.19.0-beta.1 January 28, 2026
Features ✨ and improvements 🏁
- Introduce experimental
queryRenderedRasterValues API for querying the rendered raster array value at a point on the map.
- Introduce new
AnnotationConfig#slotName property to allow to specify a slot to position annotation layer.
- Introduce experimental
queryRenderedRasterValues API for querying the rendered raster values on the map at a specific screen coordinate.
- Introduce
StyleAttributionsChanged event for detecting map attributions changes
- Deprecate
Tilestore.create(path: String) instead use TileStore.setRootPath().
Bug fixes 🐞
- Fix rare scenario where map render surface size was wrong.
- Respect
animationDurationMs when custom OverviewViewportStateOptions.animationDurationMs is set.
- Fix point View Annotation flickering and hiding on moving anchor out of screen.
Dependencies
Features ✨ and improvements 🏁
- Rename
IndoorManager.setOnIndoorUpdatedCallback to IndoorManager.subscribeOnIndoorUpdated with returned Cancelable support. Add flow-based val onIndoorUpdated: Flow<IndoorState> API.
11.18.0 January 15, 2026
Breaking changes ⚠️
- Remove line-cutout-width and change line-cutout-opacity default to 1.0
Features ✨ and improvements 🏁
- Add
ModelLayer.modelAllowDensityReduction property to disable density reduction in model layers.
- Add Standard Style color and 3D configuration options:
colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.
- Introduce experimental
AttributionControl composable function that exposes AttributionState programmatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with Mapbox ToS requirements.
- Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to
MapInitOptions.plugins. It requires a style with indoor data and special access to indoor mapping features. To request more information, please use this form.
- Add experimental
shadowDrawBeforeLayer property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.
- [tile_store] Add
TileStore.setRootPath() method to set tilestore path to be used by default.
- Faster polygon triangulation for complex polygons.
- Improved handling of occluded symbols with
text-occlusion-opacity and icon-occlusion-opacity properties.
- General fixes and performance improvements.
Bug fixes 🐞
- Fix
userData payload for onSourceDataLoaded event during GeoJSON partial update.
- Fix guard rail placement.
- Fix changes in brightness not always getting applied.
- Fix leaking Vertex Array Objects.
- Reset style fog, snow and rain impl when switching to a new style.
- Fix rendering artefacts when persistent buffer mapping is enabled.
- Fix Coercion expression possibleOutputs result for Array type.
- Fix a crash when jumping between different projections.
- Fixes for placements with
icon-optional, text-optional, and missing parts.
Dependencies
11.18.0-beta.1 December 17, 2025
Breaking changes ⚠️
- Remove line-cutout-width and change line-cutout-opacity default to 1.0
Features ✨ and improvements 🏁
- Add
ModelLayer.modelAllowDensityReduction property to disable density reduction in model layers.
- Add Standard Style color and 3D configuration options:
colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.
- Introduce experimental
AttributionControl composable function that exposes AttributionState programmatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with Mapbox ToS requirements.
- Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to
MapInitOptions.plugins. It requires a style with indoor data and special access to indoor mapping features.
- Add experimental
shadowDrawBeforeLayer property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.
- [tile_store] Add method to set tilestore path to be used by default.
- Faster polygon triangulation for complex polygons.
- General fixes and performance improvements.
Bug fixes 🐞
- Fix
userData payload for onSourceDataLoaded event during GeoJSON partial update.
- Fix guard rail placement.
- Fix changes in brightness not always getting applied.
- Fix leaking Vertex Array Objects.
- Reset style fog, snow and rain impl when switching to a new style.
- Fix rendering artefacts when persistent buffer mapping is enabled.
- Fix Coercion expression possibleOutputs result for Array type.
- Fix a crash when jumping between different projections.
Dependencies
11.17.2 February 24, 2026
Bug fixes 🐞
- Avoid placing occlusion layers after location indicator layer.
- Properly handle
CoordinateBounds during conversion to internal type.
Dependencies
11.17.1 December 11, 2025
Bug fixes 🐞
- Reset style fog, snow and rain impl when switching to a new style.
- Fix changes in brightness not always getting applied.
- Fix occlusion of location indicator in tunnels.
- Fix leaking Vertex Array Objects.
Dependencies
11.17.0 December 04, 2025
Breaking changes ⚠️
- Require passing required argument to the constructor of experimental
GeofencingState.Builder, GeofencingError.Builder, GeofencingEvent.Builder and GeofencingOptions.Builder APIs.
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable, remove
MapboxExperimental annotations from Geofencing APIs.
- Add TileStore improvements and optimizations.
- Promote
ModelLayer to stable.
- Add
SymbolLayer.occlusionOpacityMode, SymbolLayer.iconColorBrightnessMax, SymbolLayer.iconColorBrightnessMin, SymbolLayer.iconColorContrast properties.
- Add
FillExtrusionLayer.castShadows property.
- Add
GeoJsonSource.minZoom property.
- Add
RasterArraySource.volatile experimental property.
- Make
line-emissive-strength property data-driven.
- Add experimental
MapboxMap.setFeatureStateExpression(), removeFeatureStateExpression(), and resetFeatureStateExpressions() APIs to efficiently update feature state for multiple features at once using expressions.
- Improved error reporting for offline tile region downloads on Android.
- Enhanced reliability of network connections by improving how Cronet timeouts are handled.
- Added experimental
MapOptions.Builder.scaleFactor() for scaling icons and texts.
- Add click gesture support to
Marker composable with onClick parameter
- Introduced
ScaleBarSettings.distanceUnits property supporting metric, imperial, and nautical units, replacing the boolean isMetricUnits property.
- Added
fuelingStationModePointOfInterestLabels configuration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options: "default" (shows both), "fuel" (fuel stations only), "electric" (charging stations only), or "none" (hides both).
- Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using feature-state. See
AppearancesActivity in example application for further details.
- Memory allocation improvements
Bug fixes 🐞
- Fix config expression evaluation to properly check dependencies in nested value expressions.
- Fix issue with shadows showing up on top of tunnel roads.
- Fix view-aligned symbols with road elevation being cutout.
- Fix camera listener not unsubscribed when disabling ScaleBar via
updateSettings { enabled = false }
- Fixed a crash when switching map styles quickly.
- Fixed a threading bug to eliminate 3D rendering issues and instability.
- Internal fixes and performance improvements.
- Fix multiple crashes during style switches related to terrain rendering, texture management, and image cleanup.
- Fix line patterns not elevating properly on HD roads.
- Fix rendering of TileStore tiles when TileStore is used as disk cache and user is offline.
- Fix performance regression for
distance and within expressions when processing large GeoJSON datasets.
- Fix GeoJSON tiled model disappearance during fast zoom interactions.
- Fix rendering issues when switching between globe and mercator projections.
- Logging improvements to reduce noise and duplication.
Dependencies
11.17.0-rc.3 November 28, 2025
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable, remove
MapboxExperimental annotations from Geofencing APIs.
Dependencies
11.17.0-rc.2 November 21, 2025
Dependencies
11.17.0-rc.1 November 20, 2025