Skip to content

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

Open
SAY-5 wants to merge 1 commit into
visgl:mainfrom
SAY-5:fix/reuse-maps-broken-cache
Open

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

Conversation

@SAY-5
Copy link
Copy Markdown

@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.

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

2 participants