veilletech.fr
14 oct. Feed du jour
#05 LARAVEL Article

Inertia 3.9 : plus de page protégée au bouton retour

Se déconnecter, c'est aussi oublier ce qu'on avait préchargé.

Inertia 3.9 corrige un cas où le bouton retour réaffichait une page protégée après la déconnexion, le cache de préchargement n'étant pas vidé avec l'historique. Elle ajoute aussi l'option background (throttle, pause, continue) au polling et une propriété type à l'événement navigate.

2 min de lectureintermédiairevidéo 1:19
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Interrompre le polling en arrière-plan
  3. Savoir d'où vient une navigation
  4. Autres correctifs
  5. Comment s'y prendre
  6. À retenir

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
JavaScript
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 :

JavaScript
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

Comment s'y prendre

Source : Pause Polling in Background Tabs in Inertia.js v3.9, Laravel News, 12 octobre 2026 ; notes de version : inertiajs/inertia v3.9.0.