Skip to content

fix(map): don't crash when remounting with a broken cached map instance#984

Merged
usefulthink merged 1 commit into
visgl:mainfrom
SAY-5:fix/reuse-maps-broken-cache
May 28, 2026
Merged

fix(map): don't crash when remounting with a broken cached map instance#984
usefulthink merged 1 commit into
visgl:mainfrom
SAY-5:fix/reuse-maps-broken-cache

Conversation

@SAY-5
Copy link
Copy Markdown
Contributor

@SAY-5 SAY-5 commented May 12, 2026

Fixes #982

When the initial map creation fails (for example because the Maps JavaScript API didn't load correctly), the cached map instance ends up in a broken state where getDiv() no longer returns a usable DOM node. On the next mount with reuseMaps, the reuse path called container.appendChild(map.getDiv()) with that value, throwing Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

This validates the cached map's div (instanceof Node) before reusing the instance. If it is not a usable node, the broken instance is discarded and a fresh map is created instead.

Added a regression test under map instance caching that fails on main and passes with this change. Full test suite, lint, prettier and tsc pass.

When the initial map creation fails (e.g. the Maps JavaScript API didn't
load), the cached map instance can return a non-Node from getDiv(). The
reuse path then called container.appendChild() with that value and threw.
Validate the cached div before reusing the instance, and fall back to
creating a fresh map otherwise.

Fixes visgl#982
@usefulthink
Copy link
Copy Markdown
Collaborator

"Don't crash" is my favourite kind of external contributions :D Thanks a lot for that. I'll review it and we can probably push it to the 1.9.0 release.

@mrMetalWood
Copy link
Copy Markdown
Collaborator

@SAY-5 Thanks for this! I reproduced the issue and validated the fix. Looking good and viable :)

@usefulthink usefulthink merged commit 31a5261 into visgl:main May 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

reuseMaps can crash on remount after Google Maps failed to load

3 participants