NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
Last release 6 days ago
15 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
6 years old
188 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Expose map options.maxTileCacheZoomLevels to allow better control of tile cache (#2581) (by @pramilk)
Update shaders to GLSL ES 3.0 (#2599) (by @birkskyum)
RequestTransformFunction type to return RequestParameters or undefined (#2586) (by @nreese)EXT_color_buffer_float WebGL2 extension to fix heatmap in firefox (#2595) (by @birkskyum)Nothing published for this version
Fixes issue with ResizeObserver firing an initial 'resize' event (since 3.0.0-pre.5) (#2551) (by @birkskyum)
Add transformCameraUpdate callback to Map options (#2535) (by @Pessimistress)
transformCameraUpdate callback to Map options (#2535) (by @Pessimistress)⚠️ Breaking - Remove WebGL1 support. Move to WebGL2 (#2512) (by @birkskyum)
⚠️ Breaking - Improve control performance by restricting worker count to a max of 1 except safari browser. (#2354) (by @pramilk)
LngLatBounds.extend() to correctly handle { lng: number, lat: number } coordinates. (#2425) (by @buffalom)Remove a deprecation warning by removing an empty texture that is no longer being used in the codebase (#2299) (by @IvanSanchez)
resize event from the browser. Now it is ResizeObserverEntry, see more here. (by @HarelM)LngLat.toBounds() is replaced by a static method LngLatBounds.fromLngLat() (#2188) (by @zhangyiatmicrosoft)unknown (#2243) (by @neodescis)warnonce when terrain and hillshade source are the same (#2298) (by @tempranova)hsl css color in a format that does not comply with the CSS Color specification. Colors defined in hsl(110, 0.7, 0.055) format will no longer work, instead it is recommended to use the format with percentages hsl(110, 70%, 5.5%). (#2376) (by @kajkal)features property on MapLayerMouseEvent and MapLayerTouchEvent to be MapGeoJSONFeature[] in lieu of GeoJSON.Feature[] (#2244) (by @parkerziegler)setStyle(style, {diff:true}) (#2146) (by @jcary741)getTerrain when fitBounds across the AM (#2155) (by @llambanna)toArray method return type to [number,number] (#2233) (by @maxdacruz)window.navigator.geolocation (#2359) (by @HarelM)Add setClusterOptions to update cluster properties of the added sources: fixing these issues (#429) and (#1384) (by @IhsenBen)
setClusterOptions to update cluster properties of the added sources: fixing these issues (#429) and (#1384) (by @IhsenBen)workerOptions and _options in geojson_source.ts (#1998) (by @IhsenBen)Add support for multiple sprite declarations in one style file (#1805) (by @smellyshovel)
sprite declarations in one style file (#1805) (by @smellyshovel)QueryRenderedFeaturesOptions type added to both of the params in queryRenderedFeatures in map.ts (#1900) (by @beharguy)
QueryRenderedFeaturesOptions type added to both of the params in queryRenderedFeatures in map.ts (#1900) (by @beharguy)cooperativeGestures overlay is always "on top" (z-index) of map features (#1753) (by @blyme)willReadFrequently hint to optimize 2D canvas usage and remove warnings (#1808) (by @kircher1)@rollup/plugin-json, which was in conflict with rollup-plugin-import-assert (#1894) (by @rotu)@mapbox/gazetteer which caused some build warnings (#1757 #1898) (by @AdamS108)getElevation() causing uncaught error (#1650). (by @zbigniewmatysek-tomtom)map.setStyle when it is passed with transformStyle option and map is initialized without an initial style. (#1824) (by @ambientlight)Return a promise from once method to allow easier usage of async/await in this case (#1690) (by @HarelM)
once method to allow easier usage of async/await in this case (#1690) (by @HarelM)updateData to GeoJSONSource which allows for partial data updates (#1605) (by @mfedderly)GeoJSONSource appearing to never finish loading when calling its setData method immediately after adding it to a Map due to it not firing a metadata data event (#1693) (by @vanilla-lake)⚠️ Breaking - Remove deprecated mapboxgl- css classes (#1575) (by @birkskyum)
freezeElevation to AnimationOptions to allow smooth camera movement in 3D (#1514, #1492) (by @prozessor13)mapboxgl- css classes (#1575) (by @birkskyum)Added calculateCameraOptionsFromTo to camera (#1427) (by @BAschl)
_interpolationType unused field (#264) (by @HarelM)Improve expression types (#1510) (by @cns-solutions-admin)
Improve error handling (#1485) (by @birkskyum)
Re-enable method to get library version. Either with import {version} from 'maplibre-gl', or on a Map instance as map.version. (#1471) (by @birkskyum)
import {version} from 'maplibre-gl', or on a Map instance as map.version. (#1471) (by @birkskyum)Fix types generation and make sure they run as part of the CI (#1462, #1465) (by @HarelM)
Everything from the four previous pre-releases:
Everything from the four previous pre-releases:
icon-padding symbol layout property to support asymmetric padding (#1289) (by @drwestco)cooperativeGestures option when instantiating map to prevent inadvertent scrolling/panning when navigating a page where map is embedded inline (#234) (by @ewagstaff)GeoJSONSource.setData() is called instead of waiting for any pending request to complete before issuing the request for the new URL (#1102) (by @vanilla-lake)box-sizing: border-box; (#1250) (by @lukashass)summary styles on the attribution control (#1258) (by @pjsier)Update icon-padding symbol layout property to support asymmetric padding (#1289) (by @drwestco)
icon-padding symbol layout property to support asymmetric padding (#1289) (by @drwestco)cooperativeGestures option when instantiating map to prevent inadvertent scrolling/panning when navigating a page where map is embedded inline (#234) (by @ewagstaff)box-sizing: border-box; (#1250) (by @lukashass)Handle maxBounds which cross the meridian at longitude ±180° (#1299) (by @burleight)
summary styles on the attribution control (#1258) (by @pjsier)Add 3D terrain capabilities (#165, #1022) (by @prozessor13)
Cancel pending GeoJSON requests when GeoJSONSource.setData() is called instead of waiting for any pending request to complete before issuing the reque
GeoJSONSource.setData() is called instead of waiting for any pending request to complete before issuing the request for the new URL (#1102) (by @vanilla-lake)Add back typescript typings to dependencies instead of devDependencies (#1178) (by @HarelM)
Changed logic for showing the MapLibre logo. The MapLibre logo is now shown by setting the map option 'maplibreLogo' to true or by adding it to a map
touchmove in MapTouchEvent["type"] (#1131) (by @smellyshovel)Use correct location for mouse events of line layer with line-offset (#1108). (by @jkoelewijn)
Removal of the unminified production build target, so npm run build-prod will be the main build command going forward.
npm run build-prod will be the main build command going forward.cannot read properties of undefined (reading 'sourceCaches') error (#1099). (by @khmm12)Add option viewport-glyph to text-rotation-alignment which places glyphs along a linestring and rotates them to the x-axis of the viewport (#716). (by
viewport-glyph to text-rotation-alignment which places glyphs along a linestring and rotates them to the x-axis of the viewport (#716). (by @wipfli)GeoJSONFeature.id type from number | string | void to number | string | undefined (#1093) (by @nreese)id: string | number; to id?: string | number | undefined; (#1095) (by @nreese)Add adjustment for glyph rendering, CJK fonts are mainly affected (#1002). (by @Kanahiro)
SourceCache.loaded() always returning true following a load error (#1025) (by @vanilla-lake)Publish dist/package.json (#998). (by @wipfli)
Publish dist/package.json (#998). (by @wipfli)
Publish empty postinstall.js file. Follow-up on (#990) (by @wipfli)
Publish empty postinstall.js file. Follow-up on (#990) (by @wipfli)
Fix missing postinstall.js file in npm publish. Follow-up on (#990) (by @wipfli)
Fix postinstall ts-node error on non-dev installs (#900) (by @birkskyum)
ts-node error on non-dev installs (#900) (by @birkskyum)Default compact attribution to be open by default to comply with OpenStreetMap Attribution Guidelines (#795) (by @acalcutt)
Source classes (GeoJSONSource etc.) declarations. (#801) (by @sebisteiner)AJAXError public so error HTTP responses can be handled differently from other errors. (#941) (by @vanilla-lake)dataabort and sourcedataabort events when a tile request is aborted (#794) (by @vanilla-lake)performance undefined (#768) (by @HarelM)Fix stale tiles being shown when calling VectorTileSource#setTiles while the map is moving. (#913) (by @vanilla-lake)
Deprecate icon-allow-overlap and text-allow-overlap symbol layout properties. icon-overlap and text-overlap are their replacements. (#347) (by @drwest…
icon-overlap and text-overlap symbol layout properties (#347) (by @drwestco)icon-allow-overlap and text-allow-overlap symbol layout properties. icon-overlap and text-overlap are their replacements. (#347) (by @drwestco)MapOptions#pixelRatio property and a Map#setPixelRatio method. Since a high devicePixelRatio value can lead to performance and display problems, it is done at your own risk. (#769) (by @vanilla-lake)Remove list of node versions allowed to install the package.
Missing package.json file in version 2.0.3 dist in npm (#811) - this causes webpack to fail (by @HarelM)
Remove node package chalk from devDependencies (#789). (by @astridx)
Fix typescript generated file (#776). (by @wipfli)
Fix documentation of addProtocol and removeProtocol. (#779) (by @wipfli)
Breaking Change removed version from the public API
version from the public APIaccessToken and Mapbox specific urls starting with mapbox://. Telemetry and tracking code was removed.baseApiUrl as it was used only for Mapbox related urlsStyle => StyleSpecificationAnyLayer => LayerSpecificationAnySourceData => SourceSpecificationMapboxEvent => MapLibreEventMapboxOptions => MapOptionsMapBoxZoomEvent => MapLibreZoomEvent*SourceRaw + *SourceOptions => *SourceSpecification*Source (source implementation definition) were removed*Layer => *LayerSpecification*Paint => *LayerSpecification['paint']*Layout => *LayerSpecification['layout']MapboxGeoJSONFeature => GeoJSONFeatureredraw function to map (#206) (by @fredj)getImage uses createImageBitmap when supported (#650) (by @clementgayvallet)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
Fix breaking changes introduced in v1.15.0 by adoption dual naming scheme for CSS class names (#203) (by @p-j)
Add void return for some method declaration to match TS strict mode (#194) (by @ArthurMetzger)
Breaking Change: Rename css classes (#83) (by @HarelM)
*-sort-key (#78) (by @ghost)Nothing published for this version
Nothing published for this version
Rename SVGs mapboxgl-ctrl-\*.svg to maplibregl (#85) (by @nyurik)
Your coding agent can read these notes before it upgrades. Set up the MCP server →