MapLibre Newsletter July 2025

Aug 4, 2025

Categories: Newsletter
Authors: Bart Louwers Frank Elsinga Harel Mazor Ramya Ragupathy Yuri Astrakhan

Welcome to the July edition of the MapLibre newsletter! We start with a note of gratitude to our sponsor Jawg Maps.

MapLibre logoMierune logo

Sincere thanks to Jawg Maps for their ongoing commitment to MapLibre (2023–2025) 🙌

This month’s newsletter brings exciting updates across the MapLibre ecosystem, from enhanced font support for complex scripts in Native, a new frontend for Martin, to our growing presence at global conferences. We also kicked off the 2025 Governing Board election process, a great opportunity to help shape the project’s future. Read on for the latest updates and ways to get involved!

🗳️ Governing Board Elections 2025

MapLibre’s 2025 Governing Board election process has begun!

Date

Milestone

Aug 15, 2025

Deadline for Voting Member nominations and Board candidate registration

Aug 22, 2025

Deadline for approval of new Voting Members (via PR review)

Aug 29, 2025

Governing Board election poll closes (OpaVote)

📱 MapLibre Native

  • Support for Complex Scripts: We added support for the new font-faces property (see the implementation PR). This allows you to use TrueType fonts with MapLibre Native. Font files are needed for text shaping which many complex (non-latin) scripts require. Thanks goes to Alan Wei Chen, Stefan Karschti and Grab for contributing this functionality.
Map showing Myanmar with complex script renderingMap showing Thailand with Thai script rendering

Screenshots showing complex map rendering. Style © OpenMapTiles. Map data from OpenStreetMap.

  • Crowdsourced Device Testing: Adrian Cojocaru has developed long running tests for Android and iOS. Now we are thinking about how we can actually run these. Since AWS Device Farm limits runs to 150 minutes, we are thinking about distributing an app that people can download, to run these tests on their own devices. This app would report any issues to a central place. So a crowed-sourced approach to bug hunting. More info will follow and please share your ideas!

  • Render Area Limiting: Yousif Aldolaijan has contributed a PR to limit the area that is rendered to, while keeping the surface area the same size. This is useful for performance reasons when navigation elements are sometimes overlapping those areas. See #3676 for the PR and discussion.

  • Concurrent Animations: The location component on Android and iOS takes control of animations. This means that users of the built-in location component cannot kick off your animations of their own, as it would conflict with those of the location components. Yousif is exploring concurrent animations as a possible fix for this behavior. Join the discussion if you have a similar use case or have solved this problem.

  • Style JSON Hook: Malcolm Toon contributed a PR (see also the issue) to add a hook to transform the style JSON when it is loaded or fed to the map view. Please join the discussion if you have another interesting use case for this.

  • Custom protocols: We are investigating what custom protocols similar to the MapLibre GL JS addProtocol hook would look like for Native. Malcolm has cooked up a PR. One discussion point is, if it should be synchronous or asynchronous on the platform level, if it is desirable (and feasible) to give access to the built-in resource loading to the platform level and if custom protocols should be able to do resource loading as well as transformations (or just the former). Please let us know your use cases you imagine for this functionality.

  • Qt backend: Birk Skyum has made several PRs to bring the Vulkan and Metal backend to the Qt platform.

  • macOS Metal bugfix: The Node.js platform with Metal (on macOS) stopped rendering after 32 frames. We added a flag that will set up an Objective-C autoreleasepool in the core rendering loop that fixes this issue. A new version of the maplibre/maplibre-gl-native npm package which contains this fix will be out shortly.

  • Releases this month:

🌐 MapLibre Web

Version 5.6.1 was released this month with a few bug fixes. We also sorted the examples pages in the documentation, for better consistency between the page titles and their locations in the table of contents. This change might cause a few temporary broken links in Google search, but we’re sure the broken links will be a short lived problem and expect this to be resolved quickly.

📝 Style spec

We’ve added support in the style-spec for font-faces for files and urls which is a huge step forward in order to support eastern scripts and other fonts without the need to pre-process them to glyphs. The discussion around it was very good with a lot of valuable inputs. Thanks to everyone that participated!

🧩 Martin

Martin v0.18 has been released, featuring the new web UI frontend with the basic metrics, tile inspection, view styles with Mapunik as an add-on, and view sprites and fonts.

Sneak peek of Martin UI showing performance metrics, and a tile source catalog, tabs for a style catalog, fonts catalog and sprites catalog

🦀 maplibre-native-rs

MapLibre Native has continued to progress steadily over the past month, with notable improvements especially for integrating into Rust projects:

  • You can now build with maplibre-native-rs using even more static “maplibre-core-amalgam” binaries. ICU and other previously required external dependencies are now bundled into the core libraries, greatly reducing build friction.
  • Platform readiness: There’s still work to be done before reaching production parity, particularly regarding macOS and Windows support.
  • Early groundwork is being laid for incorporating maplibre-native-rs into the Martin tile server.

We also have a new social image for this project:

MapLibre Native RS promotional image

Social image for maplibre-native-rs, Rust native backend of MapLibre.

✨ Community spotlight

The OpenStreetMap homepage recently introduced two new featured map layer options powered by MapLibre GL JS via maplibre-gl-leaflet. There are also ongoing discussions about whether switching from maplibre-gl-leaflet to a more “unwrapped” implementation using maplibre-gl-js directly might offer additional benefits.

👥 Conferences roundup

Over the past two months, we participated in several key events:

  • 🇺🇸 State of the Map US: We delivered hands-on workshops and insightful talks. You can find the materials on GitHub.
  • 🇳🇱 FOSS4G Netherlands: A great opportunity to connect with the local FOSS4G community and showcase MapLibre in action.
  • 🇧🇦 FOSS4G Europe (Mostar): The team hosted sessions, demos, and conversations on open mapping. You can find the workshop materials on GitHub.

We’re grateful to everyone who joined us and we look forward to upcoming events including FOSS4G Oceania in Auckland and FOSS4G North America in Washington, DC.

MapLibre workshop at State of the Map US 2025MapLibre presentation at FOSS4G Europe 2025

🗓️ Monthly meetings

We continue our regular community calls on the second Wednesday of each month, with an additional session on the last Wednesday to better accommodate Asia/Oceania time zones.

Upcoming Calls

  • MapLibre Navigation: Aug 13, 2025 – 4:00–5:00 PM UTC
  • MapLibre Native: Aug 13, 2025 – 5:00–6:00 PM UTC
  • MapLibre GL JS: Aug 13, 2025 – 6:00–7:00 PM UTC

🌏 MapLibre Eastern Call

Held on the last Wednesday of the month at an Asia/Oceania-friendly hour:

  • Aug 27, 2025 – 9:00–10:00 AM UTC

🔗 View meeting times in your local timezone.

All calls are open to everyone. Zoom links are shared in the MapLibre Slack. Not yet a member? Request an invite via the OpenStreetMap US Slack. We’d love to see you there!