roromix/spreadsheetbundle
A Symfony bundle that integrates PHPExcel/PhpSpreadsheet into your application, letting you read, write, and export spreadsheet files such as Excel, OpenDocument, and CSV through simple, service-based APIs.
Architecture fit
The package remains a standard Composer-installed Laravel library, so there is no architectural change to the host application. The meaningful shift in v3.0.0 is the platform envelope: PHP >= 8.2 and a Symfony constraint of ~7.1. "SF" is almost certainly Symfony; this should be confirmed in writing before planning, because if it refers to another framework the entire compatibility analysis below is invalid. Assuming Symfony, the package is now aligned with the modern Laravel line (Laravel 11 ships Symfony 7.x components and requires PHP 8.2; Laravel 12 moves to Symfony 7.2, which ~7.1 still permits). The practical consequence is that the package is now a Laravel 11/12-era dependency and is architecturally incompatible with Laravel 10 and earlier.
Integration feasibility
Feasible for any application already on PHP 8.2+ and Laravel 11+. The binding constraint is not the package itself but the transitive Symfony version: ~7.1 means >=7.1.0 <8.0.0, so it excludes Symfony 6.x entirely. Applications pinned to Symfony 6 components — directly or through an older Laravel — will fail composer update with a dependency resolution conflict rather than a runtime error, which is the good failure mode. Applications on PHP 8.1 cannot install v3 at all.
Technical risk
Key questions
~7.1 rather than ^7.1 or a wider ^7.0 || ^8.0? Is there a specific Symfony 7.1 feature the package depends on?Stack fit v3.0.0 fits cleanly into Laravel 11 and 12 applications on PHP 8.2 or 8.3+. It does not fit Laravel 10 or PHP 8.1 environments. Treat the package's requirement as the stricter of the two constraints in any given application and plan the PHP upgrade as the gating item.
Migration path Sequence the work as: (1) inventory every application that depends on this package, directly or transitively; (2) for each, record current PHP version, Laravel version, and resolved Symfony version; (3) upgrade PHP to 8.2+ first, independently, and run the existing suite on the package's v2 line — this isolates PHP-related regressions; (4) upgrade Laravel to 11/12 if needed and confirm Symfony resolves to 7.1+; (5) only then bump the package to v3.0.0, in a branch, and diff behavior. Do not combine the PHP bump, the Laravel bump, and the package bump in a single change; each has a distinct failure signature and combining them makes triage expensive.
Compatibility
Maintain an explicit matrix in the repository: package version × PHP range × Laravel range × Symfony range. Publish it in the README and enforce it with a CI matrix. For applications that cannot move yet, pin the v2 line in composer.json with an explicit constraint (not a floating ^2) so the v3 release cannot be pulled in by a routine composer update.
Sequencing Confirm the "SF = Symfony" question and obtain the v2 support window before committing to a timeline. If v2 continues to receive security patches, applications can migrate on their own schedule and v3 adoption can trail the PHP upgrade by a quarter or more. If v2 is end-of-life as of this release, the migration becomes urgent and should be scheduled in the current planning cycle.
Maintenance
The maintenance load drops in one respect — the supported-version matrix is now a single line (PHP 8.2+, Symfony 7.1+) rather than a spread — and rises in another, because the package must now track Symfony 7.x releases and the PHP 8.4/8.5 line as they land. Expect a follow-up release when Symfony 8 arrives, since ~7.1 hard-stops at <8.0.0.
Support
Support burden shifts to users on older platforms, who will file install failures rather than bug reports. Prepare a canned response and a README compatibility table so these are deflected without engineering time. Internally, ensure at least one engineer can speak to the PHP 8.2 delta (deprecated dynamic properties, readonly classes, null/false standalone types) because some upgrade failures will be misattributed to the package.
Scaling No scaling implications — this is a platform constraint, not a runtime characteristic. The relevant "scale" is fleet size: the number of applications and services that must be touched scales linearly with adoption, and each one carries an independent PHP upgrade cost that likely dwarfs the package bump itself.
Failure modes
composer update resolution conflict against Symfony 6 or PHP 8.1 — loud and early, the desirable failure.~7.1, producing a different resolved graph than intended.Ramp-up
Low for engineers already on Laravel 11+. The learning surface is the PHP 8.2 feature set, not the package API, which the release notes suggest is unchanged. Budget roughly a day per application for the PHP and Laravel upgrades plus a regression pass, and considerably more for any application still on Laravel 10. The single highest-value preparedness step is the compatibility matrix plus a pinned v2 constraint for anything not yet migrated, so the fleet does not drift into a broken state on an unrelated composer update.
How can I help you explore Laravel packages today?