Performance: Router cache on client
MEDIUM IMPACT
This affects page load speed and interaction responsiveness by reducing network requests and speeding up navigation.
import { useRouter } from 'next/router'; import { useState, useEffect } from 'react'; const cache = new Map(); function Page() { const router = useRouter(); const [pageData, setPageData] = useState(null); async function goToAbout() { if (cache.has('/about')) { setPageData(cache.get('/about')); } else { const res = await fetch('/about-data.json'); const data = await res.json(); cache.set('/about', data); setPageData(data); } router.push('/about'); } return <button onClick={goToAbout}>About</button>; }
import { useRouter } from 'next/router'; function Page() { const router = useRouter(); function goToAbout() { router.push('/about'); // no caching, fetches fresh data every time } return <button onClick={goToAbout}>About</button>; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No client cache | High (new nodes on each page) | Multiple per navigation | High due to full repaint | [X] Bad |
| With client cache | Low (reuse nodes/data) | Single or none | Low due to partial repaint | [OK] Good |