sylius/theming-bundle
Sylius Theming Bundle adds flexible theme support to Sylius storefronts, letting you organize templates, assets, and configuration into reusable themes with inheritance and per-channel theme selection.
What it is. sylius/theming-bundle is a Symfony Bundle built for Sylius e-commerce applications. It layers template inheritance, asset overriding, and per-theme configuration on top of Twig and the Symfony service container. It is not a Laravel package, has no service provider, no facade, no Blade integration, and no Composer-installable path into a Laravel application.
Architecture fit — poor for a Laravel target. The bundle is structurally coupled to Symfony's kernel: Bundle extension classes for configuration, DI compiler passes for decorating the template locator, Twig's loader chain for override resolution, and Sylius' Resource/Theme model backed by Doctrine entities. Laravel uses service providers, Blade's view finder, and Eloquent. Running this bundle inside Laravel means embedding a second framework runtime — two containers, two view layers, two autoload conventions, two console stacks. That is architectural debt accepted on day one for a presentation-layer concern.
Integration feasibility — effectively zero. No Laravel adapter exists, no community fork is active, and the dependent count is 0, so there is no observable project anywhere that has built on it. The repository is archived: no merged PRs, no releases, no security response. A team could not "integrate" this bundle; it could only fork and re-platform the resolution logic — at which point the deliverable is the design pattern, not the code.
Technical risk — high and non-mitigable.
console, http-foundation, finder) that Laravel itself relies on. A successful install is more dangerous than a failed one.Where the package does have leverage — as a reference design. The value a TPM can extract is conceptual, not operational: the theme-inheritance model (child overrides parent, falls back on miss), the declarative config schema for theme locations and per-theme settings, the precedence rules for template-vs-asset resolution, and the locator-decoration pattern at the container level. These are portable ideas with a clean Laravel analogue.
Key questions for the business.
Stack fit — the capability is native to Laravel; the package is not. Laravel already provides the primitives this bundle exists to supply, without a second framework: View::addNamespace() for per-theme view roots, a custom ViewFinder for fallback chains, a ThemeResolver contract bound in a ThemeServiceProvider, middleware for per-request theme binding, and per-theme Vite entry points for assets. The bundle's core proposition is reproducible in a few hundred lines of first-party code with skills the team already has.
Migration path — replace, do not port. There is no incremental route from this bundle into Laravel. If the team is on Sylius and moving to Laravel, scope the theming layer as a presentation-tier rewrite behind explicit interfaces (ThemeResolver, TemplateResolver, AssetResolver) so domain code is untouched. If the team is already on Laravel, do not attempt an install; treat the spike as a research exercise only.
Compatibility — assume incompatible until proven otherwise. Before any time investment, run composer why-not against the target PHP and framework versions on a throwaway branch. Expect conflicts on Symfony components and Twig. Treat a failed resolution as the expected outcome and the correct stopping signal, not an obstacle to engineer around.
Sequencing.
ViewFinder fallback chain, and Vite manifest switching per theme. Evaluate maintained community packages (tenant-scoped view roots, maintained theme packages) as accelerators — applying the same four adoption criteria: recent commits, CI against the pinned major, published support window, and at least one credible production dependent.Maintenance — full ownership begins immediately. Archived means the fork is the organization's from day one: bug fixes, PHP/Symfony/Twig upgrade compatibility, and security patches all fall internally. This is a recurring maintenance line item, not a one-time integration cost, and upstream improvements elsewhere in Sylius will never reach it.
Support — effectively none. No vendor, no maintainer, no community of any size (21 stars, 0 dependents). Escalation is internal by definition. Runbooks and onboarding documentation must be written from source against a codebase with no published support window.
Scaling — the theming layer is cheap; the hybrid runtime is not. Theme resolution and asset mapping are cacheable and low-cost. The operational load comes from the dual-runtime posture: elevated memory footprint per replica, longer cold starts, more complex health checks, and a CI matrix that must satisfy two frameworks' version constraints simultaneously. Horizontal scaling still works, but every replica carries the doubled cost.
Failure modes to instrument for.
Ramp-up — steep and misdirected. The team would need fluency in Sylius bundle configuration semantics, Symfony DI compiler passes, Twig inheritance, and Doctrine entity mapping — on top of Laravel — to maintain a capability a Laravel-native resolver delivers in days using existing skills. The training investment is disproportionate to the delivered value and accrues to a skill set with no other application in the estate.
Bottom line. Do not adopt. Archive status, zero dependents, and framework mismatch compound into a clear recommendation against integration. Leverage the package as a reference design: extract the inheritance model, the config schema, and the resolution-precedence rules, implement them against Laravel's view and asset primitives, and keep the capability first-party. Revisit the bundle only if the actual target of this work is a Sylius application rather than a Laravel one — and even then, treat it as unmaintained and budget accordingly.
How can I help you explore Laravel packages today?