[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 11.19.2, 11.20.2 or any version from 11.21.0 onward. This specific bug is only relevant to users who use tilestore offline regions.
24.19.1.11.19.1.16.2reduceMemoryUse, restoring previous behavior. (@Nelarius)📦 Pre-built binaries for faster build times are available via mapbox-maps-ios-binary.
24.20.0-rc.1.11.20.0-rc.1.16.4[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 11.19.2, 11.20.2 or any version from 11.21.0 onward. This specific bug is only relevant to users who use tilestore offline regions.
queryRenderedRasterValues API that allows querying the rendered value(s) of any raster array layer at a given screen coordinate. Returns pixel data for all bands, enabling use cases such as displaying weather data values, elevation readouts, or other raster-based information directly from the rendered map. (@Nelarius, @maios)x-mapbox-offline-ttl HTTP header. When present, this header controls how long a cached tile remains valid for offline use, behaving as if expiry = now() + x-mapbox-offline-ttl with must-revalidate = true. This provides server-side control over offline tile freshness. (@Nelarius)text-field using the image expression now properly scale according to the text scale factor setting, ensuring consistent sizing between text and inline images. (@woodroof)lineElevationGroundScale property to scale elevated lines with terrain exaggeration. (@lasselammi)lineZOffset and lineElevationReference. (@lasselammi)SymbolScaleBehavior API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set symbolScaleBehavior to configure: .system (automatic scaling), .system(mapping:) (custom mapping function), or .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. (@dserebriakov, @pjleonard37)ModelSource support with Model, 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 models directly) or feature-state driven approach (using expressions with feature state for dynamic control). For implementation examples, see Interactive3DModelFeatureStateExample (SwiftUI), Interactive3DModelSourceExample (UIKit), and Animated3DModelSourceExample (SwiftUI). (@stephanheigl, @evil159)avoid-symbol-layers collision detection was incorrectly active even with an empty layer list. (@dserebriakov, @OdNairy)icon-text-fit was not used. Previously, stretch areas were calculated with invalid default values, causing oversized or mispositioned icons. (@ibesora)TileStore.create(path:) is now deprecated. Use TileStore.setRootPath(_:) instead to configure the tile store location. (@tatiana-yan)ResourceOptions tile store APIs are now deprecated. Use the dedicated TileStore configuration methods instead of passing tile store settings through ResourceOptions. (@pozdnyakov)24.19.0.11.19.0.16.424.17.2.11.17.2.16.2LineLayer.lineElevationGroundScale property to scale elevated lines with terrain exaggeration.LineLayer.lineZOffset and LineLayer.lineElevationReference.SymbolScaleBehavior API to automatically scale map symbols (icons and text) based on system accessibility text size settings. Set MapboxMap.symbolScaleBehavior property to configure: .system (automatic scaling), .system(mapping:) (custom mapping function), or .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.ModelSource support with Model, 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 Interactive3DModelFeatureStateExample (SwiftUI), Interactive3DModelSourceExample (UIKit), and Animated3DModelSourceExample (SwiftUI).24.19.0-rc.1.11.19.0-rc.1.16.2[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 11.18.3, 11.19.2, 11.20.2 or any version from 11.21.0 onward. This specific bug is only relevant to users who use tilestore offline regions.
24.18.2.11.18.2.16.414.1.0[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 11.18.3, 11.19.2, 11.20.2 or any version from 11.21.0 onward. This specific bug is only relevant to users who use tilestore offline regions.
24.18.1.11.18.1.16.4queryRenderedRasterValues API that allows querying the rendered value(s) of any raster array layer at a given screen coordinate. Returns pixel data for all bands, enabling use cases such as displaying weather data values, elevation readouts, or other raster-based information directly from the rendered map. (@Nelarius, @maios)x-mapbox-offline-ttl HTTP header. When present, this header controls how long a cached tile remains valid for offline use, behaving as if expiry = now() + x-mapbox-offline-ttl with must-revalidate = true. This provides server-side control over offline tile freshness. (@Nelarius)text-field using the image expression now properly scale according to the text scale factor setting, ensuring consistent sizing between text and inline images. (@woodroof)avoid-symbol-layers collision detection was incorrectly active even with an empty layer list. (@dserebriakov, @OdNairy)icon-text-fit was not used. Previously, stretch areas were calculated with invalid default values, causing oversized or mispositioned icons. (@ibesora)TileStore.create(path:) is now deprecated. Use TileStore.setRootPath(_:) instead to configure the tile store location. (@tatiana-yan)ResourceOptions tile store APIs are now deprecated. Use the dedicated TileStore configuration methods instead of passing tile store settings through ResourceOptions. (@pozdnyakov)24.19.0-beta.1.11.19.0-beta.1.16.4[!IMPORTANT] A bug in the SDK's offline data management causes untracked data to accumulate instead of being removed under specific conditions. This leads to uncontrolled storage growth, potentially degrading system performance or causing complete unusability if disk space is exhausted. The required version for upgrade is 11.18.3, 11.19.2, 11.20.2 or any version from 11.21.0 onward. This specific bug is only relevant to users who use tilestore offline regions.
LineLayer.lineCutoutWidth and change LineLayer.lineCutoutOpacity default to 1.0colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.DirectionalLight.shadowDrawBeforeLayer property to allow specifying the position in the layer stack for drawing shadows on the ground.ModelLayer.modelAllowDensityReduction property to disable density reduction in model layers.CameraOptions instead of crashing.userData payload for onSourceDataLoaded event during GeoJSON partial update.24.18.0.11.18.0.16.2line-cutout-width and change line-cutout-opacity default to 1.0colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.shadowDrawBeforeLayer property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.ModelLayer.modelAllowDensityReduction property to disable density reduction in model layers.userData payload for onSourceDataLoaded event during GeoJSON partial update.24.18.0-beta.1.11.18.0-beta.1.16.224.17.1.11.17.1:16.2MapInitOptions.mapStyle property. Use it to initialize map with a custom style.// Before
let options = MapInitOptions(styleURI: .standardSatellite)
let mapView = MapView(frame: view.bounds, mapInitOptions: options)
mapView.mapboxMap.setStyleImportConfigProperties(for: "basemap", configs: ["lightPreset": "dusk"])
// After:
let options = MapInitOptions(mapStyle: .standardSatellite(lightPreset: .dusk))
let mapView = MapView(frame: view.bounds, mapInitOptions: options)
StyleReloadPolicy to control style reload behavior. Use reloadPolicy: .always parameter in loadStyle() methods or MapStyle initializers to always reload the style even when the URI or JSON matches the currently loaded style. Defaults to .onlyIfChanged for optimal performance.ScaleBarViewOptions.units property supporting metric, imperial, and nautical units, replacing the boolean useMetricUnits property.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).scaleFactor parameter to MapOptions and MapSnapshotOptions for scaling icons and texts. Default value is 1.0.MapboxMap.setFeatureStateExpression(), removeFeatureStateExpression(), and resetFeatureStateExpressions() APIs to efficiently update feature state for multiple features at once using expressions.feature-state. See AppearancesExample for further details.MapboxMap.setLayerProperty(), setLayerProperties and updateLayer().line-emissive-strength property is now data-driven, allowing different road types to be rendered in a single layer for improved performanceModelLayer to stable.SymbolLayer.occlusionOpacityMode, SymbolLayer.iconColorBrightnessMax, SymbolLayer.iconColorBrightnessMin, SymbolLayer.iconColorContrast properties.FillExtrusionLayer.castShadows property.GeoJSONSource.minZoom property.RasterArraySource.volatile experimental property.OrnamentsManager when setting attribution color.line-cutout-width.24.17.0.11.17.0.16.224.17.0-rc.3.11.17.0-rc.3.16.2Internal fixes and performance improvements
24.16.6.11.16.6.16.2line-emissive-strength property is now data-driven, allowing different road types to be rendered in a single layer for improved performance24.17.0-rc.2.11.17.0-rc.2:16.2line-emissive-strength property is now data-driven, allowing different road types to be rendered in a single layer for improved performance24.17.0-rc.1.11.17.0-rc.1.16.224.16.4.11.16.416.224.17.0-beta.2.11.17.0-beta.2:16.224.16.3.11.16.3.16.2