Next.js-begrepp förklarade
Rendering, hydration, App Router, Server Components och fler begrepp från Next.js förklarade på svenska, samlade på en sida.
Next.js har ett eget ordförråd. Rendering, hydration, App Router, server actions: begreppen dyker upp i dokumentationen, i felmeddelanden och i varje diskussion om ramverket, och de hänger ihop mer än man först anar. Den här sidan samlar termerna på ett ställe så att du slipper hoppa mellan lösryckta definitioner.
Kärnan i det mesta är rendering, alltså var och när din kod blir HTML. Valet mellan server-rendering, statisk generering och klientrendering styr både prestanda och synlighet i sökmotorer, och många av begreppen nedan beskriver varianter eller konsekvenser av det valet. Läs i ordning om du är ny, eller hoppa direkt till termen du letar efter.
Rendering
Processen där kod och data omvandlas till färdig HTML som webbläsaren kan visa. När och var renderingen sker påverkar både prestanda och SEO.
Rendering är processen där din kod och dina data omvandlas till HTML som webbläsaren kan visa. I ett Next.js-projekt händer rendering antingen på servern, i webbläsaren, eller vid byggtillfället — och kombinationen påverkar hur snabbt sidan visas och hur sökmotorer uppfattar den.
Valet av renderingsstrategi är ett av de viktigaste besluten när du sätter upp ett Next.js-projekt. Server-rendering och statisk generering ger sökmotorer bättre förutsättningar att indexera innehållet, medan klientrendering passar interaktiva delar där SEO spelar mindre roll.
Next.js låter dig blanda strategier per sida och per komponent. En produktsida kan vara statiskt genererad för snabbhet, medan priset hämtas live med server-rendering, och varukorgen är klientrenderad. Förståelsen för rendering är nyckeln till att göra rätt avvägningar.
Relaterade begrepp
Se även
Server-rendering (SSR)
Sidan byggs på servern vid varje förfrågan och skickas som färdig HTML. Passar innehåll som ändras ofta och behöver synas för sökmotorer.
Med server-rendering genereras sidan på servern varje gång en besökare öppnar den. Det innebär att besökaren alltid får aktuellt innehåll, och att sökmotorer ser en komplett sida snarare än en tom HTML-stomme.
SSR passar bäst för sidor med innehåll som förändras ofta, till exempel nyhetssidor, dashboards eller e-handelskataloger med realtidspriser. Nackdelen är att varje förfrågan kräver serverarbete, vilket ställer högre krav på serverns kapacitet jämfört med att servera statiska filer.
I Next.js App Router är det enkelt att göra en komponent server-renderad: hämta data med await direkt i komponenten, utan useEffect eller fetch på klienten. Next.js sköter kommunikationen med servern.
Klientrendering (CSR)
Webbläsaren får en näst intill tom sida och bygger innehållet med JavaScript efter laddning. Vanligt i traditionella React-appar utan ramverk.
Vid klientrendering skickar servern en näst intill tom HTML-sida och låter webbläsaren bygga upp innehållet med JavaScript. Användaren ser en laddningsindikator tills JavaScript är hämtat och kört.
Klientrendering passar interaktiva delar av en app där innehållet inte behöver indexeras av sökmotorer, till exempel en inloggad dashboard med personliga data. I Next.js väljer du klientrendering per komponent med 'use client' direktivet.
Fördelen är att sidan efter initial laddning kan uppdatera sig utan att ladda om, vilket ger en applikationsliknande känsla. Nackdelen är sämre SEO och längre tid till synligt innehåll (First Contentful Paint) jämfört med server-rendering.
Statisk generering (SSG)
Sidorna byggs en gång vid byggtillfället och serveras som färdiga filer. Mycket snabbt och passar innehåll som sällan ändras.
Statisk generering innebär att Next.js bygger alla sidor vid byggtillfället och sparar dem som färdiga HTML-filer. När en besökare öppnar sidan levereras den direkt från en CDN utan att servern behöver göra något arbete.
Det ger extremt snabba laddningstider och god SEO. Metoden passar bäst för innehåll som sällan ändras, till exempel en dokumentationssajt, en blogg eller en marknadsföringssida.
Om innehållet behöver uppdateras utan att hela sajten byggs om på nytt, är inkrementell statisk regenerering (ISR) ett bättre alternativ. Next.js bestämmer automatiskt att en sida är statisk om den inte hämtar dynamisk data — ingen konfiguration krävs.
Relaterade begrepp
Inkrementell statisk regenerering (ISR)
Statiska sidor som byggs om i bakgrunden med jämna mellanrum, så att innehållet kan uppdateras utan en helt ny build.
Inkrementell statisk regenerering kombinerar fördelarna med statisk generering och server-rendering. Sidor byggs som statiska filer men kan regenereras i bakgrunden med ett konfigurerbart tidsintervall utan att ett helt nytt bygge triggas.
När en besökare öppnar en sida vars giltighetstid gått ut, serveras den gamla versionen direkt medan en ny version byggs i bakgrunden. Nästa besökare ser den uppdaterade sidan. ISR passar tjänster som behöver relativt färsk data men inte realtidsuppdateringar, till exempel en produktkatalog eller en nyhetssajt.
I Next.js konfigureras ISR via revalidate-alternativet i fetch-anropet eller i routekonfigurationen. Next.js 15 introducerade också on-demand revalidation via revalidatePath och revalidateTag, som triggar ombyggnad direkt när data förändras.
Relaterade begrepp
Se även
Hydration
Steget där React kopplar interaktivitet till den HTML som servern redan skickat. Innan hydration syns sidan men knappar och formulär svarar inte än.
Hydration är steget som sker efter att servern skickat sin HTML till webbläsaren. React kör sin JavaScript-kod och kopplar interaktivitet — händelsehanterare, state, formulär — till de element som redan visas.
Innan hydration är klar ser sidan rätt ut men svarar inte på klick. I Next.js sker hydration automatiskt och är vanligtvis snabb, men tunga klientkomponenter kan fördröja den och ge en period där sidan ser interaktiv ut men inte är det.
React 18 och Next.js App Router introducerar selektiv hydration via Suspense: delar av sidan kan bli interaktiva innan hela sidan laddats ner, vilket förbättrar upplevd responstid markant.
Relaterade begrepp
Server Components (RSC)
React-komponenter som körs enbart på servern och aldrig skickar sin JavaScript till webbläsaren. Standard i App Router och håller nere mängden klientkod.
React Server Components är komponenter som körs enbart på servern och aldrig skickar sin JavaScript-kod till webbläsaren. Det minskar mängden kod besökaren behöver ladda ner och köra, vilket förbättrar prestandan.
Server components kan läsa direkt från en databas eller ett filsystem utan att gå via ett API. De kan inte använda state, hooks, eller webbläsar-API:er — allt det hanteras av klientkomponenter.
I Next.js App Router är alla komponenter server components som standard. Du väljer aktivt att göra en komponent till en klientkomponent med 'use client' direktivet längst upp i filen, när du behöver interaktivitet eller webbläsar-API:er.
Relaterade begrepp
Se även
App Router
Next.js nyare routingsystem baserat på mappen app/, med stöd för server components, delade layouter och streaming.
App Router är Next.js routingsystem sedan version 13, baserat på mappen app/ i projektroten. Det introducerade server components som standard, stöd för delade layouter som inte renderas om vid sidnavigering, och streaming av sidinnehåll.
Filstrukturen i app/ styr direkt vilka routes som finns: en fil på app/om/page.js skapar routen /om. Speciella filer som layout.js, loading.js och error.js ger extra kontroll utan att du behöver konfigurera något.
App Router är den rekommenderade vägen för nya Next.js-projekt. Pages Router finns kvar och stöds parallellt, men får inga nya funktioner.
Relaterade begrepp
Se även
Pages Router
Next.js äldre routingsystem baserat på mappen pages/. Fungerar fortfarande, men nya projekt bör välja App Router.
Pages Router är Next.js ursprungliga routingsystem, baserat på mappen pages/. Varje fil i pages/ svarar mot en URL: pages/om.js ger routen /om.
Det fungerar fortfarande och har ett stort ekosystem av tutorials och paket skrivna för det. Nya projekt bör välja App Router, men befintliga projekt som använder Pages Router behöver inte migreras.
De två systemen kan samexistera i samma Next.js-projekt under en migreringsperiod. Pages Router använder getServerSideProps och getStaticProps för datahämtning, i stället för App Routerns direkta async/await i komponenter.
Relaterade begrepp
Route handler
En funktion i App Router som svarar på HTTP-förfrågningar, till exempel ett API-anrop. Motsvarar det som tidigare hette API-routes.
Route handlers är funktioner i App Router som svarar på HTTP-förfrågningar till en specifik URL. Du skapar en fil på app/api/[endpoint]/route.js och exporterar namngivna funktioner för de HTTP-metoder du vill stödja — GET, POST, PUT, DELETE.
Route handlers passar för att bygga ett API som din frontend anropar, för webhooks från externa tjänster, eller för operationer som behöver köras på servern men inte passar som server actions.
Till skillnad från server actions returnerar route handlers ett explicit HTTP-svar med status och headers, vilket gör dem rätt val när du behöver kontrollera svarsformatet exakt eller exponera ett API för externa system.
Relaterade begrepp
Server action
En funktion som körs på servern men anropas direkt från en komponent, ofta för att hantera formulär och dataändringar utan ett separat API.
Server actions är funktioner som körs på servern men anropas direkt från en komponent utan att du behöver skriva ett separat API-lager. Du markerar en funktion med 'use server' och anropar den som vilken funktion som helst i din komponent, typiskt i ett formulärs action-attribut.
Next.js sköter kommunikationen i bakgrunden via en POST-förfrågan. Server actions passar utmärkt för formulärhantering, dataändringar och operationer som kräver serveråtkomst.
De samarbetar naturligt med Reacts optimistiska uppdateringsmönster via useOptimistic, och med revalidatePath för att uppdatera cachad data efter en mutation.
Relaterade begrepp
Se även
Middleware
Kod som körs innan en förfrågan når sidan, till exempel för omdirigeringar, språkval eller behörighetskontroll.
Middleware i Next.js är kod som körs innan en förfrågan når sin destination — sida, route handler eller statisk fil. Du skapar en fil middleware.js i projektroten och exporterar en funktion som tar emot förfrågan och kan svara, omdirigera eller vidarebefordra.
Vanliga användningsområden är autentiseringskontroll, A/B-testning, geografisk anpassning av innehåll och rewriting av URL:er. Middleware kan också sätta headers och cookies för alla förfrågningar utan att du ändrar varje enskild sida.
Middleware körs på edge-runtime vilket gör den mycket snabb men begränsar tillgängliga Node.js-API:er. Tunga operationer som databasfrågor hör inte hemma i middleware.
Streaming
Servern skickar delar av sidan efterhand som de blir klara, så att besökaren ser innehåll snabbare i stället för att vänta på hela sidan.
Streaming innebär att servern skickar delar av sidan till webbläsaren efterhand som de blir färdiga, i stället för att vänta tills hela sidan är klar. Besökaren ser ett skelett eller laddningsindikator omedelbart, och innehållet dyker upp allt eftersom.
I Next.js App Router aktiveras streaming via React Suspense: du omsluter en komponent med <Suspense fallback={<Laddning />}> och Next.js streamar ut innehållet när det är redo.
Det förbättrar upplevd laddningstid markant för sidor som hämtar data från långsamma källor. En sida med tre datakällor kan visa varje sektion så snart dess data är klar, i stället för att vänta tills alla tre är färdiga.
Relaterade begrepp
Autentisering
Processen att verifiera vem en användare är, typiskt via inloggning med e-post och lösenord, eller via en tredjepartstjänst.
Autentisering i Next.js hanteras vanligtvis av ett bibliotek som Auth.js (tidigare NextAuth.js), som stödjer inloggning via Google, GitHub, e-post och lösenord, och magic links. Biblioteket sköter sessionshantering, CSRF-skydd och cookieinställningar.
Auth.js integreras med App Router via en route handler och middleware som skyddar specifika routes. Alternativ som Clerk och Lucia erbjuder liknande funktionalitet med olika avvägningar mellan enkelhet och kontroll.
Autentisering svarar på frågan 'vem är du?' och auktorisering svarar på 'vad får du göra?' De två hänger ihop men är separata bekymmer. Middleware är rätt ställe att kontrollera om en användare är inloggad och omdirigera om inte.
Relaterade begrepp
Bildoptimering
Att leverera bilder i rätt format, storlek och kvalitet för att minska laddningstid utan att offra visuell kvalitet.
Next.js Image-komponent hanterar bildoptimering automatiskt: den konverterar bilder till moderna format som WebP och AVIF, genererar varianter i olika storlekar för responsiv leverans och skjuter upp laddning av bilder utanför vykorgen (lazy loading).
Du anger de dimensioner du vill ha och Next.js beräknar rätt bildstorlek för varje enhet. För externa bilder behöver du lägga till domänen i next.config.js under images.remotePatterns.
Optimerade bilder påverkar Core Web Vitals direkt — Largest Contentful Paint mäter hur snabbt sidans tyngsta synliga element är synligt, och det är ofta en bild. Att använda next/image i stället för vanlig img-tagg är ett av de enklaste sätten att förbättra LCP.
Relaterade begrepp
Edge runtime
En lättviktsmiljö för serverfunktioner som körs i nätverkets kant, nära besökaren, i stället för i ett centralt datacenter.
Edge runtime kör JavaScript-kod nära användaren geografiskt — i hundratals platser runt om i världen i stället för i ett enda datacenter. Det ger extremt låg latens för enkla operationer som omdirigeringar, A/B-tester och autentiseringskontroller.
I Next.js kan middleware och route handlers köras i edge runtime via 'export const runtime = "edge"'. Begränsningen är att edge runtime inte stödjer alla Node.js-API:er — tunga databasanslutningar och komplex filsystemsåtkomst fungerar inte.
Edge runtime är optimalt för lätta, latenskänsliga operationer. Tyngre logik som kräver fullständiga Node.js-API:er hör hemma i vanlig Node.js-runtime.
Relaterade begrepp
Error boundary
En React-mekanism som fångar fel i sin komponentträd och visar ett reservgränssnitt i stället för att krascha hela sidan.
Om en komponent kastar ett fel under rendering kraschar normalt hela React-trädet. Error boundaries bryter den effekten: fel inom trädet fångas av närmaste error boundary, som visar en felvy i stället för att ta ner hela sidan.
I Next.js App Router skapar du error boundaries med en speciell error.js-fil i en route-mapp. Next.js hanterar det underliggande React-mönstret åt dig — du behöver bara exportera en komponent som visas vid fel, med en reset-funktion för att försöka igen.
Error boundaries är viktiga för robusthet i produktionsappar. Kombinera med ett felrapporteringsverktyg som Sentry för att logga fel som fångas i produktion och få insyn i vad som faktiskt går fel för användarna.
Relaterade begrepp
generateStaticParams
En Next.js-funktion som talar om vilka dynamiska URL-parametrar som ska pre-renderas vid byggtillfället.
I ett Next.js-projekt med dynamiska routes, till exempel app/[slug]/page.js, behöver du berätta för Next.js vilka slugs som finns så att sidor kan pre-renderas. Det gör du via en exporterad generateStaticParams-funktion som returnerar en lista med alla möjliga parametervärden.
Next.js anropar denna funktion vid byggtillfället och genererar en statisk HTML-sida per kombination. Utan generateStaticParams renderas dynamiska sidor on demand i stället — vilket fungerar men saknar den omedelbara leveransen av en statisk fil.
För en blogg med hundratals inlägg pre-genereras alla inläggssidor vid bygge — besökaren får en statisk sida utan serverfördröjning. Funktionen kan hämta slugs från en databas eller ett CMS som en del av bygget.
Relaterade begrepp
Internationalisering (i18n)
Processen att förbereda och anpassa en applikation för flera språk och regioner.
Internationalisering, förkortat i18n (arton tecken mellan i och n), innebär att bygga appen så att text, datum, valutor och format kan anpassas per språk och region utan kodändringar. Lokalisering (l10n) är den faktiska översättningen och anpassningen.
I Next.js hanteras i18n via routing: olika URL-mönster som /en/about och /sv/om, eller via subdomäner. Middleware avgör vilket språk en besökare ska se baserat på deras webbläsarinställningar eller en vald preferens.
Bibliotek som next-intl och next-i18next hanterar översättningsnycklar, plural-former och locale-specifik formatering. De flesta stödjer statisk generering per locale, vilket ger pre-renderade sidor för varje kombination av route och språk.
Relaterade begrepp
Lazy loading
Teknik som skjuter upp laddning av resurser till dess de faktiskt behövs, till exempel bilder utanför vykorgen eller sällan använda komponenter.
Lazy loading förbättrar initial laddningstid genom att inte ladda allt direkt. Bilder nedanför viklinjen laddas inte förrän användaren scrollar dit. Tunga JavaScript-moduler laddas inte förrän en viss interaktion sker.
I Next.js är lazy loading inbyggt för bilder via Image-komponenten — loading='lazy' sätts automatiskt om du inte anger priority. För komponenter används dynamic() från next/dynamic som skapar en dynamisk import bundlern delar ut i ett separat chunk.
En modal, ett komplext diagram eller en kartkomponent som sällan används är typiska kandidater för dynamic(). Med ssr: false laddas komponenten bara i webbläsaren, vilket är nödvändigt för komponenter beroende av webbläsar-API:er.
Relaterade begrepp
Loading UI
Platshållarvy som visas medan en sida eller komponent hämtar data, implementerat via React Suspense i Next.js App Router.
I Next.js App Router skapar du en loading.js-fil i en route-mapp och den renderas automatiskt som Suspense-fallback medan sidan laddar data. Besökaren ser ett skelett eller laddningsindikator direkt, i stället för en blank sida eller inget alls.
Du kan också omsluta individuella delar av en sida med <Suspense fallback={<Skeleton />}> för mer granulär kontroll. Det låter snabba delar av sidan visas omedelbart medan långsamma delar laddas in.
Loading UI bör representera layouten på det faktiska innehållet — ett skelett med ungefärlig form sätter rätt förväntning och minskar layouthopp när riktigt innehåll dyker upp.
Metadata API
Next.js inbyggda system för att definiera sidspecifik metadata som title, description och Open Graph-taggar.
Next.js Metadata API ersätter den gamla next/head-komponenten med ett deklarativt system. Du exporterar ett metadata-objekt eller en generateMetadata-funktion från varje page.js eller layout.js, och Next.js sammanfogar metadata från layouthierarkin och genererar korrekta HTML-taggar automatiskt.
Det inkluderar title, description, Open Graph-taggar för sociala delningar, Twitter Cards, robots-direktiv och kanoniska URL:er. Metadata definierad i en sidas layout.js ärvs av alla undersidor och kan överskridas på sida-nivå.
Dynamisk metadata med generateMetadata körs på servern och kan hämta data — till exempel produktnamnet för en produktsidas title-tagg. Kör inte generateMetadata på klienten; den är alltid en asynkron serverfunktion.
Relaterade begrepp
Miljövariabler
Konfigurationsvärden som hålls utanför koden, till exempel API-nycklar och databasadresser, och kan skilja sig mellan miljöer.
Miljövariabler separerar konfiguration från kod: samma kodbas kan köras i development, staging och produktion med olika inställningar. I Next.js läggs de i .env.local (lokalt, ingår ej i git) och exponeras via process.env.
Variabler med NEXT_PUBLIC_-prefixet är tillgängliga i webbläsarkod — alla andra är bara tillgängliga på servern. Det är kritiskt att hemligheter som API-nycklar och databasuppgifter aldrig hamnar i NEXT_PUBLIC_-variabler eller committade till git.
Hosting-plattformar som Vercel och Railway låter dig ange miljövariabler direkt i deras gränssnitt, separerade per miljö (development, preview, production). .env.local-filen ingår alltid i .gitignore och ska aldrig committeras.
Relaterade begrepp
Se även
Prestandaoptimering
Arbetet med att göra en applikation snabbare, mer responsiv och mer resurseffektiv för slutanvändaren.
Prestandaoptimering i Next.js handlar om att minska vad webbläsaren behöver ladda och bearbeta. Rätt renderingsstrategi är grunden: statisk generering där möjligt, streaming för dataintensiva sidor.
Utöver strategin: bildoptimering via next/image, koddelning via dynamiska importer, cachning av fetch-anrop och att hålla klientbundeln liten genom att inte använda 'use client' i onödan. Varje komponent märkt 'use client' lägger JavaScript i klientbundeln.
Core Web Vitals är den praktiska mätskalan — LCP, INP och CLS. Chrome DevTools Lighthouse och Next.js inbyggda @next/bundle-analyzer ger konkreta mätvärden att förbättra. Mät först, optimera sedan.