Overview#

Warning

Project Neo is currently in Technical Preview. Features described in this section may change before general availability.

The Project Neo extension system lets development teams build custom dashboards that load into the Project Neo host application at runtime. An extension is a separate React and TypeScript project with its own repository, dependencies, and build pipeline. It installs @squirro/nextgen-core as a library, which provides build configuration, shared types, and UI components. At runtime, the extension connects to the host application through Module Federation, a webpack feature that allows independently built applications to share code at runtime.

Why This Architecture#

Benefit

Details

Independent development and deployment

Extensions are separate projects with their own repository, CI pipeline, and release cycle. You can build, test, and deploy an extension without coordinating with the Squirro core team or waiting for a host release.

No host changes needed

Adding, renaming, or removing dashboards is an extension-side operation. The host discovers extensions at runtime. No code changes or redeployment of the core application are required.

Per-project customization

Different Squirro projects can load different extensions. A legal team can have a legislation dashboard while a research team has an analytics dashboard, each configured via the frontend.ui-bundle project setting.

Isolation

Extension bugs cannot crash the core application. Extensions cannot inject global CSS, access host internals, or modify core application logic. The host remains stable regardless of what extensions do.

Native feel

Unlike iframe-based approaches, extensions share the same React instance, router, theme, and navigation as the host. Dashboards look and behave like built-in features.

Lazy loading

Dashboard code is only fetched when the user navigates to it. Extensions add no overhead to the initial application load.

Familiar tooling

Extensions use standard React and TypeScript with npm tooling. There is no proprietary framework to learn.

What You Can Build#

  • Custom dashboards

    Full-page React components with access to Squirro data, shared UI components, and the active project context. Each dashboard appears automatically in the Project Neo sidebar navigation.

  • Translation overrides

    Customize any text in the core Project Neo interface per language, without modifying host code. That means extensions can tailor the entire application experience, not just the dashboards they add. For more information, see the Translations page.

What You Cannot Do#

Extensions have defined boundaries to keep the core product stable:

  • You cannot override or modify built-in widgets.

  • You cannot inject global CSS that affects the host interface.

  • You cannot hook into core widget internals.

  • You cannot modify core application logic.

If a use case requires changes to core features, that is a product request.

How It Works#

When a user opens a Squirro project, the Project Neo host checks whether the project has an extension configured via the frontend.ui-bundle project setting. If it does, the host fetches the extension manifest: a TypeScript file that declares the extension dashboards, including their title, icon, URL route, and the React component to render. The host then:

  1. Adds navigation entries to the sidebar for each dashboard.

  2. Creates dynamic routes so each dashboard is accessible at its URL.

  3. Lazy-loads the dashboard component on demand when the user navigates to it.

No host code changes are required. Adding, renaming, or removing dashboards is handled entirely within the extension project.

Development Workflow#

The following commands cover the full extension development lifecycle:

nextgen create project       # Scaffold a complete extension project
nextgen create dashboard     # Add a dashboard to the project
nextgen dev                  # Start local development servers
nextgen build                # Build the extension for production deployment

For a step-by-step walkthrough, see the Quick Start page.

Package Overview#

Package

Description

@squirro/nextgen-cli

The nextgen CLI tool for project scaffolding, development server, and build.

@squirro/nextgen-core

Provides types, build configuration, and shared UI components.