Pourquoi migrer un SPA qui marche
Un SPA React fluide, ça marche — mais pour un site qui vit de l'organique, c'est un
cauchemar SEO (HTML vide pour Googlebot). La question : garder la fluidité tout en
servant du HTML que Google adore ? Symfony + Turbo.
Le principe de Turbo
Turbo intercepte les clics et soumissions, fait la requête en arrière-plan, et remplace
 le <body> sans recharger. Sensation de SPA, mais chaque URL renvoie un HTML complet
 rendu serveur.
composer require symfony/ux-turbo

// assets/app.js import '@hotwired/turbo';
Turbo s'active automatiquement.
Migration progressive
On ne réécrit pas tout d'un coup :
  1. Routes serveur d'abord — recréer chaque vue en route Symfony + Twig.
  2. Turbo par-dessus — navigation instantanée sans effort.
  3. Îlots React là où c'est utile — le quiz interactif reste en React, embarqué
    dans une page Twig.
<div class="prose">{{ content|raw }}</div>
{{ react_component('QuizApp', { matiere: matiere, serie: serie }) }}

Ce qu'on gagne
  • SEO natif : chaque page est du HTML complet, indexable immédiatement.
  • Performance perçue : navigation quasi instantanée.
  • Simplicité : plus de gestion d'état client lourde pour du contenu statique.
Le verdict
Pour un site de contenu qui doit ranker, Symfony + Turbo bat un SPA React sur les
 critères qui comptent. React reste excellent — pour des applications, pas pour des
 sites de contenu.