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

Hugo Alliaume Loïck Piera
Contributed by Hugo Alliaume and Loïck Piera in #67 , #68 , #69 , #70 , #72 , #81 , #82 and #93

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 🚀

Published in #Releases