MapLibre Newsletter May 2025

Jun 2, 2025

Categories: Newsletter
Authors: Bart Louwers Frank Elsinga Harel Mazor Ramya Ragupathy Marti Pericay

Welcome to the May edition of the MapLibre newsletter!

This month’s updates range from seamless Cloud Optimized GeoTIFF support in GL JS to fresh releases for Martin Tile Server and native SDKs, and the addition of a new team member.

A special thanks to Mierune for renewing their sponsorship for 2025! Now in its fourth consecutive year, their support has played a vital role in sustaining MapLibre’s growth and development.

MapLibre logoMierune logo

Celebrating four amazing years of support from Mierune (2022–2025) 🙌

We’ve also published our Q1 2025 Financial Report, continuing our commitment to transparency and open governance. Read on to catch up on updates from last month and a glimpse of what’s ahead.

📱 MapLibre Native

Plugin layers will allow users to register custom layers with custom style spec extensions. The design proposal was merged this month, with the implementation PR nearing the finish line. Both are spearheaded by Malcolmn Toon working for HudHud who released their navigation app this month.

The first version will have some limitations. Since iOS is the main focus of HudHud right now, it is only available for iOS from the outset. In addition, the custom layers do not have access to sources i.e. the built-in machinery for loading data. You also need to interact with the low-level graphics API (e.g. Metal) directly, and cannot use Drawables which internal layers uses for (platform aspecific) rendering. Lastly, plugin layers cannot participate in things like label placement.

Refinements and further functionality can be added incrementally based on the needs of the community. Extendability is something that was often discussed the last few years, and it is great to see a functional and pragmatic implementation becoming reality. Malcolm shared a GLTF model loading plugin as an example of what a custom plugin layer could do.

GLTF plugin demo

GLTF model plugin, rendering the Arc de Triomphe in 3D. Satellite layer courtesy of MapTiler.

Action Journal for Debugging: Thanks to Adrian Cojocaru, a new action journal was merged this month. This is a persistent log of actions the library took, sort of like a black box in a plane, which should help with investigating crashes that are hard to reproduce. Check out the documentation for iOS or Android for more information.

Dynamic Texture Atlas for Glyphs: The library now uses a dynamic texture atlas for storing glyphs, thanks to Alex Cristici. This change has the potential to reduce memory usage, if you have some interesting real-world numbers to share, we would love to know.

Goodbye legacy renderer: Two years ago, the legacy OpenGL ES rendering architecture, was replaced with a modular one allowing multiple rendering backends. The code parts of the legacy renderer were stubbed out with #ifdefs for a while, meaning it was still possible to make a build that used the legacy renderer. However, this old unused code was finally removed in April, with some more cleanup this month.

Releases this month:

🌐 MapLibre Web

Hillshade Rendering: MapLibre GL JS v5.5.0 was released this month, featuring support for multiple hillshade rendering methods. This will be a great addition for enhanced terrain visualisation. The release also includes several important bug fixes and performance refinements.

Hillshade rendering methods in MapLibre GL JS

New Team Member: We are also thrilled about Marc Wilson joining our team as our new Graphics Engineer 🎉! Marc brings deep expertise in rendering and graphics, and we’re excited to see the impact he’ll have on MapLibre GL JS and beyond.

Cloud Optimized GeoTIFF(COG) support: A new COG protocol extension by @geomatico improves how raster data is loaded in MapLibre GL JS, with no server-side preprocessing required.

This maplibre-cog-protocol library allows:

  • Visualization of COGs directly in MapLibre GL JS, efficiently loading only the necessary tiles from large raster datasets.
  • It supports dynamic adjustments, such as color manipulation and band mixing directly on the browser.

Try it out:

🧱 Martin Tile Server

Martin v0.17.0 was released in May, bringing several quality-of-life improvements, along with three new features:

  • S3 and S3-Compatible Storage Support for PMTiles: PMTiles can now be served directly from S3 or any S3-compatible blob store, making cloud deployments simpler and more flexible.
  • Improved Caching with ETags: Martin now includes ETag headers and supports the If-None-Match request header, enabling more efficient CDN-style caching. This potentially reduces bandwidth usage and improves performance, especially in low-connectivity environments.
  • Configurable CORS Settings: Developers can now define CORS headers directly in Martin, eliminating the need for external workarounds, thereby improving security and flexibility.

🧩 New Hosted Project

MapLibre for Compose Multiplatform has officially been onboarded as a hosted project, marking another step forward in expanding the MapLibre ecosystem.

MapLibre Compose is a Compose Multiplatform wrapper around the MapLibre SDKs for rendering interactive maps. You can use it to add maps to your Compose UIs across Android, iOS, Desktop, and Web.

👥 Meet Us at State of the Map US!

The MapLibre team will be at State of the Map US this month in Boston. If you’re attending, we’d love to connect. Come say hi, and let’s talk maps!

🗓️ Dates: June 19-21, 2025
📍 Location: Boston, MA

🗓️ 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: June 11, 2025 – 4:00–5:00 PM UTC
  • MapLibre Native: June 11, 2025 – 5:00–6:00 PM UTC
  • MapLibre GL JS: June 11, 2025 – 6:00–7:00 PM UTC

🌏 MapLibre Eastern Call

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

  • June 25, 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!