npm / ol
ol
What changed in ol 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
6 breaking4 deprecations33 new APIs and options8 performance20 behavior and defaults48 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initol 10119 changes
Breaking changes 6
Geometries with empty coordinate arrays, except GeometryCollection, are now parsed as null geometries to match the GeoJSON spec recommendation.
Color interpolation now uses sRGB on both Canvas and WebGL, so Canvas gradients may look different; interpolated channels retain fractional values.
WMTS tile grid extent now comes only from an advertised BoundingBox; getExtent() returns null when none is advertised, while tile requests use matrix sizes and limits.
WMTS capabilities-derived wrapX is now based on whether the first tile matrix spans the projection extent; override it to false if a single world copy is desired.
TextPath relies on Intl.Segmenter; very old browsers may need a polyfill.
The separate group option for the GeoZarr source was removed.
Deprecations 4
The BingMaps source is deprecated; use ol/source/ImageTile with the Azure Maps tile API instead.
BingMaps for Enterprise is being retired on June 30th, 2028; the release recommends ImageTile with the Azure Maps tile API.
The ol/format/Polyline function is deprecated without replacement.
ol/array stableSort is deprecated; use the stable built-in Array.sort instead.
New APIs and options 33
Adds a fetchSessionToken option to Google.
The GeoZarr source can visualize generic n-D datacubes.
The method accepts a wrapX option.
The method accepts a wrapX option.
Use interpolate-hcl to retain perceptual color gradients; it is currently supported only by the Canvas renderer.
Raster sources now have basic data tile support.
GeoZarr sources accept storeOptions for headers and credentials.
The new rotateContent option supports crisp rendering on rotated views, including rotated text and point symbols.
The WKT format accepts projection options.
The GeoZarr source supports selecting non-spatial dimensions, such as for time series.
GeoZarr adds support for proj:projjson and proj:wkt2.
Sentinelhub supports setting the response format.
WebGL vector renderers now support text.
GeoTIFF sources now support a custom fetch client.
The ImageLayer base now includes the background option.
GeoTIFF source options now support attributions.
An experimental source supports raster data conforming to the evolving GeoZarr specification.
Modify options now accept a filter function.
A new source supports OGC API Maps.
The new stroke offset option enables line offsets in Canvas rendering.
Canvas map targets support pixelRatio, and the map now has pixelRatio getter and setter methods.
Property definitions now support generics, enabling typed property definitions.
Support for ReferrerPolicy when fetching source data and icons lets requests include a referer header where required.
Bing Maps and Google sources gain extra URL options.
The Extent interaction gains createCondition and drag options.
The Extent interaction gains createCondition and drag options.
Icon style gains a setSrc method for changing its source.
Draw gains a setter and getter for freehand.
ol can be used inside a worker, with full Map support and an (Offscreen)Canvas as the map target.
ZoomToExtent gains FitOptions.
Select gains methods for adding and removing features.
WebGL styles gain the stroke-pattern-start-offset style property.
URL templates using {z}/{x}/{y} are supported.
Performance 8
Tiles no longer needed by the current view are dropped from the queue.
The WebGL text overlay worker is loaded on demand.
Tile rendering draws only lower-zoom remainders instead of clipping and redrawing full tiles.
Opened arrays are cached across tile loads, band arrays open in parallel, tile sizes align with inner shards, and concurrent byte-range requests are coalesced.
Loading striped GeoTIFFs and reprojected WebGL tiles is more efficient.
Filtering out features in WebGL rendering is more efficient.
WebGL instanced rendering improves performance and memory usage.
WebGL layers use a single buffer to improve memory usage.
Behavior and default changes 20
Canvas styles now evaluate the array operator.
WFS 2.0.0 transaction filters now use fes:ResourceId.
APIs that required a Promise now accept any thenable.
When matrixLimits is passed, the returned tile grid restricts requests to the advertised row and column bounds for each zoom level.
The GeoJSON reader uses the configured featureClass to instantiate a Feature.
Images in multi-page GeoTIFFs are sorted automatically.
Long lines are clipped at the render extent boundary for text rendering.
VectorSource removes loaded extents by overlap rather than exact match.
Style variable values are used to determine the type of an expression.
GeoTIFF sources provide min, max, and nodata values per band.
GeoTIFF sources can load unknown projections.
GeoZarr sources can load bands from multiple Zarr groups.
Hit detection now has a default stroke.
The flat-style in operator now accepts literal number arrays as its haystack.
Shared vertices are treated as equal.
Resolution is computed from spatial:bbox and spatial:shape.
Vector tile layers are clipped at the layer extent.
Generic projection code lookup is based on spatialreference.org.
Tracing is supported with the Modify interaction.
VectorTile layers now support reprojection.
Fixes and other changes 48
Canvas styles now evaluate the color operator.
The function now respects the stride parameter.
Fixes target cleanup for MouseWheelZoom.
Fixes rendering of RTL text along lines.
Text is aligned to the visible part of a line only when textAlign is undefined.
Nested WFS 2.0 FeatureCollections are now read correctly.
ImageArcGISRest and TileArcGISRest now support ArcREST case sensitivity.
Decluttering z-index ordering has been fixed.
WebGLTile layers now use the correct GeoTIFF alpha band.
setParams resets the loader for image sources.
Text is split by graphemes so ligatures are no longer cut apart.
LinearRing extent intersection handling has been fixed.
Tracing in the Modify interaction has been fixed.
Text placed along a line now honors offsetX.
Transparency outside source coverage is handled on reprojected WebGLTile layers.
Transforms are no longer skipped on rotated maps.
hasFeature uses an identity check when a feature has an id.
Incorrect VectorTile source resolution calculation has been fixed.
WebGL tile rendering now handles stale tiles.
Cloning a Feature with a custom geometry name is fixed.
GeoZarr nodata handling was improved.
Blur and radius expressions now work after inlining blurSlope computation.
A stroked polygon renders correctly after a non-stroked polygon when overlaps is false.
Snap intersections with mixed GeometryCollection geometries are fixed.
Text on circle features now works with decluttering.
Trackpad pinch-to-zoom deltas are inflated, and zoom feel is consistent with and without constrainResolution.
Failure handling for promise-based vector loaders was fixed.
Hit detection now works for features beyond tile boundaries.
Rendering precision was improved to eliminate artifacts when zoomed in.
Artifacts when zooming far into a WebGLTile layer were fixed.
Geometry updates preserve per-geometry Z and M values.
Dynamic icon color handling for Canvas was fixed.
The bandCount property now works for band expressions.
The Heatmap class now includes its missing event types.
Hit detection at polygon edges was fixed.
setParams() now updates the image request parameters.
The link interaction now works with views that are not fully defined.
The first and last vertices of a polygon are synchronized during a modify drag.
Pattern fill rotation was fixed.
Blank input tiles are avoided when reprojecting.
Feature collection events now fire in the correct order.
Vector layer wrapping behavior was fixed.
The tile cache for raster reprojection source tiles is restored.
Glitched rendering in ReprojDataTile is fixed.
Snap receives fixes, including avoiding duplicate snap events registered on the same feature.
Duplicate rendering is prevented for vector tiles using renderMode: 'vector'.
Boolean attributes in WebGL expressions are now handled properly.
The bounding box from the layer is used in WMTS capabilities.