v133 · network / connectivity

Migration Checklist

Chrome 133 removed the legacy 5-minute grace period for <link rel=prefetch>. Work through this checklist to audit your site's prefetch usage and ensure correct Cache-Control headers.

checking prefetch support…
0 / 9 items completed

Live prefetch probe

Prefetch a URL and check reuse behavior

This simulates what happens when you prefetch a resource and immediately navigate. Chrome 133 respects Cache-Control headers instead of the old 5-minute bypass.

', type: 'info' }, { title: 'Test on staging before deploying', detail: 'Use Chrome 133+ to QA all pages that use prefetch. Pay attention to logged-in states, CSRF tokens, and personalized content — these often have no-cache or short max-age and were silently served from the 5-min cache before.', type: 'breaking' } ]; const COLORS = { breaking: '⚠', action: '→', info: 'ℹ' }; const container = document.getElementById('checklist'); const checks = []; ITEMS.forEach((item, i) => { const div = document.createElement('div'); div.className = 'check-item'; const cb = document.createElement('input'); cb.type = 'checkbox'; cb.id = 'chk_' + i; const body = document.createElement('div'); body.className = 'check-body'; body.innerHTML = `
${COLORS[item.type]} ${item.title} ${item.type}
${item.detail}
`; div.appendChild(cb); div.appendChild(body); div.addEventListener('click', (e) => { if (e.target !== cb) cb.checked = !cb.checked; div.classList.toggle('checked', cb.checked); updateProgress(); }); container.appendChild(div); checks.push(cb); }); function updateProgress() { const done = checks.filter(c => c.checked).length; const pct = (done / checks.length) * 100; document.getElementById('progressFill').style.width = pct + '%'; document.getElementById('progressLabel').textContent = `${done} / ${checks.length} items completed`; } document.getElementById('resetBtn').addEventListener('click', () => { checks.forEach(c => { c.checked = false; c.closest('.check-item').classList.remove('checked'); }); updateProgress(); }); document.getElementById('prefetchBtn').addEventListener('click', () => { const url = location.href + '?prefetch-probe=' + Date.now(); const link = document.createElement('link'); link.rel = 'prefetch'; link.href = url; document.head.appendChild(link); const result = document.getElementById('prefetchResult'); result.textContent = `Injected: \nChrome 133: will re-fetch on use if Cache-Control: no-cache\nOld Chrome: would serve from 5-min bypass cache`; link.addEventListener('load', () => { result.textContent += '\nPrefetch load event fired ✓'; }); link.addEventListener('error', () => { result.textContent += '\nPrefetch error event fired'; }); }); })();