Description
After upgrading from @deck.gl/@9.2.11 to @deck.gl/@9.3.0, GoogleMapsOverlay with interleaved: true throws an uncaught TypeError on every render cycle. This is the same error that was reported and fixed in #9426 (v9.1.0 → fixed in v9.1.3), now reintroduced in v9.3.0.
The error breaks the deck.gl render pipeline, causing layers to stop updating. In our case, a BitmapLayer used for weather radar animation gets stuck on the first rendered frame — scrubbing the timeline no longer changes the displayed image. A PolygonLayer on a different page is also affected.
Setting interleaved: false eliminates the error entirely, but we need interleaved mode to render deck.gl layers beneath Google Maps labels.
This is not layer-specific - we reproduce it with BitmapLayer, PathLayer, and PolygonLayer.
Suspected cause
The v9.3.0 release includes a significant refactoring of the Google Maps overlay internals (PR #9992 — "Robust DOM positioning when interleaved: false"), which restructured the vector map overlay setup into a dual positioning overlay + WebGL overlay and renamed _onDrawVectorInterleaved to _onDrawVector. This refactoring likely reintroduced the framebuffer issue where framebuffer.colorAttachments is undefined when beginRenderPass is called.
### Actual Behavior
Uncaught TypeError on every render cycle
Layers render once but stop responding to setProps updates
Animation/timeline-driven layer updates are completely broken
Workaround
Downgrade to @deck.gl/@9.2.11 (with @luma.gl/@9.2.6). The error does not occur on v9.2.11.
Flavors
Expected Behavior
No error in the console. Layers should render and update normally in interleaved mode, as they do in v9.2.11.
Steps to Reproduce
- Install @deck.gl/core@9.3.0, @deck.gl/google-maps@9.3.0, @deck.gl/layers@9.3.0
- Create a GoogleMapsOverlay with interleaved: true
- Add any layer (e.g. BitmapLayer, PolygonLayer)
- Call overlay.setMap(map) on a Google Maps vector map (requires a mapId)
- Observe the error in the console
- Try calling overlay.setProps({ layers: [...] }) to update layers — updates are ignored
Environment
Broken: @deck.gl/@9.3.0 + @luma.gl/@9.3.2
Working: @deck.gl/@9.2.11 + @luma.gl/@9.2.6
Google Maps wrapper: @vis.gl/react-google-maps@1.7.1 (also tested with 1.8.3)
Browser: Chrome (latest), also reproducible in Firefox
OS: macOS
Framework: Next.js with React 19
Logs
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
at new WEBGLRenderPass (webgl-render-pass.ts:45)
at WebGLDevice.beginRenderPass (webgl-device.ts:308)
at DrawLayersPass.render (layers-pass.ts:86)
at DeckRenderer.renderLayers (deck-renderer.ts:90)
at Deck._drawLayers (deck.ts:1060)
at GoogleMapsOverlay._onDrawVector (google-maps-overlay.ts:~289)
at withGLParameters (with-parameters.ts:37)
at WebGLDevice.withParametersWebGL (webgl-device.ts:385)
at GoogleMapsOverlay._onDrawVector (google-maps-overlay.ts:~288)
Description
After upgrading from @deck.gl/@9.2.11 to @deck.gl/@9.3.0, GoogleMapsOverlay with interleaved: true throws an uncaught TypeError on every render cycle. This is the same error that was reported and fixed in #9426 (v9.1.0 → fixed in v9.1.3), now reintroduced in v9.3.0.
The error breaks the deck.gl render pipeline, causing layers to stop updating. In our case, a BitmapLayer used for weather radar animation gets stuck on the first rendered frame — scrubbing the timeline no longer changes the displayed image. A PolygonLayer on a different page is also affected.
Setting interleaved: false eliminates the error entirely, but we need interleaved mode to render deck.gl layers beneath Google Maps labels.
This is not layer-specific - we reproduce it with BitmapLayer, PathLayer, and PolygonLayer.
Suspected cause
The v9.3.0 release includes a significant refactoring of the Google Maps overlay internals (PR #9992 — "Robust DOM positioning when interleaved: false"), which restructured the vector map overlay setup into a dual positioning overlay + WebGL overlay and renamed _onDrawVectorInterleaved to _onDrawVector. This refactoring likely reintroduced the framebuffer issue where framebuffer.colorAttachments is undefined when beginRenderPass is called.
### Actual Behavior
Uncaught TypeError on every render cycle
Layers render once but stop responding to setProps updates
Animation/timeline-driven layer updates are completely broken
Workaround
Downgrade to @deck.gl/@9.2.11 (with @luma.gl/@9.2.6). The error does not occur on v9.2.11.
Flavors
Expected Behavior
No error in the console. Layers should render and update normally in interleaved mode, as they do in v9.2.11.
Steps to Reproduce
Environment
Broken: @deck.gl/@9.3.0 + @luma.gl/@9.3.2
Working: @deck.gl/@9.2.11 + @luma.gl/@9.2.6
Google Maps wrapper: @vis.gl/react-google-maps@1.7.1 (also tested with 1.8.3)
Browser: Chrome (latest), also reproducible in Firefox
OS: macOS
Framework: Next.js with React 19
Logs
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
at new WEBGLRenderPass (webgl-render-pass.ts:45)
at WebGLDevice.beginRenderPass (webgl-device.ts:308)
at DrawLayersPass.render (layers-pass.ts:86)
at DeckRenderer.renderLayers (deck-renderer.ts:90)
at Deck._drawLayers (deck.ts:1060)
at GoogleMapsOverlay._onDrawVector (google-maps-overlay.ts:~289)
at withGLParameters (with-parameters.ts:37)
at WebGLDevice.withParametersWebGL (webgl-device.ts:385)
at GoogleMapsOverlay._onDrawVector (google-maps-overlay.ts:~288)