Releases: mapbox/mapbox-maps-android
Releases · mapbox/mapbox-maps-android
v11.25.0-rc.2
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.25.0-rc.2, common to v24.25.0-rc.2.
v11.25.0-rc.1
Breaking changes ⚠️
MapView.setMaximumFpsandMapSurface.setMaximumFpsare now annotated@MainThread. Callers must invoke them from the main thread; off-main callers will see a lint warning.
Features ✨ and improvements 🏁
- [compose] Add Standard
IndoorLabelsfeatureset and indoor configuration options (showIndoor,showIndoorLabels,colorIndoorLabelHighlight,colorIndoorLabelSelect) for the Mapbox Standard style. - Add
useNativeFlingDecelerationoption toGesturesPluginthat usesOverScrollerfor physics-based fling deceleration instead of the legacyeaseToanimation, providing a more natural fling experience. - Throttle
MapboxMappost destroyed warning logs. - Expose
verticalFovinCameraOptions, allowing a custom vertical field of view to be set insetCamera,easeTo, andflyTo. - Allow using color string literals in
interpolateexpressions, including when set on style config at runtime. - Support using
line-progressinline-emissive-strength. - Add support for zoom-and-feature-dependent appearance conditions.
- Add client-side SD/HD road and traffic conflation, hiding redundant roads based on functional road class coverage with stencil-masked transitions and configurable opacity fade.
- Add animated cross-fade transitions for boolean style config options (e.g. switching HD roads on/off).
- Add an option to disallow expensive network requests in
loadStylePack.
Bug fixes 🐞
- Fix a
ConcurrentModificationExceptioncrash that could occur when a plugin was added or removed duringMapView.onDestroy. - Fix frame pacing breaking when the panel switches refresh-rate modes mid-session (VRR or per-UID
frameRateOverride).FpsManagernow updates itsscreenRefreshRatevia aDisplayManager.DisplayListenerinstead of only sampling once atonStart. - [maps-sdk] Fix Vulkan rendering being permanently disabled when the Android surface arrived before the native map was set. The renderer now defers setup and retries via
onMapSet()once the map is available. - Fix a crash that could occur while iterating map interactions when a callback modifies interaction state.
- Fix a use-after-free crash in the map caused by asynchronous tasks accessing a partially destroyed map instance.
- Fix a crash caused by dereferencing a null index buffer when drawing symbols.
- Fix a crash when an overriding terrain source was merged with another source from the same root style.
- Fix missing letters in the middle of text labels placed along lines elevated by terrain.
- Fix aliasing artifacts on lines with borders.
- Fix step expression evaluation when using uniform buffer objects.
- Improve symbol appearances performance for Vulkan backend.
- Fix rare process crashes during HTTP downloads (failure to create a temporary file, and an uncaught error while writing the response).
Dependencies
- Update gl-native to v11.25.0-rc.1, common to v24.25.0-rc.1.
v11.21.7
v11.24.3
v11.21.6
v11.24.2
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.