Enterprise features from the element
@svgrid/grid-wc is MIT and complete on its own. The paid pack -
@svgrid/enterprise - is a separate install, and
most of it works from a React, Vue or Angular host with no Svelte in your build.
Where the line falls is a packaging consequence, not a policy: four of the enterprise entry points are plain JavaScript, and the main entry pulls Svelte components with it.
The api handle
Everything here needs the grid's imperative api. The element parks it on itself
once the grid has mounted, and fires apiready at the same moment:
const grid = document.querySelector('sv-grid')
grid.addEventListener('apiready', () => {
// grid.api is now the SvGridApi
})
In React the wrapper surfaces both:
import { useRef, useState } from 'react'
import { SvGrid, type SvGridHandle } from '@svgrid/grid-wc/react'
const ref = useRef<SvGridHandle>(null)
const [ready, setReady] = useState(false)
<SvGrid ref={ref} data={rows} columns={columns} onApiReady={() => setReady(true)} />
// ref.current.api - the same object `apiready` carries
Works with no Svelte in your build
These four entry points are plain JavaScript. Import them from any bundler, including Angular's, and pass them the element's api.
Excel, PDF, HTML, CSV and TSV export
import { exportGrid } from '@svgrid/enterprise/export'
await exportGrid(grid.api, { format: 'xlsx', filename: 'orders' })
format takes xlsx, pdf, html, csv or tsv. Pass download: false to
get the file back instead of saving it - useful for uploading or attaching it:
const { blob, filename, mime } = await exportGrid(grid.api, {
format: 'pdf',
download: false,
})
CSV and TSV are already free in @svgrid/grid; xlsx and pdf are the paid
formats.
Import
import { importData } from '@svgrid/enterprise/import'
const { rows, errors, total } = await importData(grid.api, {
file, // a File, Blob, or inline CSV / TSV / JSON text
format: 'auto', // sniffs xlsx vs text
})
import { printGrid } from '@svgrid/enterprise/print'
await printGrid(grid.api, { title: 'Q3 orders', orientation: 'landscape' })
Pivot model
createPivotModel is a pure function - rows in, model out - so it needs no api
at all, though the element's rows are the obvious input:
import { createPivotModel } from '@svgrid/enterprise/pivot'
const model = createPivotModel(grid.api.getData(), {
rows: ['region'],
cols: ['status'],
values: [{ field: 'total', agg: 'sum' }],
})
Feed model.rows and model.columns into a second, read-only <sv-grid>.
The license key
import { setLicenseKey } from '@svgrid/enterprise/license'
setLicenseKey('SVENTERPRISE-...')
Call it once, before the first export. With no key nothing breaks: the paid features still run, the grid shows a small watermark, and the console carries a one-time notice.
A malformed key is a different case - it throws rather than degrading, so a
placeholder string is worse than no key at all. Keys carry an SVENTERPRISE-
prefix.
Needs a Svelte-aware bundler
The main entry - @svgrid/enterprise - imports the pack's Svelte components, so
a host that cannot compile .svelte files cannot import it. With Vite plus
@sveltejs/vite-plugin-svelte
it works, and three more things become available:
import { installEnterprise, enableBoardView, enableSchedulerView } from '@svgrid/enterprise'
installEnterprise(grid.api) // adds api.exportData / importData / print / pivot / ai
enableBoardView() // makes the element's `board` prop render a Kanban board
enableSchedulerView() // makes its `scheduler` prop render a calendar
installEnterprise is a convenience: it hangs the same export, import, print
and pivot functions off the api object rather than you importing them. The board
and scheduler views are the part you cannot get any other way, because they are
Svelte components rendered inside the element.
Angular CLI builds have no Svelte compiler, so for Angular the four entry points above are the whole of what is reachable.
Summary
| Feature | Any bundler | Needs a Svelte-aware build |
|---|---|---|
| xlsx / pdf / html / csv / tsv export | ✓ | |
| Import (xlsx / csv / tsv / json) | ✓ | |
| ✓ | ||
| Pivot model | ✓ | |
| License key | ✓ | |
installEnterprise(api) |
✓ | |
| Kanban board view | ✓ | |
| Scheduler / calendar view | ✓ |
See also limitations for what the element itself cannot do, regardless of licensing.
Related articles
- What's New in SvGrid Enterprise - Export, Pivot, Import, Print, and AI - A practical look at @svgrid/enterprise - pivot tables, Excel and PDF export, data import, printing, and an AI assistant. Covers when each feature earns its place and what to watch out for in production.
- 15 Years of UI Components - The Story Behind jQWidgets and Smart UI - How a team spent 15 years shipping data grids - from jQuery widgets in 2011 to web components to a Svelte 5 native grid - and what actually changed each time.
- Smart UI Wins Gold in the 2025 Visual Studio Magazine Readers' Choice Awards - Smart UI, the web-components suite from the team behind SvGrid, earned Gold in the 2025 Visual Studio Magazine Readers' Choice Awards. Here is what that vote actually tells you about the codebase you are running.