← All developer guidesDeveloper guide

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
const installation = createDataTablePluginRegistry([
  auditPlugin
]).resolve([
  useDataTablePlugin(auditPlugin.manifest.name, { endpoint: '/api/audit' })
]);

new DataTable({ ...options, features: installation.features });