Skip to content

Releases: maplibre/maplibre-gl-js

v5.17.0

27 Jan 15:33
Immutable release. Only release title and notes can be modified.
e00b513

Choose a tag to compare

✨ Features and improvements

  • Refactor _updateWorkerData (#6983) (by @wayofthefuture)
  • ⚠️ Add zoomSnap option to Map to allow snapping zoom levels to a grid when zooming in and out; aligns the behavior across all UI patterns (keyboard, scroll wheel, on-screen zoom buttons, double-click, double-tap). Previously, pressing +/- on the keyboard zoomed to rounded whole integers, more or less than 1 zoom level when starting from a fractional zoom. Now any number can be specified for zoomSnap; a value of 1.0 produces the rounded whole integer behavior across all UI patterns. (#6941) (by @mizmay)
  • Add support for container elements from different windows (e.g., popup or iframe) (#6969) (by @Syncret)
  • Migrate to @maplibre/geojson-vt (#6995) (by @HarelM)

🐞 Bug fixes

  • Fix incorrect shader selection for text labels with inline images (#6956) (by @ciscorn)
  • Fix marker positions not updating when zoom or pitch are changed following a change in constraints (#6925) (by auspicus)

v5.16.0

12 Jan 10:01
Immutable release. Only release title and notes can be modified.
b8f3442

Choose a tag to compare

✨ Features and improvements

  • Add padding option to Popup class to prevent popups from being positioned too close to map container edges (#5978) (by @yuiseki and @lucaswoj)
  • Emit style.load event on style diff (#6880) (by lesbaa)

🐞 Bug fixes

  • Fix setting visibility on custom layer (#6883) (by melitele)
  • Hide leading and trailing control characters in format expressions (#6907) (by 1ec5)
  • Fix image sources being clipped at -180 and 180 longitude when terrain is enabled (#4088) (by pstaszek)
  • Fix map not immediately constraining to a valid zoom and center when changing projections (#6892) (by larsmaxfield)
  • Fix a blank map when a resize event is triggered before a WebGL context restoration (#6935) (by ToHold)
  • Diffed changes when json is passed to setStyle emit a style.load event. (#2587, #4757) (by @lesbaa)
  • Fix a precision issue in the atomsphere shader in globe projection. (#6916) (by tavimori)

v5.15.0

17 Dec 07:34
Immutable release. Only release title and notes can be modified.
b457ca9

Choose a tag to compare

✨ Features and improvements

  • Support global state expression for layer visibility (#6659) (by melitele)
  • Update Node.js version to 24.11 for development (#6851) (by HarelM)

🐞 Bug fixes

  • Fix LngLatBounds#intersects returning false for bounds spanning 360° or more (#6863) (by @lucaswoj)
  • Fix getting the right zoom for getElevationForLngLat (#6825) (by @HarelM)
  • Fix stale transform state being applied after changing minZoom or maxZoom due to old copies from transformCameraUpdate taking precedence. transformCameraUpdate is now called from setMinZoom and setMaxZoom to allow user to control subsequent changes to zoom #6766 (by @Auspicus)
  • Fix GeoJSON source throwing with undefined properties #6730 (by @wayofthefuture)

v5.14.0

03 Dec 10:46
Immutable release. Only release title and notes can be modified.
50d412d

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.13.0:

✨ Features and improvements

  • Prevent redundant DEM border backfilling by tracking state, moved tile manager logic to helper files (#6756) (by @HarelM)
  • Improve performance of GeoJSON updateData, setData, and overzoomed tiles (#6738, #6772) (by @lucaswoj)

🐞 Bug fixes

  • Handle consecutive duplicate points in offsetLine to avoid null values in the output. Fixes #5431 (by mmc1718)
  • ⚠️ Gracefully handle internal AbortErrors (e.g., when a TileJSON URL is updated while a request in flight). Previously, such aborted requests would throw an AbortError in an unhandled rejection that was not easily caught in user code. Since aborted requests are fully handled internally, these unhandled rejections were superfluous and resulted in unhelpful client errors. (#6747) (by @andrewda)
  • Fix canvas sources with power-of-2 dimensions rendering as black squares (#6607) (by Omkarthipparthi)
  • Fix queryTerrainElevation to use higher zoom level tiles when possible (#6791) (by @HarelM)
  • Fix unwanted movement when moving a pitched terrain map at high latitudes; fix freezes when moving a pitched and rotated terrain map at low zoom (#6775) (by @larsmaxfield)
  • Fix issue with static modifier as part of mlt package (#6796) (by @HarelM)
  • LngLatBounds#intersects now returns true when bounds touch along an edge or at a corner (#6802) (by @lucaswoj)

v5.13.0

14 Nov 21:56
Immutable release. Only release title and notes can be modified.
53cb799

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.12.0:

✨ Features and improvements

  • Text labels can now include relatively uncommon Chinese, Japanese, Korean, and Vietnamese characters, as well as characters from historical writing systems. When using server-side fonts, the map may request glyph PBFs beyond U+FFFF from the server instead of throwing an error as before. (#6640) (by @1ec5)
  • GeoJSON Source Diff: improve, abstract, refactor, optimize, and fix regressions. (#6681) (by @wayofthefuture)
  • GeoJSONSource setData and updateData waitForCompletion option (#6688) (by @wayofthefuture)
  • Improve performance of GeoJSONSource#updateData (#6668) (by @lucaswoj)
  • GeoJSON Worker Refactor (#6702) (by @wayofthefuture)

🐞 Bug fixes

v5.12.0

09 Nov 07:18
Immutable release. Only release title and notes can be modified.
370565b

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.11.0:

✨ Features and improvements

  • Add support for MapLibre Tiles (MLT) by using encoding: 'mlt' in vector source definition (#6570) (by @Salkin975 and @HarelM)
  • Slice vector tiles to improve over scale vector handling (#6521). It adds the experimentalZoomLevelsToOverscale flag to MapOptions to allow controlling how many zoom levels to slice and how many to scale. It seems to have better performance at high zoom levels. It can prevent Safari crashes in some scenarios by setting it to 4 or less. (by @HarelM)
  • Add reduceMotion option to Map Options (#6661) (by @wayofthefuture)

🐞 Bug fixes

  • Fix missing constrainOverride setter in TransformHelper.apply (#6642) (by @larsmaxfield)
  • Fix blank map after WebGL context restore (#6242) (by @ToHold)

v5.11.0

03 Nov 22:18
Immutable release. Only release title and notes can be modified.
25d189b

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.10.0:

✨ Features and improvements

  • Improve performance of GeoJSONSource#updateData when called on small diffs (#6562) (by @lucaswoj)
  • If the stylesheet lacks a glyphs property at the root level, interpret the text-font property as a cascading fallback list of font names and render all text using local or system fonts. (#4564) (by @1ec5)
  • ⚠️ Refactor SourceCache to TileManager (#6635) - this is not a breaking change since SourceCache is not part of the public API, but if you have a plugin that uses internal stuff, it might break... (by @wayofthefuture)

🐞 Bug fixes

  • If a required glyph PBF is unavailable or it lacks a glyph for a character in a text-field, try to render it locally instead of crashing. (#4564) (by @1ec5)
  • Export now() function in timeControl API to complete the API and enable external code to read controlled time (#6644) (by @bjperson)
  • ScaleControl CSS styling contains white-space: nowrap to prevent wrapping (#6647) (by @stroebjo)
  • Fix edge fading for unloaded tiles (#6650) (by @wayofthefuture)

v5.10.0

26 Oct 08:15
Immutable release. Only release title and notes can be modified.
93634b0

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.9.0:

✨ Features and improvements

  • Add time control API (setNow, restoreNow, isTimeFrozen) for deterministic rendering, enabling frame-by-frame video export and deterministic testing (6544)
  • Use styles isHidden logic in the worker by adding a new optional roundMinZoom parameter (#6547)
  • Add transformConstrain callback to the Map options to override the transform's constrain with new type TransformConstrainFunction; refactor transform constructor options to a TransformOptions object (#6484)
  • Use timeControl.now() instead of browser.now() (6573)

🐞 Bug fixes

  • Contextmenu events not blocked by scrolling (#5683
  • Mousemove events are not blocked by scrolling (#6302)
  • Dashed lines have blurry rounded caps (#6554)
  • Preserve flyTo padding when prefers-reduced-motion is enabled (#6576)
  • Fix setClusterOptions not triggering recluster when no data changes are pending (#6603)

v5.9.0

09 Oct 11:49
Immutable release. Only release title and notes can be modified.
14f56b0

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.8.0:

✨ Features and improvements

  • Improve fading - dynamic bi-directional raster cross-fading and self fading (#6469)
  • Support for usage of line-gradient together with line-dasharray (#6487)

🐞 Bug fixes

  • Added button role to marker div to fix accessibility issues with the aria-label (#6435)
  • Fix a crash on iOS when there are too many symbols to render (#6526)

v5.8.0

30 Sep 13:02
Immutable release. Only release title and notes can be modified.
f71040d

Choose a tag to compare

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.7.3:

✨ Features and improvements

  • Enable documentation admonitions in Material for MkDocs. (#6455)
  • Switch MapEventType from type to interface to allow declaration merging (#6436)
  • Implement data-driven styling support for line-dasharray (#5812)

🐞 Bug fixes

  • Fix raster flickering when using terrain 3D and optimize terrain logic.
  • Fix issue where parent tiles are retained when deeper descendant tiles already cover the missing ideal tile. (#6442)
  • Fix an issue when GeolocateControl fires outofmaxbounds event with trackUserLocation disabled (#6464)
  • Fix an issue with globe+terrain "zooming" in when dragging towards the poles (#6470)
  • Fix integer overflow in symbol placement (#6476)