Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Table Repeater Laravel Package

icetalker/filament-table-repeater

Filament Table Repeater extends Filament's Repeater form component to display repeatable fields in a table layout. Install via Composer, then use TableRepeater::make() with schema, reorderable, cloneable, collapsible, and min/max items support.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a thin subclass of Filament\Forms\Components\Repeater that replaces the Blade rendering layer with a table layout. It contributes no service provider of consequence, no migrations, no configuration surface, no queues, no external services, and no persistence of its own. Validation, ->relationship() binding, minItems/maxItems, reorderable(), cloneable(), and collapsible() are all inherited from the upstream Repeater, which is exactly what a TPM wants to hear: the dependency adds presentation, not behavior, so it carries none of the usual integration baggage (schema ownership, data backfill, auth surface, background processing).

It fits only where Filament is already the admin framework and the repeated payload is genuinely rectangular — line items, invoice rows, variant matrices, shipping rules, permission grids, batch records. It does not fit heterogeneous row schemas, per-row conditional field sets, or forms that need client-side computation before submit. That scoping judgment is the single highest-value thing a TPM does with this package: it is a UI ergonomics win, not a platform capability.

Integration feasibility. composer require icetalker/filament-table-repeater, optionally php artisan vendor:publish --tag="filament-table-repeater" to own the views, then swap Repeater::make() for TableRepeater::make() in the form schema. No migration, no routing, no data backfill, no auth changes. Realistically a one-to-two day spike per form including regression checks, with the dominant uncertainty being Filament version compatibility rather than the package's own behavior. The published-views escape hatch is the primary lever: we absorb UI gaps by owning CSS, not by forking PHP.

Technical risk.

  • Upstream obsolescence is the dominant risk, and the maintainer documents it. The README explicitly states that Filament v4's native Repeater ships a table() method and recommends it for v4 users. Adopting this on a v4 codebase is buying a scheduled migration; adopting it on v3 is buying a stopgap. That framing should drive scoping, not the feature list.
  • Single-maintainer bus factor. 136 stars, zero dependent packages, one named author, and a changelog of one-line entries ("fix reorder", "fix parameter missing of relative()"). No evidence of a second committer or organizational backing. If maintenance stops, we own the fork or we rip it out — there is no third option and no vendor to escalate to.
  • Version pin discipline is mandatory. v2.0.4 is described only as "fix reorder," with no linked issue or diff narrative. That implies drag-and-drop ordering was broken in prior 2.x builds and that row order may have been silently persisted incorrectly anywhere running an earlier pin. Any environment on 2.0.0–2.0.3 needs a data audit on tables where display order is business-meaningful (line item sequence, step ordering, priority ranks).
  • Breaking cosmetic changes have already shipped. v1.3.0 renamed CSS classes (filament-table-repeater-header-cell → it-table-repeater-cell-label, filament-table-repeater-tbody-cell → it-table-repeater-cell) and changed colStyles() from array-only to array-or-Closure. Any custom theming built against pre-1.3 classes is broken. That is a signal about the stability contract: minor versions can break presentation contracts.
  • Documented capability gaps. inset(), grid(), and columns() are unsupported. Product specs that assume them will fail late in build, not at kickoff, so they must be screened in design review rather than discovered in QA.
  • Metadata anomaly. The recorded last release date (2026-09-20) is ahead of the current date and should be verified against Packagist before it enters any dependency review or security attestation. Treat it as a data-quality item, not a package defect.

Key questions to resolve before committing.

  1. Is the target application on Filament v3 or v4? If v4, this evaluation is closed — use native Repeater::table().
  2. Is there a dated Filament v4 upgrade on the roadmap? If yes, this is a bridge with a known expiry; if no, it is a longer-lived dependency and the bus-factor risk needs a named owner.
  3. Does any in-scope form depend on inset(), grid(), or columns() for layout? If so, scope is larger than it appears.
  4. Is row order business-meaningful in any table we touch? If yes, which pinned version is in production today and what is the audit plan?
  5. Will we publish views (accepting theming maintenance) or stay on package defaults (accepting limited UI control)? This is an explicit either/or, not a default.

Integration Approach

Stack fit. Requires Laravel + Filament, with v3 as the practical target for this package. No constraint on PHP version beyond what Filament already imposes, no constraint on database driver, no constraint on hosting model. Works in any Filament panel that renders forms — resource forms, custom pages, action modals — provided the underlying data is columnar. It assumes the Tailwind/Filament asset pipeline is present, which it will be in any Filament install.

Migration path. Two directions, both cheap, and that cheapness is the core argument for adoption:

  • Inbound: convert an existing Repeater by changing the class and the make() call. Schema arrays, relationships, validation rules, and item limits carry over unchanged. Budget half a day per form for the swap plus visual QA in light and dark mode.
  • Outbound: revert to Repeater, or move to Filament v4's native table(). Because the component wraps rather than replaces Repeater semantics, the persisted data shape is unchanged — no migration, no backfill, no dual-write period. This is the reason to wrap every usage in one internal component (e.g. App\Forms\Components\DataTableRepeater) so the exit is a one-file edit rather than a grep across the codebase.

Compatibility. Pin icetalker/filament-table-repeater to a specific 2.0.x in composer.json (caret on minor, or an exact pin if the form is business-critical) and record the resolved version in the dependency inventory. The real compatibility risk is transitively the Filament major version, not this package: a composer update that pulls Filament 4 will break the subclass contract. Land a filament/filament constraint or CI guard in the same change so the Filament major cannot move silently underneath this package.

Sequencing.

  1. Screen — confirm Filament v3, confirm the data is rectangular, confirm no use of inset()/grid()/columns(), confirm the target is internal admin tooling rather than customer-facing.
  2. Pilot — one low-blast-radius form (a secondary config screen, not the primary order-entry flow). Install, publish views only if theming is genuinely required, pin the version, wrap in the internal component.
  3. Verify — regression test drag-and-drop reorder persistence against the database, clone, collapse, min/max enforcement, relationship save and delete, and light/dark rendering. If reorder does not persist correctly, stop and escalate: that is the exact defect v2.0.4 claims to fix.
  4. Expand — roll to further forms only after the pilot survives one full release cycle of that app, including one dependency update.
  5. Exit rehearsal — confirm in a branch that the wrapper can be swapped back to Repeater without touching consumer code. An hour of work that de-risks the entire bet.

Operational Impact

Maintenance. Low ongoing effort but non-zero, and concentrated in the wrong place: the risk is not bug-fixing this package, it is tracking Filament's major version. Nominate an owner for "Filament upgrade readiness," because the v4 transition silently removes this package's reason to exist. Do not fork. Do not let product features depend on package-specific behavior (colStyles, renamed CSS classes) beyond what a wrapper insulates. Total cost of ownership over a year is roughly the initial spike plus a couple of hours per Filament release review — cheap enough that the decision should hinge on the v4 question, not on effort.

Support. No SLA, no vendor, no security policy beyond a CONTRIBUTING pointer to a Spatie template. Support is GitHub issues on a single-maintainer project with 136 stars. Set expectations accordingly: internal triage first, upstream issue second, fork or remove third. Keep a short decision log (version pinned, wrapper location, owner, exit criteria) so the next TPM does not re-derive this evaluation.

Scaling. Server-side Blade rendering; no runtime performance concern beyond normal Filament form render cost. The practical scaling limit is DOM width and cognitive load, not throughput: a table of many columns on a narrow viewport degrades faster than a stacked repeater. Enforce maxItems on any table that can grow unbounded, and be aware that relationship-backed repeaters inherit Repeater's eager/lazy loading behavior — an N+1 on a large item set is a Repeater concern, not a package one. Nothing here touches queues, caching, or the database schema.

Failure modes. (a) Filament major bump breaks the subclass contract — mitigated by the version guard and wrapper. (b) Reorder regression silently corrupts persisted order — mitigated by the pilot's persistence test and a version pin. (c) CSS class rename breaks custom theming — mitigated by publishing views and owning the CSS in-repo. (d) colStyles() signature change — mitigated by keeping call sites few and inside the wrapper. (e) Unsupported layout methods surfacing as late build failures — mitigated by design-review screening. (f) Package abandonment — mitigated by the exit rehearsal; the blast radius is one internal file.

Ramp-up. Near-zero for any developer who already knows Filament's Repeater, which is the whole point: the API is familiar, the docs are one page plus a changelog, and onboarding is "change the class name." QA and design need a one-paragraph brief covering the table layout, dark mode, and the fact that inset()/grid()/columns() are unavailable. The genuine ramp-up cost sits with the TPM, not the team: understanding that this is a temporary ergonomics layer with a known expiry date, and planning the v4 transition rather than treating the package as permanent infrastructure.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib