Baseline: the public Filament 5 Tables documentation and column types. This is functional compatibility work, not a claim that Filament classes, Blade views or Livewire traits run inside Inertia. Saved views are an additional Spindle feature inspired by the general preset/favorites workflow, not a copy of a third-party paid plugin.
Implemented
| Feature area | Spindle support |
|---|---|
| Fluent definitions | Table, columns, filters, groups, header/row/bulk actions |
| Display columns | Text, badge, numeric/money/date, sanitized HTML/Markdown, escaped syntax-highlighted code, icon/boolean, image stacks, color |
| Editable columns | Text, select, toggle, checkbox; validation and authorization |
| Custom columns/filters | PHP subclasses, callbacks, metadata, Svelte snippets |
| Searching | Global, individual, relationship, table/column query callbacks and optional bounded Scout integration |
| Sorting | Allowlisted multiple sorts, custom queries, stable primary-key ordering |
| Filters | Checkbox, select/multiple/relationship, local/remote option search, preload, ternary, range/date, soft-deleted; live/deferred application, configurable grid/placement/overlays |
| Advanced rules | Nested AND/OR builder, typed constraints, bounded depth/count |
| Visibility/order | Server-hidden columns, searchable column manager, live/deferred toggles and drag/keyboard ordering, resets, modal/dropdown/slide-over layouts, saved order |
| Pagination | Cursor, simple and length-aware; native Inertia infinite scroll |
| Actions | Toolbar, row, cell and bulk handlers; configurable record-action placement; bulk actions in toolbars; authorized selected-record context; frontend-owned UI; async submission/cancellation; Laravel validation, confirmation and policy checks |
| CRUD helpers | Create, edit, delete, restore, force delete, replication exclusions/save hooks/relationship copying, bulk delete |
| Bulk callback modes | Eager models, chunked lazy models, or IDs; preflight authorization, fixed target IDs and one transaction; optional per-ID authorization without model hydration |
| Selection | Loaded and all-matching records with exclusions; explicit enable/disable, maximum count, loaded-page and single-group restrictions; group selection controls |
| Background bulk execution | Durable scoped per-record jobs, encrypted input, chunked target preparation, progress props, headless monitoring, Svelte progress/notifications/history, cancellation, unread completion state, recovery and retention |
| Grouping | Server ordering, default groups, titles, collapsible loaded groups, SQL aggregate-only reports and group pagination |
| Summaries | All/page/group scopes, sum, average, min, max, count, range and custom summarizers |
| Reordering | Authorized subset reordering with preserved external positions |
| Presentation | Heading, description, row URLs/classes, stripes, empty state, responsive overflow, cards, nested Split/Stack/Grid/Panel/custom layouts and collapsible details |
| Refresh | Polling, partial reload, deferred scroll props |
| Custom data | Bounded Laravel paginator provider contract |
| Import/export | Scoped streamed CSV export, queued CSV/XLSX exports with private authorized downloads/progress/retention, bounded transactional CSV import, and queued CSV imports with server-defined destinations, user mappings, per-row results and private failure reports |
| Views | Preset tabs, private user views, defaults, favorites, replacement, deletion, reordering API and session persistence |
| Localization | Per-table message overrides, placeholders/pluralization functions, accessible labels, Intl locale formatting and Laravel translation hooks |
| Framework independence | Zero-dependency headless TS core; Svelte driver |
Action UI design
Per the package requirements, action forms, wizards, read-only details and other interactions belong to the frontend application. A PHP schema/form/infolist builder is intentionally excluded. The package provides typed handler hooks, initial data, submission and authorization; applications can use any UI or form library. This is the requested action architecture, not a pending form-builder feature.
Remaining work before a full-parity claim
- Close the remaining interaction and configuration gaps. Implemented feature categories alone do not establish full parity.
Public/shared views and approval workflows are additional future work, not core Filament table features being claimed here. The Svelte table virtualizes rows automatically (see rendering performance), which Filament does not. Vue and React renderers are intentionally deferred per the package direction.
Verification scope
Backend tests run against SQLite and the locked Laravel/Inertia versions, including Scout’s database and collection engines. The isolated Laravel 12 / PHP 8.3 suite also passes; exact versions and limits are recorded with the package. Remote Scout services are not exercised. The browser fixture exercises a real Laravel + Inertia + Svelte app with CSRF/session middleware. MySQL/PostgreSQL and the lowest dependency versions require CI matrix verification before release. No registry publication or production deployment has been performed.