github Leaflet/Leaflet v1.9.0

latest releases: v1.9.3, v1.9.2, v1.9.1...
6 months ago

⚡ Note on future versions

The v1.9 release is setting the stage for the first major version bump of Leaflet since 2016! A lot has changed since then, and it's time for Leaflet to grow together with the web platform.

After this release, we are branching off the 1.x code and putting it in maintenance mode — reserving potential 1.x releases only for critical bugfixes. Although version 2.0 is still far away and will take some time to take shape, we plan to make the following changes:

  • Dropping support for Internet Explorer.
    This has been a long time coming, but now that Internet Explorer is officially end-of-life, it's time to say goodbye. Going forward, Leaflet will move to an evergreen strategy that targets browsers like Firefox, Chrome, Edge and Safari.
  • Embracing modern JavaScript.
    To maintain backwards compatibility, Leaflet is written entirely in ES5, a version of JavaScript supported by legacy browsers. So we have not been able to make use of many great JavaScript features (e.g. standardized classes, instead having to rely on our own implementation). By adopting a more modern version of the ECMAScript standard, we can start working towards aligning Leaflet with what is expected from a modern JavaScript library.
  • Standardized modules.
    When we released Leaflet v1, the landscape in the JavaScript world was very different and full of competing module standards such as CommonJS, AMD and UMD. Today, ECMAScript modules have become the clear way forward to unite the JavaScript ecosystem under one banner. Moving forward, Leaflet will only be distributed in a single standardized module system, greatly reducing complexity of our distributed code.
  • Removing the Leaflet global.
    As a developer using Leaflet, the capital letter L is probably intimately familiar to you. This is the Leaflet global where all of Leaflet's functionality lives. To allow compiler tooling to better eliminate dead-code through a process called tree-shaking, we are removing this global variable. To preserve backwards compatibility with older plugins, we will provide a shim that can be imported manually that will restore this functionality.

v1.9.0 changelog

⚠️ Breaking Changes

  • Expose ESM entrypoint with Leaflet global (#8329 by @jonkoops). If you're using Leaflet in a ESM setup with plugins that rely on the L global, you have to use the default import for them to work:
-import * as L from 'leaflet';
+import L from 'leaflet';
  • Update color-adjust to print-color-adjust (#8211 by @Malvoz)

❇️ API changes

✨ Improvements

🙌 Accessibility

🐞 Bug fixes

  • Fix invalid GeoJSON on unbalanced arrays (#7637 by @steff1986)
  • Fix 2 step zooming while using mouse wheel scrolling (#8298 by @Falke-Design)
  • Fix wrong assigned parameter while calling map._move over requestAnimFrame (#8328 by @AMDvsTMD)
  • Fix _isClickDisabled to not throw no error if parent is removed from DOM (#8288 by @Falke-Design)
  • Fix DomEvent.DoubleTap to ignore clicks on <label>s with a for attribute (#8227 by @IvanSanchez)
  • Fix calling once() twice if same event is fired inside once (#8190 by @Falke-Design)
  • Fix map.getCenter() returning a mutable object (#8167 by @mourner)
  • Fix regression about popup close button modifying the URL (#8160 by @IvanSanchez)
  • Fix min/maxZoom when used in combination with detectRetina (#7328 by @bozdoz)

📝 Docs

🔧 Workflow

🧪 Tests


Update: we've since released v1.9.1 to address compatibility with Leaflet.markercluster plugin.

Stand With Ukraine

Don't miss a new Leaflet release

NewReleases is sending notifications on new releases.