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

Grid Bundle Laravel Package

pedro-teixeira/grid-bundle

A Symfony bundle for building data grids from Doctrine entities with sortable columns, filters, pagination, bulk actions, and CSV/Excel export. Configure columns, search, and row actions quickly in PHP or annotations for admin and reporting screens.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Headline: This is a Symfony bundle, not a Laravel package. The stated brief assumes a Laravel stack; the package has no Laravel integration surface. That mismatch, combined with a last release date of 2015-03-31, makes this a code-extraction candidate, not a dependency to adopt. Recommendation: do not add to composer.json; treat as MIT-licensed source material in a time-boxed spike.

Architecture fit

  • A Symfony bundle ships three things: a Bundle class, a DependencyInjection extension/compiler passes, and framework resources (service YAML/XML, Twig templates, optional routing). Laravel has no bundle loader — none of this executes without a hand-written shim.
  • The value described — declarative column/row definitions, separation of data from rendering, extensible column types — lives in the package's domain classes, which may or may not be framework-free. That is the only part plausibly portable to Laravel.
  • The rendering layer is almost certainly Twig-coupled. Laravel's view layer is Blade. Bridging (TwigBridge-style) adds a second unmaintained dependency to solve a problem we don't have.
  • Net: the reusable fraction is likely a set of small PHP value objects plus a config schema — not the "framework-friendly integration" the description claims for our stack.

Integration feasibility

  • Composer resolution will likely fail outright. A 2015-era composer.json will constrain PHP (>=5.x) and symfony/* to the 2.x line. Laravel 10/11/12 requires PHP 8.1+. Expect conflict errors and a need for a private fork, replace, or a VCS repository entry — at which point we are maintaining a fork before writing a line of application code.
  • PHP 8 compatibility is a real hazard, not a theoretical one. Code from that era commonly relies on each(), create_function(), curly-brace string offsets, and untyped dynamic properties — all removed or deprecated in PHP 7.2–8.2. This is a mechanical but non-trivial Rector pass, and it must be validated by tests that likely do not exist upstream.
  • The rendering contract is the blocker. If grids are rendered via a controller helper or Twig function, the Blade equivalent is a full rewrite of the view layer, which is where most of the user-visible behavior lives.
  • Feasibility verdict: technically possible via fork-and-extract; economically poor relative to Laravel-native alternatives.

Technical risk

Risk Severity Notes
Abandonment High Last release ~10 years ago; 17 stars; single-maintainer bus factor of one. No upstream fixes, ever.
PHP/Symfony version drift High Blocks modern runtime upgrade path; forces a fork.
Security Medium-High No CVE monitoring for an unmaintained dependency; grid rendering of cell values is a classic stored-XSS surface if escaping isn't enforced per column type.
Silent behavior gaps Medium Description advertises columns, rows, display logic — notably not pagination, sorting, filtering, or bulk actions. These are table stakes and would be our build cost.
Fork ownership Medium MIT license makes forking legal and easy; it does not make it staffed.

Key questions for engineering

  1. What does the composer.json constraint block actually look like — is this resolvable on PHP 8.2 at all?
  2. Are the Grid/Column/Row classes free of Symfony imports, or do they type-hint DI/Twig/Request? This determines whether extraction is days or weeks.
  3. Does the bundle ship tests, and do they run? A fork without a regression harness is unverifiable.
  4. Is cell output escaped by default, and is escaping opt-out per column? What is the XSS posture?
  5. Does it handle pagination/sorting/filtering at all, or only static rendering? If not, we are rebuilding the hard 80%.
  6. What is the concrete grid requirement driving this evaluation — read-only admin tables, or interactive data exploration? The answer changes the build-vs-buy calculus entirely.

Integration Approach

Stack fit

Poor as a dependency; moderate as a design reference. The package's declarative column-definition model is a sound pattern — one Laravel already implements natively and better. Existing equivalents we should benchmark against first:

  • Filament tables (closest conceptual match; declarative columns, actions, filters, pagination)
  • Laravel Nova (if licensed, admin-panel-scoped)
  • Yajra DataTables or spatie/laravel-query-builder + Blade components for lightweight, read-only grids
  • Livewire tables for interactive sorting/filtering without a JS framework

If any of these satisfies the requirement, the correct TPM decision is to close this evaluation and spend the effort on adoption instead of a fork.

Migration path (if we proceed)

Position this as extraction, not integration:

  1. Fork under our org, pin to a tag, add phpunit/pest + PHPStan baseline + Rector config.
  2. Run Rector to PHP 8.2 and strip Symfony DependencyInjection, Bundle, and resource config.
  3. Lift only the framework-free domain classes into app/Support/Grid/ behind our own interfaces (GridDefinition, ColumnContract).
  4. Reimplement rendering as Blade components; do not port Twig templates.
  5. Delete the fork from composer.json. Keep attribution in a NOTICE/LICENSE file per MIT.

Compatibility

  • Target PHP 8.2+, Laravel 11/12, Blade only. Twig is not an acceptable addition.
  • Replace Symfony service wiring with a single Laravel service provider only if any container-managed behavior survives extraction; otherwise use plain constructors.
  • Establish escaping and query-parameter validation as non-negotiable acceptance criteria before any grid renders production data.

Sequencing with decision gates

  1. Day 1–2 — Feasibility spike: read composer.json, count Symfony/Twig imports across source, attempt an install in a throwaway Laravel 11 app. Gate: is >50% of source portable? If no, stop.
  2. Day 3–5 — Extraction prototype: one real grid (the simplest in our backlog) rebuilt on extracted classes + Blade. Gate: does it beat Filament/Yajra on effort or fit?
  3. Week 2 — Fork hardening: tests, static analysis, PHP 8 CI matrix, security review of escaping.
  4. Week 3+ — Rollout: migrate grids one at a time behind a feature flag; no big-bang.

Operational Impact

Maintenance

  • We become the maintainer on day one. Upstream is dormant; there will be no patches. Budget a standing allocation for dependency hygiene, not a one-time integration cost.
  • Fork overhead is real but bounded: small code volume, so PHPStan/Rector/CI upkeep is measured in hours per quarter — provided step 2 above succeeds and the fork shrinks to domain classes only. If the fork retains Symfony scaffolding, that estimate is wrong by an order of magnitude.
  • Enforce a policy: no new grid features land in the fork unless they cannot be expressed in our Blade layer.

Support

  • No vendor, no upstream issue triage, no security advisory feed. Assign a named internal owner and register the fork in our dependency inventory so vulnerability scanning and PHP-upgrade planning actually see it.
  • Documentation is thin (README-level). Plan for a short internal ADR capturing why this exists, or the next engineer will re-evaluate it from scratch.

Scaling

  • Server-side rendering scales like any Laravel Blade view — the risk is query behavior, not throughput. Grid abstractions that resolve relations per row invite N+1 queries; mandate eager loading at the definition layer and assert query counts in tests.
  • Absence of built-in pagination is the dominant scaling constraint. Any unbounded grid is an availability incident waiting for a large tenant. Pagination and hard row caps must be built before first production use.
  • Rendering cost is CPU-bound and vertically scalable; no special infrastructure requirement.

Failure modes

  • PHP/runtime upgrade breaks everything at once — mitigated by the CI matrix and by shrinking the fork's surface.
  • Stored XSS via cell rendering if escaping is per-column and opt-out is easy to misuse — mitigated by escaping-by-default and a review checklist.
  • Sort/filter parameter injection if request params flow into query builders unvalidated — enforce a column allowlist.
  • Silent abandonment drift: the fork diverges from upstream (which is fine) but nobody remembers it exists (which is not) — mitigated by inventory registration.
  • Fork rot on framework upgrades — the real cost; each Laravel major forces a fork review.

Ramp-up

  • Low syntactic complexity, high contextual cost. There are no docs, no community, no Stack Overflow corpus — onboarding is reverse-engineering. Assume 2–3 days for a mid-level engineer to be productive after the extraction work is complete, and require the extracting engineer to leave behind tests and a one-page ADR.
  • Compare honestly: Filament/Yajra ramp-up is measured in hours with abundant documentation. That delta is the strongest argument against this path.
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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums