Skip to main content

Architecture

topgrid is a monorepo composed of 31 packagesFree (MIT) 7 + Commercial (EULA) 24. It is divided into a React core + Vue adapter (multi-framework), Pro features, and a chart family.

Package List

Free (MIT) — 7

PackageDescription
@topgrid/grid-coreTanStack Table abstraction wrapper + useGridState·<Grid>·virtualization·pagination·sort/filter wiring
@topgrid/grid-core-headlessFramework-agnostic headless core (based on @tanstack/table-core) — shared by React/Vue
@topgrid/grid-renderers11 cell renderers (text·number·date·badge·link·button·check·icon·tag·avatar·progress) + registry
@topgrid/grid-featuresFilter UI (text/number/date/set·global·floating)·multi-sort
@topgrid/grid-sizingColumn sizing — auto-size·size-to-fit·star (proportional) widths
@topgrid/grid-exportExcel/CSV/PDF export·clipboard·print (xlsx·jspdf peers)
@topgrid/grid-vueVue 3 adapter — drives the headless core via useVueTable

Commercial (EULA) — 24

Facade · License (3)

PackageDescription
@topgrid/gridMeta package — facade re-exporting every package
@topgrid/grid-licenseRuntime Pro license validation + Watermark
@topgrid/grid-license-coreLicense validation core (framework-agnostic)

Pro Features (17)

PackageDescription
@topgrid/grid-pro-aggAggregation/grouping — group sum·average·count, group footer·panel
@topgrid/grid-pro-pivotPivoting (React) — multi-axis pivot table·subtotals·transpose·pivot panel (DnD)
@topgrid/grid-pro-pivot-corePivot engine core (framework-agnostic) — computePivot·pure transforms. Shared by React/Vue
@topgrid/grid-pro-pivot-vuePivoting (Vue 3) — useVuePivot·VuePivotGrid·VuePivotPanel
@topgrid/grid-pro-serversideServer-side row model (SSRM, React) — block lazy-load·infinite scroll·viewport model·server-side tree
@topgrid/grid-pro-serverside-coreSSRM core (framework-agnostic) — block cache·controllers·viewport·tree. Shared by React/Vue
@topgrid/grid-pro-serverside-vueServer-side (Vue 3) — useVueServerSideData·useVueViewportRowModel·useVueServerSideTree
@topgrid/grid-pro-masterMaster-detail·tree·context menu
@topgrid/grid-pro-mergingCell merging — rowSpan/colSpan
@topgrid/grid-pro-headerMulti-row header·column groups
@topgrid/grid-pro-datamapData mapping — code→label (FK display), async maps
@topgrid/grid-pro-trackingChange tracking — dirty row/cell state
@topgrid/grid-pro-rangeRange selection — drag select·fill handle·clipboard copy/paste
@topgrid/grid-pro-edit-plusAdvanced editing — validation rules·undo/redo·find & replace·cell comments
@topgrid/grid-pro-filterMulti (AND/OR)·advanced (cross-column expression)·cross-filter
@topgrid/grid-pro-panelSide bar·tool panel (column visibility/order)·status bar·filters panel
@topgrid/grid-pro-sheetSpreadsheet engine (PoC) — A1 formulas·dependency-graph recalc·cell format/style/merge

Charts (4) — for details see Charts

PackageDescription
@topgrid/grid-chart-coreChart engine core (framework-agnostic) — 17 chart types
@topgrid/grid-pro-chartIntegrated charts·cell sparklines (zero-dependency SVG engine)
@topgrid/grid-pro-chart-enterpriseEnterprise charts (React) — 17 types·multi-axis·BYO·SSR
@topgrid/grid-pro-chart-enterprise-vueEnterprise charts (Vue) — same engine·SSR helpers

Dependency Rules

graph TD
subgraph Open["Free (MIT) — 7"]
grid-core["@topgrid/grid-core"]
grid-headless["@topgrid/grid-core-headless"]
grid-features["@topgrid/grid-features"]
grid-export["@topgrid/grid-export"]
grid-renderers["@topgrid/grid-renderers"]
grid-sizing["@topgrid/grid-sizing"]
grid-vue["@topgrid/grid-vue"]
end

subgraph Commercial["Commercial (EULA) — 24"]
grid["@topgrid/grid (meta facade)"]
grid-license["@topgrid/grid-license"]
proAll["grid-pro-* (17 features, pivot·serverside incl. -core/-vue)"]
charts["4 charts (core·chart·enterprise·enterprise-vue)"]
end

grid --> grid-core
grid --> grid-features
grid --> grid-renderers
grid --> grid-export
grid -.->|re-export| proAll
grid -.->|re-export| charts
grid-core --> react["react ^18 \| ^19"]
grid-core --> tanstack["@tanstack/react-table ^8"]
grid-core --> virtual["@tanstack/react-virtual ^3"]
grid-headless --> tablecore["@tanstack/table-core"]
grid-vue --> grid-headless
proAll -->|every Pro| grid-license
proAll -.->|most| grid-core
  • Every Pro package → @topgrid/grid-license (runtime license gate).
  • Most Pro → @topgrid/grid-core (built on top of <Grid>).
  • Some Pro packages compose other Pro/Open packages: grid-pro-pivot·grid-pro-panelgrid-pro-agg · grid-pro-edit-plusgrid-pro-tracking · grid-pro-filtergrid-features · grid-pro-sheetgrid-pro-range · grid-pro-mastergrid-export.
  • Multi-framework Pro: the pure engines of grid-pro-pivot·grid-pro-serverside are extracted into grid-pro-{pivot,serverside}-core (framework-agnostic) so React (grid-pro-*) and Vue (grid-pro-*-vue) share the same core (mirroring the chart family's grid-chart-core). Vue Pro packages gate via grid-license-core, so no React dependency leaks in.
  • Internal dependencies use workspace:* → exact-version pins on publish (lockstep). The @topgrid/grid facade re-exports every package.

Pro Package License Activation

When using Pro packages, a runtime license check runs via @topgrid/grid-license. Set your license key once at the app entry point.

import { setLicenseKey } from '@topgrid/grid-license';

setLicenseKey('YOUR-LICENSE-KEY');