# Next.js

Next.js è un framework per applicazioni web open source, sviluppato da Vercel - che ne detiene i diritti - e da una comunità di collaboratori individuali, che consente sia la generazione di pagine statiche che il rendering automatico a lato server.
Next.js è basato sulla libreria per JavaScript React e utilizza Node.js come ambiente di runtime. Supporta linguaggi come TypeScript e Sass.
È uno dei framework per applicazioni web più popolari nell'industria.

## Caratteristiche Principali

Next.js si distingue dagli altri framework web per diverse ragioni.
Il Server-Side Rendering (SSR, rendering lato server) di Next.js permette un caricamento più veloce delle pagine e l'esecuzione di processi privati da parte del server.
La capacità di generare pagine statiche durante la fase di compilazione (Static Site Generation, SSG) consente inoltre al framework di ottimizzare ulteriormente le prestazioni di distribuzione di siti web attraverso CDN.
Il sistema di routing dinamico di Next.js è basato su pagina, semplificandone il funzionamento e rimuovendo la necessità di librerie aggiuntive.
Next.js supporta il HMR (Hot Module Replacement), consentendo agli sviluppatori di visualizzare le modifiche in tempo reale senza dover ricaricare l'intera pagina.
Infine, essendo basato su React.js, Next.js sfrutta il vasto ecosistema di librerie e componenti di React.

## Storia

Next.js fu rilasciato inizialmente come progetto open-source su GitHub il 25 ottobre 2016. Era basato principalmente su sei principi: funzionalità pronte all'uso senza installazioni, uso completo di JavaScript, tutte le funzioni scritte in JavaScript, server-rendering e suddivisone del codice automatici, data-fetching configurabile, richieste anticipate, sviluppo semplificato.
Dalla prima pubblicazione vennero poi implementati aggiornamenti con cadenza annuale. Aggiornamento degno di nota fu Next.js 13, pubblicato il 26 ottobre 2022, che portò un nuovo pattern per il routing in beta, con l'aggiunta di App Router e il supporto ai layout, React Server Components, lo streaming e un nuovo set di metodi per il data-fetching. A questo si aggiunse l'annuncio di nuovi strumenti per lo sviluppo front-end chiamato Turbo, incluso Turbopack come successore di Webpack, Turborepo per sistemi di build incrementale.

### Versioni

Di seguito una lista non completa delle versioni pubblicate con indicazione in grassetto delle major release.
| Versione | Data di pubblicazione | Cambiamenti |
| 1.0.0 | 25 ottobre 2016 | Versione pubblica iniziale. |
| 2.0.0 | marzo 2017 | |
| 7.0.0 | settembre 2018 | Aggiunto il supporto per l'API React Context, miglioramenti alla gestione degli errori, aggiunto Webpack 4. |
| 8.0.0 | 11 febbraio 2019 | Distribuzione serverless delle app, con codice suddiviso in funzioni lamda avviate su richiesta. Ridotto il tempo per le esportazioni statiche e migliorate le performance di pre-fetch. |
| 9.0.0 | 8 luglio 2019 | Supporto a TypeScript automatico, routing file-based, |
| 9.3.0 | 9 marzo 2020 | Supporto a Sass e moduli CSS. |
| 9.5.0 | 27 luglio 2020 | Aggiunta il supporto alla rigenerazione statica, riscrittura e reindirizzamento incrementale. |
| 10.0.0 | 27 ottobre 2020 | Supporto a React 17, ottimizzazione automatica delle immagini, supporto all'importazione CSS di terze parti tramite npm. |
| 11.0.0 | 15 giugno 2021 | Aggiunto il supporto a Webpack 5, la funzionalità in anteprima "Next.js Live" per lo sviluppo real-time collaborativo, una funzione sperimentale per la conversione e migrazione automatica da Create React App a Next.js. |
| 12.0.0 | 26 ottobre 2021 | Aggiunto il compiler Rust, supporto AVIF, funzioni Edge e Middleware, importazione nativa ESM & URL. Supporto a React 18, |
| 13.0.0 | 26 ottobre 2022 | Aggiunto un nuovo pattern in beta per il routing, con App Router e supporto ai layouts, React Server Components, streaming e un nuovo set di metodi per il data-fetching. Annunciato un nuovo set di strumenti per lo sviluppo front-end chiamato Turbo, con Turbopack in sostituzione di Webpack e Turborepo per sistemi di build incrementali. |
| 13.1.0 | 22 dicembre 2022 | |
| 13.2.0 | 23 febbraio 2023 | |
| 13.3.0 | 6 aprile 2023 | |
| 13.4.0 | 4 maggio 2023 | Versione stabile di App Router per l'uso in produzione. |
| 13.5.0 | 19 settembre 2023 | |
| 14.0.0 | 26 ottobre 2023 | Migliorata la gestione della memoria. |
| 14.1.0 | 18 gennaio 2024 | |
| 14.2.0 | 11 aprile 2024 | |
| 15.0.0 | 21 ottobre 2024 | Supporto a React 19, miglioramenti a Turbopack, aggiunta API per l'osservazione della life-cycle, miglioramenti ai form HTML per la navigazione lato client, supporto TypeScript per il file di configurazione, supporto a ESLint 9. |
| 15.1.0 | 10 dicembre 2024 | |