recranet/twig-spreadsheet-bundle
Symfony bundle adding Twig functions and filters for working with spreadsheets, so templates can read, render, and export spreadsheet data without extra PHP glue. Lightweight integration for generating Excel or CSV output directly from Twig views.
Architecture fit This is a Twig templating bridge for Laravel — it replaces (or coexists with) Blade by wiring Twig into Laravel's view factory, and it leans on Symfony components (Translation, HttpFoundation, Finder) plus Twig itself. That means its dependency graph is governed by two upstream release cadences (Laravel and Symfony), not one. Release 2.5 tightens the Symfony and Twig ends of that graph, so the package's supported envelope is now narrower than Laravel's own. For a TPM, the headline is: this package's compatibility matrix is now approximately "Laravel 11+ on PHP 8.2+, Symfony 7.4+/8.x, Twig 3.21+". Anything outside that needs an explicit exception.
Integration feasibility
Constraint changes are all in composer.json and will surface at composer update time, which is good — failures are loud and pre-deploy. The realistic friction points:
Technical risk
^2.4 allows 2.5 — verify the constraint actually is ^2.4 and not ^2.5, because a caret on 2.x will pull 2.5 in and break PHP 8.1 CI.Key questions
Stack fit Confirm where this package sits in the render path — if it is the primary view engine for any customer-facing surface, treat it as tier-1; if it is used for a handful of mail templates or an admin module, tier-3. The upgrade effort is identical either way, but the blast radius and change-control requirements are not.
Migration path
composer why twig/twig, composer why symfony/*, and composer depends <vendor>/<package> across every app and shared library.2.4.* explicitly with a dated review.composer update of symfony/* plus a regression pass on translation and HTTP kernel behaviour, not a code change.Compatibility Note the coupling explicitly: PHP 8.1 drop ≈ Laravel 10 and below; Symfony 6.4 drop ≈ Laravel 10 and below (Laravel 11 moved to Symfony 7). These two lines are largely the same cut, so the effective statement is "Laravel 11+ only". That is a defensible and probably intentional position — but it should be documented as such rather than inferred.
Sequencing
Runtime (PHP) first, then Laravel, then Symfony components, then this package, then Twig. Do not bump this package and PHP in the same PR; you will not be able to attribute failures. Pin 2.4.* in every repo that is not yet through the PHP upgrade so a routine composer update on an unrelated branch cannot drag 2.5 in.
Maintenance Small ongoing cost, but note the cadence: this package will now track Symfony major releases closely, which means an upgrade roughly every 12–24 months. Budget for it as recurring work, not a one-off. The absence of deprecation shims in 2.5 means future drops will likely also be hard cuts — plan on that assumption.
Support The critical unknown is the 2.4.x support window. If 2.4.x stops receiving fixes when 2.5 ships, any team stuck on PHP 8.1 is on an unpatched templating layer, which is a security-relevant position given Twig's history of sandbox advisories. Escalate this as a decision, not a backlog item.
Scaling No scaling implications — this is a compile-time/rendering-path dependency with no runtime services, queues, or state. Twig's compiled-template cache behaves the same across these versions.
Failure modes
^2.4 resolving to 2.5 on a PHP 8.1 runner — fails at install, but only when someone runs composer update.Ramp-up Low. An engineer familiar with Composer and Laravel's view layer can execute this in a day per application, assuming PHP 8.2 is already in place. The real cost sits in the PHP runtime upgrade for any lagging service, which is infrastructure work and should be estimated separately — do not let it hide inside a "minor dependency bump" ticket.
How can I help you explore Laravel packages today?