Ce qui se passe
Inertia.js 3.9.0 corrige un défaut de confidentialité discret. Après une
déconnexion, router.clearHistory() (ou Inertia::clearHistory() côté
serveur) vidait les entrées d'historique chiffrées mais laissait le cache de
préchargement. Le bouton retour pouvait alors servir la visite depuis ce
cache et réafficher la page protégée, jusqu'à l'expiration de l'entrée.
Désormais, vider l'historique vide aussi le cache de préchargement, et une
requête de préchargement encore en vol n'y entre pas à son arrivée. La même
règle s'applique à router.flushAll() (PR #3307).
Interrompre le polling en arrière-plan
L'option background de usePoll() et router.poll() règle ce qui se passe
dans un onglet caché :
| Valeur | Comportement |
|---|---|
throttle |
défaut : une requête sur dix intervalles |
pause |
arrêt jusqu'au retour de l'onglet |
continue |
rythme normal |
import { usePoll } from '@inertiajs/vue3'
usePoll(10000, {}, { background: 'pause' })Avec pause, si une requête était due pendant que l'onglet était caché, elle
part dès qu'il redevient visible ; sinon elle attend la fin de l'intervalle. Les
allers-retours rapides entre onglets n'envoient donc pas une requête à chaque
passage. keepAlive est déprécié : background: 'continue' le remplace. Un
sondage lancé dans un onglet déjà caché tournait à plein régime jusqu'au
changement de visibilité : c'est corrigé.
Savoir d'où vient une navigation
L'événement navigate porte une propriété type : initial (premier
chargement, rechargement compris), visit (visite Inertia) ou history
(restauration par les boutons précédent ou suivant). Une page restaurée
affiche les props qu'elle avait au départ, qui peuvent être périmées :
import { router } from '@inertiajs/vue3'
router.on('navigate', (event) => {
if (event.detail.type === 'history') {
router.reload({ only: ['notifications'] })
}
})Un chargement complet restauré par le navigateur, après un retour depuis une
page non-Inertia par exemple, déclare aussi history.
Autres correctifs
- Un retour arrière pendant la résolution d'une réponse différée, d'un sondage ou d'un rechargement partiel laissait l'ancienne page affichée à l'URL restaurée ; une restauration annule désormais toute mise à jour en cours.
useRememberpouvait restaurer l'état d'une page précédente lors d'une nouvelle visite : une sélection effacée dans une page à onglets revenait.<InfiniteScroll>annule sa requête en vol au démontage et ignore les réponses déjà arrivées ; une navigation vers la même URL avec un autre tri fusionnait l'ancienne réponse dans la nouvelle liste.
Comment s'y prendre
- Passer à la 3.9 si votre application affiche des pages protégées ou des données personnelles.
- Mettre
background: 'pause'sur les sondages d'écrans qu'on laisse ouverts. - Sur les écrans sensibles, recharger les props concernées quand
typevauthistory.
Source : Pause Polling in Background Tabs in Inertia.js v3.9, Laravel News, 12 octobre 2026 ; notes de version : inertiajs/inertia v3.9.0.