perspective-dev/perspective · error

Custom element "perspective-viewer-datagrid" is already…

Error message

Custom element "perspective-viewer-datagrid" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).

What it means

Error "Custom element "perspective-viewer-datagrid" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page)." thrown in perspective-dev/perspective.

Solutions

  1. Import perspective-viewer-datagrid only once per page bundle
  2. Audit the bundler for duplicated chunks containing the datagrid package
  3. Align package versions so a single datagrid build is present
  4. Treat the warning as benign — the plugin is already available and registration is skipped
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at packages/viewer-datagrid/src/ts/index.ts:29 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/ed1ec789795b04e5. Report an issue: GitHub.

Appendix: source

Thrown at packages/viewer-datagrid/src/ts/index.ts:29

// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

import "regular-table";
import { HTMLPerspectiveViewerDatagridPluginElement } from "./custom_elements/datagrid.js";
import { HTMLPerspectiveViewerDatagridToolbarElement } from "./custom_elements/toolbar.js";

/******************************************************************************
 *
 * Main
 *
 */

interface PerspectiveViewerConstructor {
    registerPlugin(tagName: string): void;
}

async function _register_element(): Promise<void> {
    if (customElements.get("perspective-viewer-datagrid")) {
        console.warn(
            'Custom element "perspective-viewer-datagrid" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).',
        );
        return;
    }

    customElements.define(
        "perspective-viewer-datagrid-toolbar",
        HTMLPerspectiveViewerDatagridToolbarElement,
    );

    customElements.define(
        "perspective-viewer-datagrid",
        HTMLPerspectiveViewerDatagridPluginElement,
    );

    await customElements.whenDefined("perspective-viewer");
    const PerspectiveViewer = customElements.get(
        "perspective-viewer",

View on GitHub (pinned to 11c8238c0c)