Cinque anni fa, “la piattaforma web” significava un <div> e un fetch. Nel 2026 significa un runtime con capacità grafiche, programmabile sulla GPU, consapevole del file system, multiprocessore con una libreria di componenti più ricca della maggior parte dei sistemi operativi del 2015. Le funzionalità sotto hanno raggiunto tutte il punto di “usala in produzione senza polyfill” — e cambiano cosa può essere un’app web.
View Transitions API
La singola vittoria UX più grande degli ultimi anni. Le View Transitions ti permettono di animare tra stati del DOM con una chiamata di funzione, e il browser gestisce l’interpolazione per te.
// Prima: istantaneo, brusco
document.body.innerHTML = newHTML;
// Dopo: dissolvenza incrociata fluida
document.startViewTransition(() => {
document.body.innerHTML = newHTML;
});
Ecco fatto. Il browser cattura lo stato vecchio, applica il nuovo e fa una dissolvenza incrociata. Con qualche riga di CSS puoi animare singoli elementi (la transizione dell’elemento condiviso):
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 0.3s;
}
::view-transition-old(.card),
::view-transition-new(.card) {
animation-duration: 0.4s;
}
Funziona per SPA (cambi di rotta), MPA (caricamenti di pagina completi, con un tag meta e navigazione same-origin), e le transizioni del router Vue/React/Svelte. Il supporto del browser ha raggiunto la stabilità cross-browser nel 2024 ed è ora il modo consigliato per gestire le transizioni di pagina in una nuova app. L’ultima volta che ho scritto un’animazione FLIP a mano, la specifica delle View Transitions era una bozza.
Popover API
Il popover, il dialog e l’elemento <select> sono sempre stati un disastro di trappole di focus, gestione del tasto escape, comportamento di light-dismiss e ARIA. L’API Popover standardizza tutto questo.
<button popovertarget="menu">Apri menu</button>
<ul id="menu" popover>
<li>Taglia</li>
<li>Copia</li>
<li>Incolla</li>
</ul>
Questo è un menu popover completamente accessibile, nel top-layer, con light-dismiss, chiusura con tasto escape. Nessun JavaScript. Nessuna guerra di z-index. L’attributo popover mette l’elemento nel top layer del browser (sopra tutti gli altri contenuti, inclusi i dialog modal da altri componenti), e il browser gestisce automaticamente focus, escape e comportamento di click esterno.
Tre modalità:
popover(auto) — light dismiss, più popovers possono essere aperti.popover="manual"— apertura/chiusura solo programmatica, nessun light dismiss.<dialog>— modal, con backdrop, blocca il focus, richiede chiusura esplicita.
Per dropdown, tooltip, menu azioni e selettori: popover. Per dialog modal che bloccano l’interazione: <dialog>. Smetti di costruire dropdown con position: absolute e un ascoltatore di click esterno — è il pattern del 2019.
WebGPU compute shader
WebGPU è “quasi pronto” dal 2023, ma lo scenario dei compute shader è maturato solo nel 2025. Ora puoi eseguire calcoli GPU arbitrari nel browser, su ogni sistema operativo moderno, con un’API sensata.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shader = device.createShaderModule({ code: computeWGSL });
const pipeline = await device.createComputePipeline({ layout: 'auto', compute: { module: shader, entryPoint: 'main' } });
// ... bind buffer, dispatch, leggi risultati
Cosa puoi farci:
- Strumenti dev. Un testatore regex che esegue milioni di match sulla GPU. Un formattatore JSON che analizza un file da 500MB in 200ms. Uno strumento diff che confronta due file da 100MB in meno di un secondo.
- App local-first. Elaborazione immagini, transcodifica video, inferenza ML — tutto nel browser, nessun server.
- Visualizzazione. Qualsiasi cosa che prima era “sarebbe a 60fps se potessi metterla sulla GPU” ora può essere sulla GPU.
WebGPU richiede HTTPS in produzione (l’API è bloccata su un contesto sicuro, come crypto.subtle). Richiede anche un browser recente e una GPU reale — il fallback a WebGL2 o un percorso solo JS è ancora necessario per hardware vecchio.
File System Access API
L’API File ti dà uno snapshot di un file che l’utente ha trascinato. L’API File System Access ti dà un handle live che puoi leggere e su cui puoi riscrivere.
const handle = await window.showSaveFilePicker({
suggestedName: 'config.json',
types: [{ description: 'JSON', accept: { 'application/json': ['.json'] } }],
});
const writable = await handle.createWritable();
await writable.write(JSON.stringify(data, null, 2));
await writable.close();
Puoi anche riaprire un file, ottenere un FileSystemFileHandle e continuare a usarlo tra sessioni con IndexedDB (l’handle è serializzabile). Per gli strumenti dev, questa è la differenza tra “scarica un file dopo ogni modifica” e “modifica sul posto”.
Supporto del browser: Chrome e Edge dal 2023, Safari e Firefox dal 2025. Per browser non supportati, torna a Blob e <a download> — la funzionalità si rileva in modo pulito.
CSS subgrid
display: grid è stato il singolo miglioramento di layout più grande in un decennio. subgrid è il secondo più grande. Permette a un elemento grid di partecipare alla griglia del suo genitore:
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.card {
display: grid;
grid-template-rows: subgrid;
grid-row: span 3;
}
Ora ogni card ha un’intestazione, un corpo e un piè di pagina di altezza identica, senza hack con flexbox o numeri magici. Subgrid è arrivato in tutti e tre i motori nel 2023-2024 ed è sicuro da usare senza fallback.
La lezione pratica
Se hai iniziato lo sviluppo web negli ultimi anni, potresti non aver notato quanto è cambiata la piattaforma. Il riflesso “usa una libreria per tutto” — animazioni, dropdown, selettori di file, modal, persino layout — è sempre più obsoleto. Il nativo è più veloce, più piccolo, più accessibile e meno probabile che si rompa in un aggiornamento del framework.
La prossima volta che stai per fare npm install per un pacchetto da 50KB per un problema che il browser può risolvere in 20 righe di HTML, controlla prima la piattaforma. La risposta è sempre più “sì, il browser fa quello”.
Un modo veloce per testare: ogni strumento su DevSpeedTools funziona interamente lato client usando le stesse funzionalità della piattaforma (Web Crypto, File System Access, l’API Popover, CSS subgrid). Se puoi costruire un formattatore JSON con zero dipendenze npm, puoi costruire la maggior parte delle cose.