npm / mapbox-gl
mapbox-gl
What changed in mapbox-gl 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.
5 breaking5 new APIs and options9 performance4 behavior and defaults18 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initmapbox-gl 341 changes
Breaking changes 5
Removed because right-to-left text is now supported out of the box.
Parent-tile symbols are no longer placed when using global placement.
The type is removed as right-to-left text is now supported out of the box.
Removed because right-to-left text is now supported out of the box.
The base size of icons is calculated at the tile zoom level with the largest text size, so icons can be smaller when text size depends on zoom.
New APIs and options 5
Controls can be offset from their corner using an
offsetobject withxandyvalues.Right-to-left text, such as Arabic and Hebrew, is supported out of the box; a small WebAssembly module loads the first time it appears on the map.
CustomLayerInterface render and prerender receive a CustomLayerRenderParameters object as an eighth argument, exposing projectionMatrix, viewMatrix, globeClippingPlane, and globeCenterInScreenPixels.
Debug visualization is supported when using global placement.
Custom layers gain support for emissive MRT.
Performance 9
Map load performance is improved for 3D Lanes.
Line rendering performance improves by using a uniform instead of a shader permutation.
Memory use and map load time are improved, especially for 3D layers.
Preloading the Meshopt decoder earlier improves 3D styles load time.
Requesting the icon set earlier and parsing icons on demand improves map load time.
More aggressive chunk preloading slightly improves map load time.
Style parsing is faster.
GeoJSON memory footprint is significantly improved, reducing memory use for developers working with GeoJSON.
Landmark model memory usage is reduced.
Behavior and default changes 4
Global placement debug information is extended.
Global placement supports transitions between globe and Mercator projections.
Symbol fading is supported when using global placement.
The experimental flag is removed from raster-allow-draping.
Fixes and other changes 18
Fixes collision boxes not matching rotated symbols that use appearances with a layout
icon-rotateortext-rotate.Fixes a rendering issue that could occur when drawing thousands of data-driven lines and symbols.
Fixes transparent building and fill-extrusion layers blending the same pixel twice where they cover the same buildings.
Fixes incorrect rendering of geometries past longitude -+360 or latitude +-85.
In projections other than Mercator or globe, map-aligned icon rotation is now measured from true north.
Fixes a severe performance regression when updating data-driven line layers.
Fixes symbol fading not finishing when global placement is used.
In projections other than Mercator or globe, map-aligned text rotation is now measured from true north.
extra_bounds is respected on all TileJSON source types.
Placing symbols with no text no longer throws an error.
Fixes transitions for light, fog, snow, and rain.
Fixes a regression where map.remove() could retain the map instance in memory.
Setting padding as a side effect in a preloadOnly animation is fixed.
Fixes chunk loading when raster-array is unused.
Headers and credentials are no longer dropped from PMTiles requests.
Headers and credentials are no longer dropped when loading GL model (GLTF) resources.
Features render at the correct position when a layer uses a within filter with a projection other than Mercator or globe.
Fixes removeSource throwing under globe projection.