In late-2025, we received a grant through NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet program to integrate vector tiles in uMap. This is a huge amount of work considering that a few non-trivial steps are required prior to be able to achieve that goal!
What “vector tiles support” means for uMap? At least, being able to render tiles on the Mapbox vector-tiles format (the de-facto standard), but, and that’s the interesting and hardest part, ideally to be able to customize those tiles: what if I can add a vector tiles style, but remove the buildings or change the road colors, to better fit the purpose of my map?
uMap used to be 100% coupled with Leaflet. In fact, it was initially designed as a storage for Leaflet — the first version of uMap was just a wrapper around Laflet.Storage plugin and django-leaflet-storage backend (well, the really first version was called django-chickpea, but that’s archaeology…).
So, our first need is to decouple from Leaflet, and clearly separate the rendering and the data. This is a work we have already started in the last two years but it was still unfinished (is a software ever finished is left as an exercise for the reader). Then, we want to take advantage of ES6 modules to only load the required JS files and speed up maps’ rendering (especially for read only access!). Finally, we currently rely on a lot of Leaflet plugins which are mostly either outdated and/or unmaintained that we need to port or adapt to the new chosen ecosystem.
Given that context, we are ahead of a long run BUT we already started at a good pace! Follow current PRs if you are curious. Now you may wonder why we choose OpenLayers as a target goal for vector tiles rendering over existing alternatives. Here are some of the reasons:


