Skip to content

v1.9.0

Compare
Choose a tag to compare
@jonkoops jonkoops released this 22 Sep 08:51
· 454 commits to main since this release

⚑ 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

  • (This change has been reverted in v1.9.2) Expose ESM entrypoint with Leaflet global (#8329 by @jonkoops).
  • Update color-adjust to print-color-adjust (#8211 by @Malvoz)

❇️ API changes

✨ Improvements

πŸ™Œ Accessibility

  • Improve Tooltip accessibility (focus and voice over) (#8247 by @alekzvik)
  • Fix links in accessibility guide (#8198 by @Malvoz)
  • Remove role="presentation" from image tiles (#8172 by @Malvoz)

🐞 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

v1.9.x updates:

We've since released:

  • v1.9.1 to address compatibility with Leaflet.markercluster plugin.
  • v1.9.2 to fix ESM compatibility issues with other plugins, and fix and issue tooltips & canvas renderer.

Stand With Ukraine