3D Globe — troubleshooting
This page covers issues unique to the 3D Globe (gw.js). Most widget failures are environment-related — see common troubleshooting first.
The Globe is the most dependency-heavy widget. It loads three external resources before it can render:
- D3.js from
https://d3js.org/d3.v6.min.js - TopoJSON from
https://unpkg.com/topojson@3 - World atlas (27 KB JSON) from
https://statable.com/maps/world-110m.json
If any of these is blocked by an extension, CSP, or corporate firewall, the Globe fails. Walk through common troubleshooting first — most "Globe doesn't load" reports are blocked dependencies, not a Globe-specific bug.
"Failed to load script: https://d3js.org/..."
Widget initialization error: Error: Failed to load script: https://d3js.org/d3.v6.min.js
Widget initialization error: Error: Failed to load script: https://unpkg.com/topojson@3
The Globe couldn't fetch one of the libraries. Almost always a network-policy issue:
- A privacy extension blocked the public CDN.
- A corporate firewall doesn't allowlist
d3js.org/unpkg.com. - A CSP
script-srcdirective doesn't include those hosts — see the shared CSP table.
If your host page already loads D3 itself, make sure it's D3 v6 or newer — see Host page has a different version of D3 or TopoJSON.
World atlas (world-110m.json) fetch fails
…with Network tab showing GET https://statable.com/maps/world-110m.json as the failing request.
D3 and TopoJSON loaded successfully but the JSON fetch was blocked. Causes:
- CSP
connect-srcdoesn't includehttps://statable.com. - A privacy extension blocks subrequests to
statable.comeven when the script bundle itself loaded.
"API response is not valid or does not contain a 'points' array"
This error fires only when data-display-mode="cities" is set. The default countries mode doesn't validate a points array and never throws this error.
Possible reasons (in order of likelihood):
- The site hasn't received enough traffic for the API to return city-level data yet. New sites typically need a few hundred page-views before city aggregation activates. Switch to the default
countriesmode while you accumulate traffic. - A custom
data-apiproxy returns the wrong response shape.
If you're not setting data-display-mode at all, this error is impossible — the Globe is in countries mode by default.
Globe renders but stays in one position
If the Globe appears but never rotates and dragging does nothing, check:
- Is
data-rotation-speed="off"on the snippet? If so, auto-rotation is disabled by design — drag still works. - Is the container being constantly re-mounted by a parent SPA component? The widget cleans up its rotation timer on cleanup; if the cleanup fires immediately after init, rotation stops.
There's no console error for either case.
Globe is much smaller than its container
The default size is 300 × 300 px. Without an explicit data-width / data-height, the Globe fits a 300 × 300 viewBox into the available space. Inside a much larger flex/grid cell you'll see a small globe with empty padding.
To make the Globe fill the container, set data-width and data-height to match the container's dimensions in the embed snippet copied from the dashboard.
Ready to take control of your web analytics? Try Statable free for 30 days — no credit card required, full feature access, GDPR-compliant by default. Start your free trial or view a live demo.