<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy" -->

---
title: Symfony Reprise 0.8.0 released (Symfony Blog) | daily.dev
description: Reprise 0.8.0, the Symfony bundler integration layer replacing Encore, adds a per-entry hash option so copied files can keep a stable path on disk instead of...
canonical: https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Symfony Reprise 0.8.0 released (Symfony Blog) | daily.dev
og:description: Reprise 0.8.0, the Symfony bundler integration layer replacing Encore, adds a per-entry hash option so copied files can keep a stable path on disk instead of...
og:url: https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy
og:image: https://api.daily.dev/og/posts/QiTunSYOY.png
og:image:alt: Symfony Reprise 0.8.0 released (Symfony Blog)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Symfony Reprise 0.8.0 released (Symfony Blog)

**[Symfony](https://daily.dev/sources/symfony)** · 4 min read · 2 upvotes · 0 comments

## Summary

Reprise 0.8.0, the Symfony bundler integration layer replacing Encore, adds a per-entry hash option so copied files can keep a stable path on disk instead of always being hashed, restoring an Encore behavior some codebases rely on for hardcoded asset paths, PHP file lookups, or CDN rules. It also fixes a manifest key mismatch between Vite and Rsbuild by stripping query strings and fragments from asset URLs before writing manifest keys, so Twig's asset() function resolves consistently across both bundlers. Separately, the project dropped Corepack from its CI in favor of pnpm/setup, following Node.js removing Corepack in v25.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://symfony.com/blog/symfony-reprise-0-8-0-released>

## Questions this post answers

### How do I make Reprise keep a copied file at a fixed path instead of hashing the filename, like Encore did?

Set hash: false on a copy entry in the Reprise plugin config for Vite or Rsbuild. The file then lands at its original logical path, such as public/build/images/logo.svg, and the content hash moves into the manifest.json value as a query string instead of the filename, so asset() still returns a versioned URL. This restores an Encore copyFiles() behavior that templates, PHP code, and CDN rules often depend on.

_Track breaking changes like this on daily.dev when migrating asset pipelines from Encore to Reprise._

### Why does asset() in Twig fail to resolve a font file when using Rsbuild but work fine with Vite?

Rsbuild's manifest previously kept the query string or fragment from a CSS url() reference, writing a key like build/fonts/query.woff2?v=1, while Vite stripped it to build/fonts/query.woff2. Since asset('fonts/query.woff2') in Twig looks up the stripped key, only the Rsbuild-built version failed to match. Reprise 0.8.0 fixes this by stripping the query string and fragment from Rsbuild manifest keys too.

_Debugging asset manifest mismatches across bundlers is easier with fixes like this tracked on daily.dev._

### Why was Corepack removed from Node.js and what replaces it in CI for installing pnpm?

Node.js stopped shipping Corepack starting in version 25 after the Node.js TSC voted to stop distributing it. It was also a slower path to pnpm because every command ran through a Node.js shim that had to resolve and download the package manager first. Projects like Symfony Reprise and Symfony UX now use the pnpm/setup GitHub Action, which installs the standalone pnpm binary and Node.js in one step.

_Developers updating CI pipelines after tooling removals like Corepack can follow changes like this on daily.dev._

## Similar posts on daily.dev

- [Introducing Symfony Reprise: The Symfony Integration Layer for Modern Bundlers \(Symfony Blog\)](https://daily.dev/posts/introducing-symfony-reprise-the-symfony-integration-layer-for-modern-bundlers-symfony-blog--cmditgqf2) · Symfony · 12 upvotes · 0 comments
- [Symfony UX 3.3.0 released \(Symfony Blog\)](https://daily.dev/posts/symfony-ux-3-3-0-released-symfony-blog--2m9quufim) · Symfony · 2 upvotes · 0 comments
- [New in Symfony 8.2: Performance Improvements \(Symfony Blog\)](https://daily.dev/posts/new-in-symfony-8-2-performance-improvements-symfony-blog--ef0ps6tns) · Symfony · 4 upvotes · 0 comments

---

Tags: [#php](https://daily.dev/tags/php), [#symfony](https://daily.dev/tags/symfony), [#vite](https://daily.dev/tags/vite)

[View this post on daily.dev](https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Symfony Reprise 0.8.0 released (Symfony Blog)","url":"https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy"},"datePublished":"2026-08-19T14:45:38.946Z","dateModified":"2026-09-14T06:30:48.647Z","description":"Reprise 0.8.0, the Symfony bundler integration layer replacing Encore, adds a per-entry hash option so copied files can keep a stable path on disk instead of...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/327b244859fddae8f3a20d0225898aa0?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/327b244859fddae8f3a20d0225898aa0?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Symfony","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Symfony","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/cc07051b7112472f9729e73c14660a64","url":"https://daily.dev/sources/symfony"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"php,symfony,vite","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Symfony","item":"https://daily.dev/sources/symfony"},{"@type":"ListItem","position":3,"name":"Symfony Reprise 0.8.0 released (Symfony Blog)"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/symfony-reprise-0-8-0-released-symfony-blog--qitunsyoy#faq","mainEntity":[{"@type":"Question","name":"How do I make Reprise keep a copied file at a fixed path instead of hashing the filename, like Encore did?","acceptedAnswer":{"@type":"Answer","text":"Set hash: false on a copy entry in the Reprise plugin config for Vite or Rsbuild. The file then lands at its original logical path, such as public/build/images/logo.svg, and the content hash moves into the manifest.json value as a query string instead of the filename, so asset() still returns a versioned URL. This restores an Encore copyFiles() behavior that templates, PHP code, and CDN rules often depend on. Track breaking changes like this on daily.dev when migrating asset pipelines from Encore to Reprise."}},{"@type":"Question","name":"Why does asset() in Twig fail to resolve a font file when using Rsbuild but work fine with Vite?","acceptedAnswer":{"@type":"Answer","text":"Rsbuild's manifest previously kept the query string or fragment from a CSS url() reference, writing a key like build/fonts/query.woff2?v=1, while Vite stripped it to build/fonts/query.woff2. Since asset('fonts/query.woff2') in Twig looks up the stripped key, only the Rsbuild-built version failed to match. Reprise 0.8.0 fixes this by stripping the query string and fragment from Rsbuild manifest keys too. Debugging asset manifest mismatches across bundlers is easier with fixes like this tracked on daily.dev."}},{"@type":"Question","name":"Why was Corepack removed from Node.js and what replaces it in CI for installing pnpm?","acceptedAnswer":{"@type":"Answer","text":"Node.js stopped shipping Corepack starting in version 25 after the Node.js TSC voted to stop distributing it. It was also a slower path to pnpm because every command ran through a Node.js shim that had to resolve and download the package manager first. Projects like Symfony Reprise and Symfony UX now use the pnpm/setup GitHub Action, which installs the standalone pnpm binary and Node.js in one step. Developers updating CI pipelines after tooling removals like Corepack can follow changes like this on daily.dev."}}]}
```

