perspective-dev/perspective · error

viewer-charts plugins already registered

Error message

viewer-charts plugins already registered (${already_registered.length}); skipping duplicate registration (Perspective was loaded more than once on this page).

What it means

Error "viewer-charts plugins already registered (${already_registered.length}); skipping duplicate registration (Perspective was loaded more than once on this page)." thrown in perspective-dev/perspective.

Solutions

  1. Deduplicate imports of the viewer-charts package so it is evaluated only once per page
  2. Check bundler config for the package being emitted into multiple chunks
  3. If multiple copies are intentional, treat the warning as informational — duplicate registration is safely skipped
  4. Ensure all perspective-viewer and plugin builds come from a single package version
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at packages/viewer-charts/src/ts/index.ts:55 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of perspective-dev/perspective@11c8238c0c (2026-09-09). Data as JSON: /api/errors/34a9aa8789179b1f. Report an issue: GitHub.

Appendix: source

Thrown at packages/viewer-charts/src/ts/index.ts:55

            }

            customElements.define(
                tagName,
                class extends HTMLPerspectiveViewerWebGLPluginElement {
                    _chartType = chart;
                    static _chartType = chart;
                },
            );

            customElements.whenDefined("perspective-viewer").then(async () => {
                const Viewer = customElements.get("perspective-viewer") as any;
                await Viewer.registerPlugin(tagName);
            });
        }
    });

    if (already_registered.length > 0) {
        console.warn(
            `viewer-charts plugins already registered (${already_registered.length}); skipping duplicate registration (Perspective was loaded more than once on this page).`,
        );
    }
}

register();

View on GitHub (pinned to 11c8238c0c)