API version 61.0+ 125 tests passing MIT license

Stop rebuilding the same enterprise LWC components on every project.

A generic server-side datatable, a modal framework, error/state handling, and the debounce/deep-clone/permission-check utilities every Salesforce project eventually writes from scratch — built once, tested, and documented.

Why this exists

Every Salesforce project eventually builds some variation of a server-side, sortable, filterable, editable datatable with bulk actions — and re-derives the same Apex error parsing, the same modal boilerplate, the same loading/empty/error branch. This is not a lightning-button wrapper library: everything here either does something non-trivial (server-side pagination with partial-error reporting) or removes genuine, repeated boilerplate.

The flagship: c-enterprise-datatable

Point it at an object and a column array. It handles the rest of this pipeline server-side:

Server-side query→ Pagination→ Filtering→ Sorting→ Inline editing→ Bulk update→ Partial errors→ Refresh
<c-enterprise-datatable
    object-api-name="Account"
    title="Accounts"
    columns={columns}
    page-size="25"
    pagination-mode="pages"
    search-fields={searchFields}
    bulk-actions={bulkActions}
    enable-row-selection
    enable-bulk-delete
    default-sort-field="Name"
    onbulkaction={handleBulkAction}
></c-enterprise-datatable>

Backed by four generic Apex services — GenericQueryService, GenericDmlService, PermissionService, CustomMetadataService — instead of a bespoke controller per object. Identifiers (object/field names) are validated against the running user's schema describe; values are always bound via Database.queryWithBinds, never concatenated. See the usage guide for the full column/API reference.

Try it: a live mock of the pipeline

Fake data, runs entirely in your browser — no org required. This mirrors what c-enterprise-datatable + GenericDmlService do server-side: click a column to sort, search, select rows for a bulk delete, or double-click a cell to edit (the "Globex Industries" row is wired to always fail on save, so you can see the partial-error path).

Explore every piece

Search or filter, then click any card for the full usage: imports, props, events, and methods.

Getting started

Full detail, every property, every method: see the usage guide. The short version:

sf org create scratch -f config/project-scratch-def.json -a lwc-toolkit -d 7
sf project deploy start -o lwc-toolkit
sf org assign permset -o lwc-toolkit -n LWCToolkitAdmin
sf org open -o lwc-toolkit

Then drop Enterprise Datatable Demo (Accounts) onto any App/Record/Home page from Lightning App Builder.