Releases: mapbox/mapbox-maps-android
Releases · mapbox/mapbox-maps-android
v11.24.1
11.24.1 May 19, 2026
Features ✨ and improvements 🏁
- Expose
FeaturesetFeature.originalFeatureproperty. - 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-basedandroid-core. To use it, replace the default core dependency with the Vulkan variant. In yourbuild.gradle.ktsadd:Known limitations: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}") } } } }- Android 12 (API 31) or later is recommended. Earlier Android versions may exhibit GPU driver bugs, particularly on devices with Adreno GPUs.
- Only
arm64-v8ais 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-clampstyle 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 a crash that could occur when the map is destroyed while asynchronous operations are still in progress.
- Fix the
NetworkRestriction.DISALLOW_EXPENSIVEnetwork option not being respected, which could cause map requests to proceed over metered connections when configured otherwise. - Fix
isMetricUnits/distanceUnitssync 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
v11.21.5
v11.23.1
Bug fixes
- Fix the
disallow_expensiveHTTP setting not being respected on Android; the SDK now binds requests to a non-metered network (e.g., Wi-Fi) when this flag is set, with Cronet on API 23+ and an OkHttp fallback on older API levels. - Fix a memory leak where
HttpClientinstances could not be garbage collected because callbacks held strong references back to the client. - Internal fixes and performance improvements.
Dependencies
v11.22.3
v11.24.0-rc.1
11.24.0-rc.1 May 05, 2026
Features ✨ and improvements 🏁
- Expose
FeaturesetFeature.originalFeatureproperty. - 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-basedandroid-core. To use it, replace the default core dependency with the Vulkan variant. In yourbuild.gradle.ktsadd:Known limitations: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}") } } } }- Android 12 (API 31) or later is recommended. Earlier Android versions may exhibit GPU driver bugs, particularly on devices with Adreno GPUs.
- Only
arm64-v8ais 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-clampstyle 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/distanceUnitssync 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
- Update gl-native to v11.24.0-rc.1, common to v24.24.0-rc.1.
v11.21.4
v11.23.0
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.jsonandnon_persistent_settings.jsonfrom 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-sizeis 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
ConfigExpressionwhere 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
setGesturesManagercausing native map interactions to accumulate. - [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
v11.22.1
11.22.1 April 28, 2026
Bug fixes 🐞
- [gestures] Fixed interaction leak in
setGesturesManagercausing native map interactions to accumulate. - [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
v11.21.3
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
v11.23.0-rc.1
11.23.0-rc.1 April 20, 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.jsonandnon_persistent_settings.jsonfrom 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-sizeis 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.
Dependencies
- Update gl-native to v11.23.0-rc.1, common to v24.23.0-rc.1.