symfony/stimulus-bundle
Integrates Symfony, Stimulus, and Symfony UX: Twig stimulus_* functions and filters add controllers, actions, and targets to templates, with AssetMapper support and a helper service for building Stimulus data attributes in your services.
Release verdict (v3.6.0): Patch-level release. No new features, no deprecations, no API changes. The one material change is a declared conflict with symfony/asset-mapper 8.2+ (bug #3919). The remaining items are dev-tooling bumps and documentation clarifications. This does not require an architecture rethink, but it does affect upgrade sequencing — the bundle now caps how far the asset pipeline can be upgraded.
@hotwired/stimulus. There is no Laravel service provider, no Laravel package discovery, and no Blade integration. For a Laravel-first estate the package is not directly consumable; the transferable asset is the pattern (data-attribute-driven controllers + progressive enhancement), which Laravel teams already get from Livewire/Alpine + Vite.stimulus_controller / stimulus_action / stimulus_target move behavior into templates. High leverage for Twig-heavy apps; zero leverage for API+SPA frontends.composer require symfony/stimulus-bundle + one bundle registration). The real work is template refactoring and asset-pipeline alignment.symfony/asset-mapper 8.2+ cannot install/upgrade to this release without downgrading AssetMapper or holding at the prior bundle version. That is a blocking constraint, not a warning — Composer will refuse the solve.| Risk | Severity | Change in v3.6.0 | Mitigation |
|---|---|---|---|
| AssetMapper 8.2+ conflict | High | New — explicit conflict declared | Pin symfony/asset-mapper <8.2 or hold StimulusBundle at 3.5.x until a fix lands; track the underlying issue |
| Symfony version lock-in | Medium | Unchanged | Audit composer.json platform constraints early |
| AssetMapper adoption surface | High | Unchanged | Use excluded_patterns to avoid clobbering existing assets |
| Twig template refactoring | Medium | Unchanged | Inventory inline onclick/<script> handlers before committing |
| Pipeline/upgrade deadlock | Medium | New — asset-mapper upgrade now gated by this bundle | Add a dependency-graph gate to the upgrade runbook |
| Stimulus learning curve | Low | Unchanged | 1–2 day internal workshop |
| Debugging complexity | Medium | Unchanged | Standardize on Symfony Profiler + debug:autowiring (docs improved in #4037) |
| Dev-tooling churn | Low | New — tooling dep bumps (#4086) | Dev-only; no runtime impact |
stimulus_* calls after migration? That number is the switching cost.composer why symfony/asset-mapper and confirm the resolved version is <8.2. If not, resolve that before anything else.composer require symfony/stimulus-bundle, then add StimulusBundle::class => ['all' => true] to config/bundles.php.controllers.json handling / excluded_patterns as needed in config/packages/asset_mapper.yaml.stimulus_controller / stimulus_action / stimulus_target.assets/controllers/; keep them small and single-purpose.| Component | Status in v3.6.0 | Notes |
|---|---|---|
| symfony/asset-mapper | Conflict with 8.2+ | Hard Composer conflict (#3919). Pin <8.2 or hold bundle at 3.5.x. Verify exact platform constraints against composer.json — prior guidance on PHP/Symfony minimums should be re-confirmed, not assumed. |
| Symfony 6.4 / 7.x | Supported | Per bundle branch; confirm per resolved version |
| Twig | Required for stimulus_* helpers |
No Blade equivalent |
| Webpack Encore | Supported | Needs ES-module configuration |
| TypeScript controllers | Supported | Build-tool config required |
| Symfony UX (Turbo/Mercure/Dropzone) | Native | Optional, additive |
| Laravel | Not supported | No service provider, no Blade helpers |
<8.2 across affected services (or defer this release).debug:autowiring types described, #4037) — modest reduction in onboarding friction.stimulus_* helpers and the controller conventions. Without a written standard, template code drifts toward the inline JS you were replacing.| Failure | Trigger | Impact | Signal |
|---|---|---|---|
| Upgrade deadlock | AssetMapper upgraded to 8.2+ while bundle pinned | Composer solve fails; security patching blocked | CI dependency resolution error |
| Silent behavior loss | Inline handler removed, controller not wired | Non-functional UI in production | E2E coverage gap |
| Asset pipeline contamination | excluded_patterns misconfigured |
Existing assets dropped from build | Broken styles/scripts after deploy |
| Convention drift | No template standard | Reintroduction of inline JS | Code review findings |
| Build-time creep | Controller proliferation | Slower asset builds | CI duration trend |
How can I help you explore Laravel packages today?