Browse documentation
Developer guide1 min read

Plug-in development

Plug-ins add independently published behavior through a public, instance-scoped runtime contract without patching the renderer or relying on a global registry.

Consume a plug-in

#

Create a registry from trusted packages, resolve requested features, and pass the resulting feature array into ordinary table options.

Author a runtime

#

A feature runtime can decorate roots, render layout content, react to table events, and release resources through its destroy hook.

  • Declare package and WTS compatibility in the manifest.
  • Validate dependencies and conflicts before creating the table.
  • Ship CSS and framework-neutral behavior from the plug-in package.

Security boundary

#

Only register packages your application trusts. A manifest proves compatibility and dependency shape; it is not a sandbox for untrusted JavaScript.

Resolve a plug-in per table

#

This recipe focuses on the integration pattern. Replace application-specific values and callbacks with your own data and services.

Resolve a plug-in per table
TypeScript
const installation = createDataTablePluginRegistry([
  auditPlugin
]).resolve([
  useDataTablePlugin(auditPlugin.manifest.name, { endpoint: '/api/audit' })
]);

new DataTable({ ...options, features: installation.features });
Need a complete starting point?

The framework quick start includes install commands, a typed data file, and the component that renders it.

Go to the quick start →

Ready to try it with real data?

Explore configurable examples ↗