NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1154 most downloaded on pub.dev
Official Mapbox Maps SDK for Flutter. Add an interactive map widget that renders Mapbox Vector Tile (MVT) maps. Customize it for Android, iOS, and Web.
Last release 3 days ago
05 Oct 2026
Ships on a steady schedule
a new release about every 1 weeks
Most releases are documented
notes for 36 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
178 releases · first in 2022
Nothing published for this version
Nothing published for this version
See the v3 migration guide for the complete list of breaking changes and migration steps.
This version adds first-class web support powered by Mapbox GL JS. Most existing MapWidget and MapboxMap code now runs on Android, iOS, and web from one Flutter codebase.
mapbox_maps_flutter and importing package:mapbox_maps_flutter/mapbox_maps_flutter.dart. The platform implementations are included automatically.<script> or stylesheet tags are required.For dependency and platform setup, see the installation guide.
Important
Upgrading from v2? See the v3 migration guide for API replacements, before-and-after examples, and the complete migration checklist.
Note
If your app enforces a Content Security Policy, allow scripts and styles from api.mapbox.com so the plugin can load Mapbox GL JS.
gestures.keyboard.gestureEvents reports keyboard-driven camera changes from arrow keys, +, -, and Shift+arrow combinations. Keyboard input respects scrollEnabled, rotateEnabled, and pitchEnabled.GesturesSettings.scrollZoomEnabled, boxZoomEnabled, and pitchWithRotateEnabled control wheel or trackpad zoom, box zoom, and Ctrl+drag pitch. These settings have no effect on Android or iOS.GeoJsonSource.dynamicData maps to the style specification's dynamic option and is required on web when using addGeoJSONSourceFeatures, updateGeoJSONSourceFeatures, or removeGeoJSONSourceFeatures. It has no effect on Android or iOS.v3 streamlines the public API around more consistent, typed, and Dart-native patterns:
MapWidget is now a StatelessWidget, with camera state represented by viewport states and animated through ViewportController.MapboxMap and Snapshotter; the .style sub-object is deprecated.StyleImage and sealed RenderedQueryGeometry reduce reliance on loosely structured data.These changes make common workflows easier to discover and compose while providing a consistent API across Android, iOS, and web.
Indoor API (experimental). MapboxMap.indoor exposes indoor floor updates through indoorUpdates and lets you switch floors with selectFloor(floorId) on Android, iOS, and web.
Typed style images. StyleImage is the new input and output type for addImage, updateImageForSource, and getImage. Use .bytes for PNG, JPEG, or WebP data and .rgba for premultiplied pixels. The MbxImage-based APIs are deprecated.
Remove style terrain. removeStyleTerrain() removes terrain while keeping its source.
Sealed RenderedQueryGeometry. Query geometry is now represented by:
ScreenCoordinateRenderedQueryGeometryScreenBoxRenderedQueryGeometryScreenCoordinateListRenderedQueryGeometryContinue constructing values with fromScreenCoordinate(), fromScreenBox(), or fromList(). Use pattern matching instead of the deprecated value and type accessors.
MapboxMap.indoorSelector no longer throws on Android and now appears by default on iOS.PointAnnotationManager.update() now applies a new image even when iconImage named a previous registration (#532). Leave iconImage unset to let the SDK derive the style-image name from the image content, or set it explicitly.v3 is a major release and includes changes required to support its new API design and federated architecture. Most migrations are straightforward, especially for applications that already replaced deprecated v2 APIs.
Key changes include:
MapWidget.cameraOptions was replaced by MapWidget.viewport.setStateWithViewportAnimation was replaced by ViewportController.moveTo.MapWidget.getMapboxMap(), were removed.AndroidPlatformViewHostingMode.HC. Set MapWidget.androidHostingMode to retain another hosting mode.SurfaceView is now the default. Maps render into a SurfaceView instead of a TextureView, avoiding a per-frame copy. Set MapWidget.textureView: true when using a transparent background (isOpaque: false) or the VD or TLHC_VD hosting modes.getImage and APIs built on it return raw premultiplied RGBA data instead of PNG data, matching Android. Decode the returned data as RGBA.See the v3 migration guide for the complete list of breaking changes and migration steps.
All v2 features remain available on Android and iOS. Most core APIs are also available on web, but some platform-specific functionality is not yet supported.
Not currently supported on web:
SnapshotterLongTapInteractionSome additional APIs have partial web support. Methods unavailable on a platform throw UnimplementedError when support is planned or UnsupportedError when the capability is unavailable by design.
One column per quarter.
setStyleTerrain, getStyleTerrainProperty, and setStyleTerrainProperty.StyleManager.removeStyleTerrain() to remove the style terrain while keeping its source. On web with the globe projection, terrain defined by the style's imports applies again after removal.MapboxMapsOptions language and worldview support. As on the other platforms, both apply to the maps already on screen and to the ones created later.MapboxMap.coordinateBoundsForCamera, coordinateBoundsForCameraUnwrapped, coordinateBoundsZoomForCamera, and coordinateBoundsZoomForCameraUnwrapped. On web, the bounds cover only the area inside the camera padding, and they include the terrain elevation.MapboxMap.getMapOptions() support. The options come from the live Mapbox GL JS map state: the map container size and the browser device pixel ratio. Options that GL JS cannot change return fixed values; see the method documentation.MapboxMap.indoor (IndoorManager): indoor floor state as a stream (indoorUpdates) and selectFloor(floorId), on Android, iOS, and web. Also fix MapboxMap.indoorSelector on all three platforms: implemented on web, no longer throws on Android, and appears by default on iOS.…addImage , updateImageForSource , and getImage . Deprecate the MbxImage -based addStyleImage , updateStyleImageSourceImage , and getStyleImage wrapper…
Important
For full migration guide, check MIGRATION.md
All platforms
mapbox_maps_flutter (public facade), mapbox_maps_flutter_platform_interface, mapbox_maps_flutter_mobile, and mapbox_maps_flutter_web. Add mapbox_maps_flutter as the app-facing dependency; mobile and web packages are endorsed automatically.StyleImage (.bytes for PNG/JPEG/WebP, .rgba for premultiplied pixels) and prefer it via addImage, updateImageForSource, and getImage. Deprecate the MbxImage-based addStyleImage, updateStyleImageSourceImage, and getStyleImage wrappers. Style image add/has/remove is implemented on web; getImage and image-source updates remain mobile-only for now.RenderedQueryGeometry is now a sealed class hierarchy (ScreenCoordinateRenderedQueryGeometry, ScreenBoxRenderedQueryGeometry, ScreenCoordinateListRenderedQueryGeometry) instead of an untyped {value, type} pair. Construct it the same way as before, via fromScreenCoordinate()/fromScreenBox()/fromList(). Use pattern matching on the subclasses to inspect it instead of the now-deprecated, read-only value/type accessors.Web
MapWidget, MapboxMap, gestures, camera, the viewport API (Camera, FollowPuck, Idle, Overview, StyleDefault states, with Default/Easing/Fly transitions), and the location puck all work. The Interaction API is supported except for LongTapInteraction. Annotation managers (Circle, Point, Polyline, Polygon) are not yet implemented.compass, scaleBar, logo and attribution are backed by the Mapbox GL JS controls and support partial updates, matching Android and iOS. Some fields have no GL JS counterpart and are stored and returned by getSettings without being applied; see each field's documentation. Note LogoSettings.enabled and AttributionSettings.enabled are a restricted API.MapboxMap.snapshot() support. It captures the map's current canvas as PNG-encoded bytes, matching Android and iOS.loadStyleJson support.gestures.keyboard.gestureEvents, delivering keyboard-driven camera changes (arrow keys, +/-, shift+arrows), and make keyboard input follow the same gesture settings as pointer/touch input: GesturesSettings.scrollEnabled gates arrow-key pan, and .rotateEnabled/.pitchEnabled independently gate Shift+arrow rotate and pitch.GesturesSettings.scrollZoomEnabled, .boxZoomEnabled, and .pitchWithRotateEnabled to control mouse-wheel/trackpad zoom, box zoom, and whether ctrl+drag combines rotate with pitch (web only; no effect on Android/iOS).GesturesSettings.quickZoomEnabled controls tap-and-drag zoom.MapWidget.styleUri loads the requested style directly, without first loading a default style.GeoJsonSource.dynamicData, mapping to the dynamic option in the style specification. Set it to true for the source to accept addGeoJSONSourceFeatures, updateGeoJSONSourceFeatures, and removeGeoJSONSourceFeatures. No-op on Android and iOS, which accept feature updates on all GeoJSON sources regardless.rgb, hsl, and hsla style-color expressions correctly. rgba expressions were already decoded correctly. gl-native (Android/iOS) folds these into rgba before Flutter reads them back, so mobile is not affected either way.Android
AndroidPlatformViewHostingMode.HC); it was previously Virtual Display. Set MapWidget.androidHostingMode explicitly to keep the old behaviour.SurfaceView by default instead of a TextureView, avoiding the per-frame copy a TextureView requires. Set MapWidget.textureView to true for a transparent background (isOpaque: false) and for the VD and TLHC_VD hosting modes, which cannot display a SurfaceView.iOS & Android
PointAnnotationManager.update() not applying a new image when the annotation's iconImage still named a previous registration (#532). If you leave iconImage unset, the SDK derives one from a hash of image, so a content change now applies automatically. Set iconImage yourself for full control of the style-image name: for example, to reuse one name across annotations, or to point at a style image added elsewhere without uploading image.iOS
getStyleImage (and the deprecated getStyleImage/getImage wrappers built on it) now return raw premultiplied RGBA pixel data instead of a PNG-encoded image, matching Android's existing behavior. Code that decoded the returned data as PNG must decode it as raw RGBA instead.All platforms
MapWidget.cameraOptions (use viewport), MapWidget.getMapboxMap() (use onMapCreated), MapboxMap.setCustomHeaders and MapboxHttpService.setCustomHeaders (use setCustomHeadersForHost), PointAnnotation.iconImageCrossFade / PointAnnotationOptions.iconImageCrossFade (use PointAnnotationManager.iconImageCrossFade), and the OnMapTapListener / OnMapLongTapListener typedefs (use the Interaction API).tileCover and Snapshotter.tileCover are marked experimental and now return OverscaledTileID instead of CanonicalTileID, matching the native SDKs. OverscaledTileID keeps the canonical tile coordinate in its canonical field, and adds overscaledZ and wrap so callers can distinguish overscaled tiles from their canonical zoom level, and tiles that repeat across the antimeridian.Web support is actively being developed. Not all APIs available on iOS and Android are supported on web yet — full parity is coming in future releases. APIs that are not available on a given platform will throw UnimplementedError at runtime.
Warning This is an alpha release. APIs may change before the stable release. Not recommended for production use.
Warning
This is an alpha release. APIs may change before the stable release. Not recommended for production use.
GeoJsonSource.dynamicData that maps to the dynamic option in the style specification. On web, set it to true for the source to accept addGeoJSONSourceFeatures, updateGeoJSONSourceFeatures, and removeGeoJSONSourceFeatures. Android and iOS ignore dynamicData and accept feature updates on all GeoJSON sources.removeGeoJSONSourceFeatures failing to remove a feature that was added with a numeric id.compass, scaleBar, logo and attribution are backed by the Mapbox GL JS controls and support partial updates, matching Android and iOS. Some fields have no GL JS counterpart and are stored and returned by getSettings without being applied; see each field's documentation. Note LogoSettings.enabled and AttributionSettings.enabled are a restricted API.addStyleImportFromJSON and updateStyleImportWithJSON. They completed before the style held the fragment, so the next call failed with "Style is not done loading". Both now complete after the style holds the fragment, as on Android and iOS.MapWidget ignoring styleUri. The map loaded a default style first, fired onStyleLoaded for it, then loaded the requested style, which removed everything onStyleLoaded had added. The map now loads the requested style directly.Web support is actively being developed. Not all APIs available on iOS and Android are supported on web yet — full parity is coming in future releases. APIs that are not available on a given platform will throw UnimplementedError at runtime.
Remove APIs deprecated in v2. See the migration guide for upgrade instructions.
Warning
This is an alpha release. APIs may change before the stable release. Not recommended for production use.
Remove APIs deprecated in v2. See the migration guide for upgrade instructions.
[web] Add MapboxMap.snapshot() support.
[web] Add loadStyleJson support.
tileCover and Snapshotter.tileCover (experimental) now return OverscaledTileID instead of CanonicalTileID, matching the native SDKs and preserving overscaling and antimeridian distinctions.
Add experimental RasterLayer.rasterColorScale for more precise visualization of long-tailed raster-array data.
Promote SymbolLayer.symbolZOffset to stable.
Introduce the new StyleImage API for style images, replacing MbxImage-based methods.
StyleImage.bytes(...) accepts encoded PNG/JPEG/WebP directlyStyleImage also supports raw premultiplied RGBA pixelsStyleImage.fromImage(...) creates a style image from a dart:ui ImageaddStyleImage, updateStyleImageSourceImage, and getStyleImage are deprecated in favor of addImage, updateImageForSource, and getImage, built on StyleImage.getStyleImage (and deprecated wrappers around it) now return raw premultiplied RGBA pixel data instead of a PNG-encoded image, matching Android behavior.MbxImage is deprecated and will be removed in a future release.// v2 — MbxImage, manual RGBA decode required
final decoded = img.decodeImage(pngBytes)!;
await mapboxMap.style.addStyleImage(
'my-icon',
1.0,
MbxImage(
width: decoded.width,
height: decoded.height,
data: decoded.getBytes(order: img.ChannelOrder.rgba),
),
);
// v3 — StyleImage, pass encoded bytes straight through
await mapboxMap.style.addImage(
'my-icon',
1.0,
StyleImage.bytes(pngBytes),
);
// v3 — or build one from a dart:ui Image
await mapboxMap.style.addImage(
'my-icon',
1.0,
await StyleImage.fromImage(uiImage),
);Web support is actively being developed. Not all APIs available on iOS and Android are supported on web yet — full parity is coming in future releases. APIs that are not available on a given platform will throw UnimplementedError at runtime.
MapWidget.cameraOptions (use viewport), MapWidget.getMapboxMap() (use onMapCreated), MapboxMap.setCustomHeaders and MapboxHttpService.setCustomHeaders (use setCustomHeadersForHost), and PointAnnotation.iconImageCrossFade / PointAnnotationOptions.iconImageCrossFade (use PointAnnotationManager.iconImageCrossFade).MapboxMap.snapshot() support on web. It captures the map's current canvas as PNG-encoded bytes, matching Android and iOS.tileCover and Snapshotter.tileCover are marked experimental and now return OverscaledTileID instead of CanonicalTileID, matching the native SDKs. OverscaledTileID keeps the canonical tile coordinate in its canonical field, and adds overscaledZ and wrap so callers can distinguish overscaled tiles from their canonical zoom level, and tiles that repeat across the antimeridian.StyleImage (.bytes for PNG/JPEG/WebP, .rgba for premultiplied pixels) and prefer it via addImage, updateImageForSource, and getImage. Deprecate the MbxImage-based addStyleImage, updateStyleImageSourceImage, and getStyleImage wrappers. Style image add/has/remove is implemented on web; getImage and image-source updates remain mobile-only for now.getStyleImage (and the deprecated getStyleImage/getImage wrappers built on it) now return raw premultiplied RGBA pixel data instead of a PNG-encoded image, matching Android's existing behavior. Code that decoded the returned data as PNG must decode it as raw RGBA instead.MbxImage is deprecated and slated for removal in a future release. Use StyleImage instead.StyleImage.fromImage to build a StyleImage from a dart:ui Image (for example one produced by a CustomPainter or Canvas.toImage)loadStyleJson support.PointAnnotationManager.update() not applying a new image on iOS and Android when the annotation's iconImage still named a previous registration (#532). If you leave iconImage unset, the SDK derives one from a hash of image, so a content change now applies automatically. Set iconImage yourself for full control of the style-image name: for example, to reuse one name across annotations, or to point at a style image added elsewhere without uploading image.Use pattern matching on the subclasses to inspect it instead of the now-deprecated, read-only value / type accessors.
Warning
This is an alpha release. APIs may change before the stable release. Not recommended for production use.
LineLayer.lineBorderGradient and .lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.RenderedQueryGeometry is now a sealed class hierarchy (ScreenCoordinateRenderedQueryGeometry, ScreenBoxRenderedQueryGeometry, ScreenCoordinateListRenderedQueryGeometry) instead of an untyped {value, type} pair. Construct it the same way as before, via fromScreenCoordinate()/fromScreenBox()/fromList(). Use pattern matching on the subclasses to inspect it instead of the now-deprecated, read-only value/type accessors.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (the default) (#1141).queryRenderedFeatures querying the whole viewport for an empty fromList([]); it now matches no features, in line with mobile.Web support is actively being developed. Not all APIs available on iOS and Android are supported on web yet — full parity is coming in future releases. APIs that are not available on a given platform will throw UnimplementedError at runtime.
LineLayer.lineBorderGradient and .lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (the default) (#1141).RenderedQueryGeometry is now a sealed class hierarchy (ScreenCoordinateRenderedQueryGeometry, ScreenBoxRenderedQueryGeometry, ScreenCoordinateListRenderedQueryGeometry) instead of an untyped {value, type} pair. Construct it the same way as before, via fromScreenCoordinate()/fromScreenBox()/fromList(). Use pattern matching on the subclasses to inspect it instead of the now-deprecated, read-only value/type accessors.queryRenderedFeatures querying the whole viewport for an empty fromList([]); it now matches no features, in line with mobile.GesturesSettings.scrollEnabled gates arrow-key pan, and .rotateEnabled/.pitchEnabled independently gate Shift+arrow rotate and pitch.GesturesSettings.rotateEnabled no longer also disables ctrl+drag pitch.GesturesSettings.quickZoomEnabled now controls tap-and-drag zoom; previously unsupported on web.[web] Add GesturesSettings.scrollZoomEnabled, .boxZoomEnabled, and .pitchWithRotateEnabled (web only; no effect on Android/iOS). Behavior change: pinc
GesturesSettings.scrollZoomEnabled, .boxZoomEnabled, and .pitchWithRotateEnabled (web only; no effect on Android/iOS). Behavior change: pinchToZoomEnabled no longer also controls mouse-wheel/trackpad zoom on web (use scrollZoomEnabled), and pitchEnabled no longer also controls whether ctrl+drag combines rotate with pitch (use pitchWithRotateEnabled).SurfaceView by default instead of a TextureView, avoiding the per-frame copy a TextureView requires. Set MapWidget.textureView to true for a transparent background (isOpaque: false) and for the VD and TLHC_VD hosting modes, which cannot display a SurfaceView.rgb, hsl, and hsla style-color expressions decoding incorrectly: rgb colors rendered nearly fully transparent, and hsl/hsla colors used the wrong saturation/lightness scale and alpha, producing wrong or (in debug builds) crashing results. rgba expressions were not affected.> On web, Mapbox GL JS is now loaded automatically: the plugin injects the / tags for the GL JS version it pins (v3.27.0) into the page on first map u
[!IMPORTANT] On web, Mapbox GL JS is now loaded automatically: the plugin injects the
<script>/<link>tags for the GL JS version it pins (v3.27.0) into the page on first map use. Remove themapbox-gl.jsandmapbox-gl.csstags from your app'sweb/index.html— amapboxglglobal that is already on the page is reused as-is, so a manually pinned copy silently overrides the version the SDK expects.If your app enforces a Content-Security-Policy, it must allow script and style sources from
api.mapbox.com.
AndroidPlatformViewHostingMode.HC); it was previously Virtual Display. Set MapWidget.androidHostingMode explicitly to keep the old behaviour.OnMapTapListener / OnMapLongTapListener typedefs, orphaned since the MapboxMap.onMapTapListener / onMapLongTapListener setters they typed were removed in favor of the Interaction API.gestures.keyboard.gestureEvents, delivering keyboard-driven camera changes (arrow keys, +/-, shift+arrows) that were previously not observable through the gesture event streams.Split the plugin into federated packages and add web support: mapbox_maps_flutter (public facade), mapbox_maps_flutter_platform_interface, mapbox_maps
mapbox_maps_flutter (public facade), mapbox_maps_flutter_platform_interface, mapbox_maps_flutter_mobile, and mapbox_maps_flutter_web. Add mapbox_maps_flutter as the app-facing dependency; mobile and web packages are endorsed automatically.Update Mapbox Maps SDK to v11.31.1
Fix PointAnnotation.iconImageCrossFade and PointAnnotationOptions.iconImageCrossFade missing their @Deprecated annotation, so the analyzer and IDEs sh…
RasterLayer.rasterColorScale property, resulting in more precise visualization with long-tailed raster-array data source.SymbolLayer.symbolZOffset to stable.PointAnnotation.iconImageCrossFade and PointAnnotationOptions.iconImageCrossFade missing their @Deprecated annotation, so the analyzer and IDEs showed no warning. Both fields are deprecated in favor of PointAnnotationManager.iconImageCrossFade.Fix PointAnnotation.iconImageCrossFade and PointAnnotationOptions.iconImageCrossFade missing their @Deprecated annotation, so the analyzer and IDEs sh…
RasterLayer.rasterColorScale property, resulting in more precise visualization with long-tailed raster-array data source.SymbolLayer.symbolZOffset to stable.PointAnnotation.iconImageCrossFade and PointAnnotationOptions.iconImageCrossFade missing their @Deprecated annotation, so the analyzer and IDEs showed no warning. Both fields are deprecated in favor of PointAnnotationManager.iconImageCrossFade.Update Mapbox Maps SDK to v11.30.4
Update Mapbox Maps SDK to v11.30.3
Update Mapbox Maps SDK to v11.30.2
Update Mapbox Maps SDK to v11.30.1
Add LineLayer.lineBorderGradient and LineLayer.lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-p
LineLayer.lineBorderGradient and LineLayer.lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.Snapshotter.tileCover as experimental, matching the experimental status of the underlying native APIs.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (the default) (#1141).LineLayer.lineBorderGradient and .lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (#1141).Snapshotter.tileCover as experimental since the underlying native APIs are experimental.Add LineLayer.lineBorderGradient and LineLayer.lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-p
LineLayer.lineBorderGradient and LineLayer.lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.Snapshotter.tileCover as experimental, matching the experimental status of the underlying native APIs.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (the default) (#1141).LineLayer.lineBorderGradient and .lineBorderGradientExpression to color a line's border along its length with a gradient driven by line-progress. Requires a GeoJSON source with lineMetrics: true.MapWidget when the platform view is created before layout completes, on iOS (always) and Android's HC hosting mode (#1141).Snapshotter.tileCover as experimental since the underlying native APIs are experimental.Nothing published for this version
Nothing published for this version
Nothing published for this version
Update Mapbox Maps SDK to v11.29.4
Update Mapbox Maps SDK to v11.29.3
Update Mapbox Maps SDK to v11.29.2
Update Mapbox Maps SDK to v11.29.1
Update Mapbox Maps SDK to v11.29.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Update Mapbox Maps SDK to v11.28.4
Update Mapbox Maps SDK to v11.28.3
Update Mapbox Maps SDK to v11.28.2
* Update Maps SDK to v11.28.1
Add ModelSource API, exposing the 3D model source (a collection of 3D models, each with its own position, orientation, and node/material overrides).
ModelSource API, exposing the 3D model source (a collection of 3D models, each with its own position, orientation, and node/material overrides).MapWidget.isOpaque option to control whether the map is rendered as opaque or supports a transparent background. Set to false (together with a transparent style) to enable transparency on iOS; Android already supports this via MapWidget.textureView (#415).updateSettings on CompassSettings, AttributionSettings, LogoSettings, IndoorSelectorSettings, ScaleBarSettings, GesturesSettings, and LocationComponentSettings resetting omitted fields (position, margins, enabled, scrollMode, puck configuration) to defaults instead of preserving them, matching Android's partial-update behaviour.LocationComponentSettings.updateSettings dropping the previously configured 2D or 3D puck's settings when switching between puck types.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Update Mapbox Maps SDK to v11.27.3
* Update Maps SDK to v11.27.2
Nothing published for this version
Deprecate MapboxMap.setCustomHeaders: headers set this way are attached to every host the map fetches from — including third-party hosts referenced by…
GesturesSettings.scrollDecelerationEnabled on iOS (#1127).MapboxMap.httpService.setCustomHeadersForHost to attach custom HTTP headers to a single host only, and MapboxMap.httpService.clearCustomHeaders to remove all configured headers. Host-scoped headers are matched against the request's exact URL host (case-insensitive, no subdomain or substring matching).MapboxMap.setCustomHeaders: headers set this way are attached to every host the map fetches from — including third-party hosts referenced by styles, sources, sprites, glyphs and tiles — which can leak credentials. Use setCustomHeadersForHost instead.Nothing published for this version
[iOS] Fix iOS compass ignoring CompassSettings.fadeWhenFacingNorth (and visibility in general) unless enabled was also set. enabled and fadeWhenFacing
CompassSettings.fadeWhenFacingNorth (and visibility in general) unless enabled was also set. enabled and fadeWhenFacingNorth are now applied independently, matching the Android behaviour (#602).Nothing published for this version
Nothing published for this version
Update Mapbox Maps SDK to v11.25.3
Nothing published for this version
Nothing published for this version
Deprecate MapboxMap.onTapListener and MapboxMap.onLongTapListener in favor of the MapboxMap.addInterfaction API.
MapboxMap.onTapListener and MapboxMap.onLongTapListener in favor of the MapboxMap.addInterfaction API.MapboxMap.httpService.setMaxRequestsPerHost to cap the number of concurrent HTTP requests per host issued by the underlying HTTP service. Useful for reducing the chance of hitting per-token rate limits during offline tile region downloads.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →