#17537·openlayers

Native layer property to disable interim (blurry) fallback tiles during rendering

Author: starepiernikoweCreated Jun 23, 2026Updated Jul 15, 2026
Labelsfeature request

Hello.

I am submitting a feature request to allow developers to natively disable the "interim tile" fallback mechanism (the blurry stretch of lower-resolution tiles) on a per-layer basis.

The Problem / Use Case We are building a highly customized map application utilizing local asynchronous IndexedDB caches and PMTiles for vector data. We also heavily utilize programmatic view animations (e.g., jumping the map view to specific coordinates during a user search).

Because our data is fetched asynchronously via tileLoadFunction, there is often a 30-50ms delay while the tile resolves. During rapid programmatic view changes, OpenLayers aggressively searches the tile grid (findAltTiles_) and stretches a lower-resolution parent tile over the canvas while it waits.

Because we manage our own background styling and transitions, this forced blurry stretch creates a harsh, disruptive visual artifact. We would rather the engine draw nothing (leaving the bare map background) for those 50ms, allowing our crisp vector tiles to "snap" in cleanly once the cache resolves.

Current Limitations Currently, there is no configuration option on VectorTileLayer (or any TileLayer) to say "Wait for the target tile, or render nothing." The engine strictly mandates the interim tile fallback.

Proposed Solution Introduce a simple boolean flag, such as disableInterimTiles (or useInterimTiles: false), to the Layer configuration properties.

We have currently patched our compiled ol.js file to test this exact behavior, and the results are perfectly clean with zero performance impact. Inside the renderFrame method of the Canvas Tile Renderer, we wrapped the parent-tile search loop in a check against the layer's properties:

// Inside renderFrame, where it searches for alt tiles:
if (this.findAltTiles_(c, n, u + 1, S)) {
    continue;
}
const r = c.getMinZoom();

// PROPOSED CHECK:
if (!l.get('disableInterimTiles')) { 
    for (let t = u - 1; t >= r; --t) {
        if (this.findAltTiles_(c, n, t, S)) {
            break;
        }
    }
}

Conclusion Would the team be open to adding a native flag to support this?

We know the render loop is highly optimized and protected territory. If you agree the concept is valid but prefer it implemented via a specific renderMode or alternative architecture, we are completely open to feedback and would be happy to submit a formal Pull Request based on your architectural guidance.

Thank you for your time! Paweł