Reprise was introduced on this blog a few weeks ago, and the pitch has
not changed: it is a thin plugin, not a build tool. Vite and Rsbuild
do the real work (bundling, hashing, source maps, HMR, the dev server);
Reprise only adds the Symfony glue they leave out, the entrypoints.json
and manifest.json files and the Twig tags that render them, the way
Webpack Encore did.
That narrow scope is why 1.0 can land this soon. The bundlers underneath are mature and battle-tested, and Reprise's own surface is small, so a few stabilizing releases (0.6.1 through 0.8.0) were enough to settle it. Reprise 1.0.0 makes it official: the experimental notice is gone, and the public API now follows semantic versioning and Symfony's backward compatibility promise.
A backward compatibility promise
1.0 is not a new pile of features, it is a commitment. Everything an application depends on is now covered by semantic versioning and Symfony's backward compatibility promise: within a major version the public API stays stable, and anything that has to change is deprecated first and removed only in the next major.
Stabilizing toward 1.0
Most of the work since the announcement was not visible in the API:
end-to-end tests with Vitest and Playwright now exercise both bundlers
against a real Symfony backend on every CI run, the playground was rebuilt
as a proper Reprise and Symfony UX showcase, and Subresource Integrity got
two fixes, on the preloaded Link headers and on module-script
preloading.
The first contribution from outside the maintainer landed here too, a per-entry opt-out of copied-filename hashing for assets that need a stable path on disk. The Webpack Encore migration guide now names every Encore method, mapping each one to its Reprise feature or to the bundler that handles it natively.
Reprise is 1.0, but still young. If you are on Encore and eyeing Vite or Rsbuild, or starting a new project on a modern bundler, this is a good moment to try it on something real:
1 2
$ composer require symfony/reprise
$ npm install @symfony/reprise --save-dev
Then wire the plugin into your Vite or Rsbuild config, as the installation guide shows.
Feedback, issues and contributions are more than welcome on Reprise on GitHub 🚀