Retour au blog
Astro JSPerformanceToulon

Astro View Transitions : le détail qui change tout

Le constat depuis mon bureau à Toulon

J’ai longtemps cherché comment donner une sensation « SPA » à un site statique sans embarquer de framework client. Quand Astro a sorti les View Transitions, j’ai immédiatement voulu les utiliser sur un projet vitrine à Toulon.

Le résultat m’a surpris — dans le bon et le mauvais sens.

transition:persist : la directive qu’il faut comprendre

La plupart des tutos montrent <ViewTransitions /> dans le <head> et s’arrêtent là. En réalité, le vrai pouvoir est dans transition:persist. Cette directive garde un élément vivant entre les navigations.

<audio id="player" transition:persist>
  <source src="/ambient.mp3" type="audio/mp3" />
</audio>

Sans transition:persist, l’audio redémarre à chaque changement de page. Avec, il continue de jouer.

Ce que j’ai mesuré

MétriqueSans View TransitionsAvec View TransitionsDelta
LCP (ms)820640-22%
CLS0.120.03-75%
JS côté client (KB)03.2+3.2 KB
Sensation de fluiditéPage blancheTransition douceQualitatif

Le CLS est le gain le plus marquant. Les transitions masquent le flash blanc entre les pages, ce qui élimine les décalages de layout perçus.

Le piège que j’ai rencontré

Sur un composant avec un setInterval à l’intérieur, transition:persist ne nettoie pas le timer. Résultat : après 5 navigations, j’avais 5 intervals empilés.

La solution :

document.addEventListener('astro:before-swap', () => {
  clearInterval(window.__myTimer);
});

« La simplicité est la sophistication suprême. » — Léonard de Vinci. C’est exactement ce que j’essaie d’appliquer quand je choisis Astro pour un projet : le minimum de JS, le maximum d’impact.

Mon avis

Je trouve que les View Transitions d’Astro représentent le meilleur compromis entre performance et expérience utilisateur en 2026. Pour mes clients à Toulon qui veulent un site rapide sans React côté client, c’est devenu mon choix par défaut.

Si vous voulez en savoir plus sur mon approche, jetez un oeil à ma page Astro JS, mes projets réalisés ou contactez-moi directement.

Paiement au résultat