whatwedo/table-bundle
whatwedo/table-bundle is a Symfony bundle for building reusable data tables in PHP. It provides configurable columns, sorting, filtering, pagination, and Twig rendering to speed up admin listings and search results without repetitive template code.
Framing mismatch (critical): The request frames this as a Laravel/PHP package. whatwedo/table-bundle is a Symfony bundle — its architecture is built on Symfony's packaging primitives (bundle class, DI extension, compiler passes, configuration tree, Twig extension). It is not Laravel-native and cannot be composer required into a Laravel application and used idiomatically.
Architecture fit:
symfony/framework-bundle and a Twig runtime into a Laravel app — introducing a second kernel, a second view engine, and a competing set of symfony/* constraints alongside Laravel's own transitive Symfony dependencies. The glue code would likely exceed the cost of writing Blade/Livewire table components directly.Integration feasibility: Low for Laravel, moderate for Symfony. There is no evidence of a Symfony Flex recipe (5 stars, 0 dependents), so registration and configuration would be manual. The core table DSL is probably usable, but every surrounding concern — routing, request parameter binding for sort/page/filter, view rendering — would need to be wired by hand. Budget a spike before committing; do not assume the README is complete.
Technical risk (high):
Key questions to answer before any commitment:
LIMIT/ORDER BY) or in-memory array slicing? The latter is a scaling non-starter.symfony/twig-bundle, or is the rendering layer separable?Verdict: Not viable as a Laravel dependency. Viable as a reference implementation for a Symfony shop with an appetite to fork-and-own. Otherwise, prefer maintained alternatives or a purpose-built component.
Stack fit: Target environment is Symfony (with Twig). Outside that, there is no clean fit. Concretely:
illuminate/*'s existing symfony/* pins. Reject unless there is a non-negotiable functional requirement.Migration path (Symfony): Incremental and page-scoped. Table definitions are declarative classes, so migration is naturally per-screen: pick one low-traffic admin list view, define the table class, render it, compare output against the incumbent, then repeat. Do not attempt a big-bang migration of an admin surface — you would be rewriting every table against an under-documented DSL simultaneously.
Compatibility:
composer.json; do not float.composer why-not for Twig and symfony/http-foundation conflicts before merging.* or overly permissive — permissive constraints on an unmaintained bundle are how silent breakage enters.php constraint blocks upgrades.symfony/framework-bundle to pull an HTTP kernel that competes with Laravel's; this is a hard conflict, not a nuisance.Sequencing:
spatie/laravel-query-builder + Blade components.Maintenance: The real cost is ownership, not licensing. MIT permits a fork, and given the activity signals, assume you will fork within 12 months. That means: vendor the package or maintain an internal fork branch, add it to the dependency-upgrade runbook, and assign a named owner. Budget roughly 1–2 days per Symfony major upgrade for rebase and regression testing, plus ongoing triage.
Support: None commercially, no SLA, no visible security-disclosure channel, and a community too small to have answered questions on Stack Overflow. Internal expertise is the only support channel. Treat every bug as yours to fix.
Scaling:
LIMIT/OFFSET or keyset), not applied to a fully hydrated collection. If it is the latter, the package does not scale past small tables regardless of infrastructure.Failure modes to plan for:
http-foundation constraint clash blocks unrelated upgrades; mitigate by pinning and testing in CI.Ramp-up: Low ceiling, thin documentation. A developer familiar with Symfony and Twig should reach productive use in roughly half a day to a day, most of which is reading source rather than docs (expect to learn the column/type DSL and rendering pipeline by inspection). For a Laravel team attempting the bridge, estimate 3–5 days just to reach a working proof of concept, with a meaningful chance of abandoning it — and that time is better spent on a native component. Include the package in onboarding material; undocumented DSLs decay into tribal knowledge otherwise.
Bottom line for a TPM: the total cost of ownership is dominated by the fork obligation and framework-upgrade tax, not by integration. That is only justified if the package's table DSL saves materially more per screen than the ~1–2 days to build equivalent Blade/Twig components in-house — and with 5 stars and 0 dependents, that case is not made.
How can I help you explore Laravel packages today?