releases.shpreview
Mapbox/Mapbox GL JS

Mapbox GL JS

Mon
Wed
Fri
JunJulAugSepOctNovDecJanFebMarAprMayJun
Less
More
Releases15Avg5/moVersionsv3.19.1 to v3.24.0

Features and improvements ✨

  • Introduce Level of Detail (LOD) support for landmark models, enabling automatic switching between model versions based on camera distance.
  • Support additive blend mode with clamped density by setting the line-blend-additive-clamp property.
  • Improve rendering performance by reducing per-frame matrix allocations.
  • Improve rendering performance via parallel shader compilation on supported devices.
  • Improve rendering performance by advancing shader precompilation.
  • Improve shadow rendering performance.
  • Improve vector icon loading performance.
  • Improve initial load by skipping redundant config-related style layers updates in Web Workers.
  • Improve initial load by rescheduling shader precompilation to occur during browser idle time after the map's idle event.
  • Improve model processing performance.
  • Improve performance and memory footprint by streamlining communication between the main thread and Web Workers.
  • Reduce first-interaction jank by optimizing shader compilation pipeline behavior.
  • Optimize expression parsing performance.
  • Improve an error messaging for the line-trim-offset property without lineMetrics.

Bug fixes 🐞

  • Fix LUT to properly work with premultiplied color.
  • Fix a potential memory leak and crash occurring when a map was destroyed.
  • Fix an issue where cross-fragments config values were not correctly updated.
Bug fixes 🐞
  • Fix a rendering error occurring with fill-extrusion layers when terrain is enabled in specific edge cases.
Features and improvements ✨
  • Improve the performance of symbol layers on old devices.
  • Add TileProvider for raster and raster-dem sources, adding support for PMTiles with raster tiles.
  • Enable client-side fontstack compositing by default. When multiple fonts are requested they are now fetched individually and composited on the client.
  • Promote interactions API to stable.
  • Add a bundler-friendly ESM bundle in the NPM package (import mapboxgl from 'mapbox-gl/esm').
  • Lazy-load procedural buildings and precipitation code when using the ESM entry point.
Bug fixes 🐞
  • Fix values smaller than 1 in line-dasharray not working.
  • Fix a render issue where black boxes could appear instead of symbols briefly in some environments.
  • Fix scale-factor being applied twice to icons with feature-dependent icon-size.
  • Fix redundant WASM requests on map load when using the Standard style.
  • Fix hillshade rendering issue when using Safari in private browsing mode.
Bug fixes 🐞
  • Fix a crash on PowerVR devices.
  • Fix nested scopes support in clip layers.
  • Fix Webpack warning on dynamic imports.
  • Skip sub-pixel line dilution for intentionally thin lines.
  • Skip map-sessions request when baseApiUrl is not a Mapbox host.
Features and improvements ✨
  • Introduce the TileProvider API, a mechanism for extending GL JS with custom vector tile providers.
  • Add first-class support for PMTiles via the new TileProvider API and an official plugin (mapbox-gl-pmtiles-provider.js) that loads on demand.
  • Add experimental line-blend-mode property for rendering lines using additive or multiply blending.
  • Slightly improve overall map loading times.
  • Improve symbol layer rendering performance (by adopting Uniform Buffer Objects for data-driven properties).
  • Improve indoor maps loading performance.
Bug fixes 🐞
  • Fix dragging gesture not working on the compass control.
  • Various fixes and improvements for the Appearances API.
  • Fix an edge case when combining custom icons with images included in the style's sprite.
  • Fix setWorldview not updating layout properties correctly.
  • Fix an issue when rendering stacked underground 3D roads.
  • Fix line dashes with non-integer total array lengths.
  • Fix various rendering issues when using *-cutoff-fade-range properties.
  • Fix clip layer not clipping fill-extrusion ambient occlusion.

Breaking changes ⚠️

  • Removed mapbox-gl-unminified.js bundle in the distribution — please switch to either mapbox-gl.js, mapbox-gl-dev.js, or the new esm-min/mapbox-gl.js ESM bundle.
  • Removed spriteFormat Map option — now Mapbox styles will always use vector icons, while non-Mapbox styles will continue using classic raster sprites.
Features and improvements ✨
  • Improve memory efficiency by sharing image resources for symbol layers across map tiles.
Bug fixes 🐞
  • Fix icons disappearing when changing the color theme.
  • Fix display of symbols added via the Appearances runtime API.
Bug fixes 🐞
  • Removed the unused @types/mapbox__point-geometry package that was causing some Typescript builds to fail

3.19.0

Features and improvements ✨
  • Promote elevated lines properties to stable: line-z-offset and line-elevation-reference.
  • Add experimental text-size-scale-range and icon-size-scale-range style properties.
  • Add experimental Map#setScaleFactor/Map#getScaleFactor methods for controlling symbol layer scaling.
  • Apply global scale factor to images within text-field.
  • Fix z-fighting for elevated raster layers.
  • Add raster-elevation-reference paint property to elevate raster layers relative to ground instead of sea level.
  • Add line-elevation-ground-scale layout property to scale elevated lines with terrain exaggeration.
  • Use native async/await when loading models. Note: Please ensure GL JS is excluded from transpilation in your build setup.
  • Explicitly state minimum supported browser versions in browserslist.
  • Support pitch and distance expressions in filters.
  • Support incremental updates when using setFeatureState.
  • Add experimental Map#setNearClipOffset/Map#getNearClipOffset methods to control the near clip offset when ortohographic projections are used.
Bug fixes 🐞
  • Fix RasterArrayTileSource#reload() not working correctly.
  • Add request cancellation support to the ModelSource.
  • Fix flickering of aliased thin lines.
  • Fix elevated line bevel join artifacts at sharp corners.
  • Fix regressions in NavigationControl.
  • Fix namespace conflicts in different featuresets' selectors.
  • Recalculate layers with visibility: none in case properties were changed.
  • Fix bug in border update logic of fill-extrusion layer, overriding clip layer's behaviour.
  • Fix empty tiles on non-integer maxZoom when terrain was used.
  • Fix prototype pollution via Style JSON.
Features and improvements ✨
  • Add support for visibility property in clip layers.
  • Improve raster-color precision for fine-grained value ranges.
Bug fixes 🐞
  • Fix color interpolation throwing errors in edge cases.
  • Fix appearances with no icon-size.
  • Fix disappearing symbols when used with elevated raster layers.
Features and improvements ✨
  • Add scaleFactor support for images within text-field.
  • Add showButton option to GeolocateControl that allows hiding the control button.
  • Add followUserLocation option and setFollowUserLocation method to GeolocateControl to control whether the map follows the user's location.
  • Improve GeolocateControl timeout handling.
  • Add support for text-rotate, text-size, and text-offset properties in appearances.
  • Add shadow-draw-before-layer property to directional light, allowing control over shadow draw order in the layer stack.
  • Add model-allow-density-reduction property to model layers. (h/t @JoshuaJMoore)
Bug fixes 🐞
  • Fix interaction handlers not working on model layers.
  • Fix stretchable icons without icon-text-fit rendering with an incorrect size.
  • Fix icon-size not working correctly with coalesce expressions.
  • Fix raster-color interpolation when using nearest raster-resampling.
  • Fix render cut off for elevated raster-layer rendering in ortho projection range.
  • Fix symbol placement with optional and missing parts.
  • Expose all error properties for GeolocateControl error event (h/t @lucavb).
  • Fix an error when querying multipolygons in dynamic: true mode.
  • Fix AttributionControl links sanitization.
  • Fix appearances with no icon-size using the default value instead of the layout-defined one.
  • Fix updates to model source via ModelSource.setModels while models are still loading.
  • Fix polygon clipping precision errors causing rendering artifacts in elevated structures.
  • Preserve featuresets in map.getStyle() output.
  • Expose TypeScript types from @mapbox/mapbox-gl-style-spec for direct imports.
Features and improvements ✨
  • Add experimental ESM support.
  • Make line-emissive-strength data-driven.
  • Remove experimental flag from the extra_bounds property of raster and vector sources.
  • Remove experimental flag from model layer.
  • Remove experimental flag from building layer.
  • Improve vector icons rasterization performance.
  • Improve shadow rendering performance.
  • Improve building layer performance.
  • Improve shader initialization performance.
Bug fixes 🐞
  • Fix polygon rendering for dynamic GeoJSON sources.
  • Fix raster-array layers not working on iOS < 18.4.
  • Fix a performance issue for symbol layers with zero fade duration and static camera.
  • Fix occasional WebGL texture warnings when rendering terrain.
  • Fix features not being localized in dynamic filters when a worldview is set.
  • Fix an issue with clipping models on Standard.
  • Fix an issue with models flashing on setData.
  • Fix an issue with incorrect scoping of models added during runtime.
  • Fix line patterns not elevating properly on HD roads.
  • Sanitize attributions in AttributionControl.
  • Correctly support filtered features in appearances.
  • Fix an issue occuring when expressions are used in appearances.
  • Fix appearance optimization that resulted in wrong appearances being rendered.
  • Fix appearance icons not changing when feature state changed multiple times.
  • Improve TypeScript types.
Features and improvements ✨
  • Introduce experimental Appearances API for managing layer styling based on feature state.
  • Add Map setLayerProperty that combines setLayoutProperty & setPaintProperty into one method for convenience.
  • Add support for node/material overrides & other improvements to model source and layer.
  • Various improvements & fixes for upcoming 3D features (indoor, procedural buildings & elevated roads).
  • Add response headers to the sourcedata event data.
  • Improve TypeScript types for style specification.
Bug fixes 🐞
  • Fix raster particle layer not rendering correctly on styles with emissive light.
  • Fix icons of different sizes rendering incorrectly in appearances.
  • Fix worldview filtering with dynamic expressions.
  • Improve accuracy of queryRenderedFeatures for model layers.
  • Fix a bug with heatmap sometimes disappearing after switching projection.
  • Fix rendering of model layer with vector source on globe projection.
  • Fix flickering of fill-extrusion buildings when using clip layers.
  • Fix inaccuracies in 3D model query intersection.
  • Fix the passing of GeolocationPosition to geolocate event listeners.
  • Fix the placement of line-aligned text with a non-default scaleFactor.

3.15.0

Features and improvements ✨
  • Add queryRasterValue method for querying values in raster-array layers.
  • Add icon-image-use-theme property.
  • Add support for Mapbox vector tiles with precalculated line metrics (for line gradients).
  • Improve HD Roads loading performance.
  • Optimize applying LUT when updating images at runtime.
  • Improve TypeScript types in Style Spec validation methods.
  • Slightly improve hsla expression performance.
  • Optimize applying LUT for patterns.
  • Round queryRasterValue results to 12 decimal digits to fix precision issues.
  • Improvements on typing and testing.
Bug fixes 🐞
  • Fix an issue with refreshing expired raster array tiles.
  • Fix an error on GeoJSON with "Infinity" and similar ids.
  • Fix GL_INVALID_VALUE console warning on Mapbox Satellite Standard and a few other styles.
  • Fix model layer positioning during globe to mercator transition.
  • Fix an issue with incorrect transparency for some icons with LUT applied.
  • Fix an issue where updating *-occlusion-opacity properties didn't have any effect.
  • Fix an issue with MRT layers throwing an error when reloading.
  • Fix occlusion layer ordering.
  • Fix an issue where using too many data-driven properties on the symbol layer could break the map.
  • Fix gradients and interpolations with fully-transparent colors.
  • Fix model layer density reduction.
  • Fix performance regression on styles that use feature-state expressions.
Breaking changes ⚠️
  • Imported styles will use the glyphs URL template from the root style instead of their own.
Features and improvements ✨
  • Add a split expression to divide a string into an array of substrings based on a specified delimiter.
  • Improve memory usage for GeoJSON sources.
Bug fixes 🐞
  • Fix an issue with querying rendered features during the globe-to-Mercator transition.
  • Fix resources cleanup when removing a map with a terrain or/and vector icons.
  • Fix an issue where a single primary image was not rendered correctly with icon-image-cross-fade.
  • Fix an edge case involving the mixing of vertical and horizontal writing modes.
  • Fix rendering of multiple raster layers from a single raster-array source.
  • Fix restoration of maps with background patterns, heatmap, image, video, or raster sources after WebGL context loss.
  • Fix memory spike when calling setData on large datasets.
Breaking changes ⚠️
  • interpolate expression will interpolate between non-alpha-premultiplied colors. The change might affect raster-particle-color, line-gradient, and heatmap-color.
  • rgb expression will return non-premultiplied-alpha color.
Features and improvements ✨
  • Add the ["worldview"] expression, which returns the current worldview of the map.
  • Add model-translation support for batched model layers.
  • Improve indoor level interaction.
  • Add support of gradient transforms in the fill style of vector icons.
Bug fixes 🐞
  • Fix querying and styling issues with multiple model layers referencing the same source.
  • Fix mapbox-gl-rtl-text v0.3.0 plugin not loading in certain configurations.
  • Fix icons with text-variable-anchor disappearing.
  • Fix minor distortions on vector icons in some cases.
  • Fix zooming over terrain with negative altitude values.
  • Fix interactions to not throw on mouseleave without mouseenter.
  • Fix shadow rendering issues on underground structures.
  • Fix striping artifacts when rendering shadows on some GPU configurations.
  • Fix errors when viewing a style with filtered model layers.
  • Fix parsing of color-use-theme property of 3D lights.
  • Fix feature-dependent config expressions (h/t @brncsk) #13453.
  • Fix reset of the indoor floorplan selection after moving the camera.
  • Fix excessive rerendering of the map after setStyle with the same URL of an import.
  • Fix source reloading during mercator-globe transition with terrain.
  • Fix color of semi-transparent vector icons.
Workflow 🛠️
  • Switched from CircleCI to GitHub Actions for continuous integration tests.
Features and improvements ✨
  • Add experimental support for rendering 3D road intersections.
  • Add shadow rendering support for elevated lines.
  • Add wrapTileId property to CustomLayerInterface to control whether tile IDs are wrapped across world copies during rendering.
  • Add line-pattern-cross-fade, fill-pattern-cross-fade, and fill-extrusion-pattern-cross-fade properties for smooth transitions between pattern images.
  • Add support for extra_bounds in TileJSON for more fine-grained control over tile requests, particularly when dealing with sparse data coverage.
  • Improve performance by lazy loading 3D models.
  • Slightly improve JS bundle sizes.
  • Various TypeScript improvements.
Bug fixes 🐞
  • Fixed an issue where calling setData on symbol layers could cause flickering.
  • Expose CustomSourceInterface TypeScript type that was missing in the public interface.
  • Fix some edge cases related to rendering of elevated structures.
  • Relax line-gradient validation to work not only on GeoJSON, but also on vector tile sources if they have mapbox_clip_start and mapbox_clip_end properties precomputed.
  • Fix styleimagemissing event not firing in certain scenarios.
  • Fix rendering of fully stretchable vector icons.
  • Fix queryRenderedFeatures on Globe at low zoom levels.
Bug fixes 🐞
  • Improve icon loading performance, in particular for landmark icons.
  • Fix undefined passed in Marker options not falling back to default values.
Breaking changes ⚠️
  • The at expression does not interpolate anymore. Please use at-interpolated if you want to keep the old behavior.
Features and improvements ✨
  • Add landmark icons. Landmark icons are stylized, uniquely designed POI icons that indicate the most popular and recognizable landmarks on the map. At the time of this release, we have landmarks for 5 cities: London, Berlin, New York City, San Francisco, and Tokyo.
  • Add at-interpolated expression as the interpolated counterpart to the at expression.
  • Add altitude marker property to adjust elevation. (h/t @yangtanyu) #13335.
  • Add getCooperativeGestures and setCooperativeGestures map methods to control cooperative gestures logic after the map is initialized.
  • Add getGlyphsUrl and setGlyphsUrl map methods to manage the glyphs endpoint URL.
  • Add pitchRotateKey map option to override the modifier key for rotate and pitch handlers.
  • Add filtering support for model layers.
  • Add support for vector icons color parameters with alpha values.
Bug fixes 🐞
  • Hide labels with unreadable angles.
  • Fix rendering of vector image in text on HiDPI screens.
  • Ensure Katakana and CJK symbols render correctly in vertical writing mode.
  • Fix popup position update on map move. (h/t @ThugRaven) #13412
  • Fix rendering of self-intersecting elevated lines.
  • Prevent line pattern from turning black at certain zoom levels when shadows are enabled.
  • Fix missing triangles in variable-width lines.
  • Improve Style-Spec validator types.
  • Fix reloading of tiles in style imports.
  • Fix issue where updated images were never cleared after patching them.
  • Fix rendering performance regression related to use-theme.
Features and improvements ✨
  • Add support for data-driven *-use-theme properties.
  • Improve rendering of complex SVG clip paths for vector icons.
Bug fixes 🐞
  • Fix issue where the close popup button was hidden from screen readers.
  • Fix updating of schema config values of imported styles.
  • Fix line placement symbol disappearing issue during transition from globe.
  • Fix queryRenderedFeatures not working on duplicated model layers.
  • Fix in-place update for SDF image.
  • Fix LUT not being applied to in-place updated image.
  • Fix various issues with using mouseenter and mouseleave with Interactions API.
  • Fix error with interactible map elements during interaction with a map that wasn't fully loaded.
  • Fix rendering of elevated and non-elevated lines on the same layer.
  • Fix pixel ratio handling for patterns with vector icons.
  • Fix positioning of vector icons with modified icon-size.
  • Fix a blank map issue after WebGL context loss.
  • Fix loss of precision for close to camera models.
  • Fix transparent models not being culled when terrain is enabled.
  • Fix vector icons rendering with stretch areas on high DPI devices.
Last Checked
4h ago
Latest
v3.24.0
Tracking since Jun 17, 2022