wemakecustom/swiftmailer-twig-bundle
A Symfony bundle that integrates Swiftmailer with Twig, letting you render email bodies from Twig templates and send them through SwiftMailer's mailer service.
Architecture fit. The v1.1 change is a dependency-compatibility release, not a feature release. It moves the package's mail transport bindings onto the SwiftMailer 6 API, which Laravel consumes through Illuminate\Mail\MailManager and the mailer.transport resolution path. Architecturally this is the correct seam: the package should register a transport driver via MailManager::extend() inside its service provider and resolve through the container, leaving Laravel's Mail facade, Mailable classes, and queue integration untouched. If the package instead reaches into Swift_Mailer internals or subclasses Illuminate\Mail\Mailer, the SwiftMailer 6 rename (all Swift_* classes became namespaced Swift\*) will have forced invasive edits — a signal worth confirming before adoption.
Integration feasibility. High, with a narrow window. The release effectively asserts compatibility with the Laravel 5.5 / Symfony 3.3 generation. Adoption is a composer require plus a config publish, and should be verifiable in a single sprint behind a feature flag on the mail path. The constraint risk is transitive: any other package in the tree pinned to swiftmailer/swiftmailer ~5.4 will make v1.1 unresolvable, and Composer will fail at install rather than at runtime — which is the good failure mode.
Technical risk. Three items:
Key questions.
swiftmailer/swiftmailer ^6.0, or does it suggest/conditionally support it? Hard requirement drops Laravel ≤5.4 entirely.1.0.x / 1.1.x branches with a published support window?Stack fit. Targets Laravel 5.5+ / Symfony 3.3+ / PHP 7.0+. Confirm the PHP floor explicitly — SwiftMailer 6 requires PHP 7, so v1.1 cannot be installed on a 5.6 host regardless of Laravel version. For anyone on Laravel 5.4 or earlier, this release is a no-op and they stay pinned to the 1.0.x line.
Migration path. Treat as a lockfile-level upgrade with a mail-path regression gate:
Mail::fake() with rendered output assertions.composer update in a branch; inspect the full dependency diff, not just the package version — Symfony component bumps often ride along.Compatibility. Verify against the actual production Laravel minor, not the documented minimum. Pay specific attention to illuminate/mail version alignment — Laravel 5.5 shipped against SwiftMailer 5.x initially and moved to 6.x mid-cycle, so patch-level matters. If the application registers a custom transport already, confirm the package's driver name does not collide.
Sequencing. Do this as a standalone dependency-hygiene ticket, not bundled into a feature release. It should land immediately after a mail-path observability improvement (delivery-failure logging or a send-rate metric) so regressions are detectable within one deploy cycle rather than one customer complaint cycle.
Maintenance. Low ongoing effort post-migration, but budget for a re-migration. The realistic maintenance question is not "does v1.1 work" but "how long until the Symfony Mailer move is forced." Ask the maintainer for a deprecation signal and set an internal review date ~9 months out. If the package is a low-activity project (single maintainer, infrequent releases), the v1.1 release itself is the positive signal — someone is tracking upstream — but concentration risk remains.
Support. Two support surfaces until the 1.0.x line retires: internal runbooks must specify which branch corresponds to which Laravel generation, or on-call will apply the wrong workaround. Update the platform dependency register and the "approved mail transport" decision record in the same change.
Scaling. The version bump does not change transport throughput characteristics. Do watch attachment memory profile — SwiftMailer 6 altered how message bodies and attachments are buffered, which matters if the application sends large attachments at volume. Queued mail throughput should be unchanged; validate worker memory under load before and after rather than assuming parity.
Failure modes. Ranked by likelihood and blast radius:
smtp transport, and mail appears to send successfully from the application's perspective while bypassing the package entirely. Add a boot-time assertion that the expected driver is registered.Ramp-up. Half a day for an engineer familiar with Laravel's mail layer; the conceptual load is entirely in dependency resolution, not in the package's API. The larger cost is organizational — updating the dependency register, the runbook's branch mapping, and the on-call mail-triage guide. Plan the rollout as a low-risk, well-instrumented change, and gate the decision to adopt on the answer to the hard-requirement question in Technical Evaluation.
How can I help you explore Laravel packages today?