ArtiklarGuiderVibe CodingVerktygResurserOmKontakt
← Alla artiklar

Headless CMS – innehåll utan design

Simon Nyström4 min läsning

Ett headless CMS separerar innehåll från presentation. Det låter dig skriva en gång och publicera överallt.

Modern webbutveckling – headless, API:er och Jamstack
Vad är Jamstack och varför används det?Hur webben fungerar – requests, responses och API:er3Headless CMS – innehåll utan design4Statiska sajt-generatorer – Next.js, Astro och andra5Deploy och hosting – från lokal kod till live-sajt6Git och versionskontroll – grunden för modernt arbetsflöde7Prestanda och SEO i moderna webbprojekt8Bygg ett modernt webbprojekt – från idé till deploy
← FöregåendeNästa →

Vad "headless" faktiskt betyder

Ett traditionellt CMS som WordPress är "coupled" – innehållet och presentationen är sammankopplade. WordPress vet hur dina inlägg ska se ut. Det äger templaerna, CSS:en, den visuella designen. "Huvudet" (frontend) och "kroppen" (backend/innehåll) är ett.

Ett headless CMS har inget huvud. Det hanterar bara innehållet – lagrar det, låter redaktörer redigera det, och exponerar det via ett API. Hur innehållet presenteras är inte CMS:ets sak. Det är din kod – din Next.js-app, din Astro-sajt, din mobilapp – som hämtar data via API och bestämmer hur det ser ut.

Det låter abstrakt men konsekvensen är konkret: du kan använda samma Sanity-databas som källa för en webbsajt, en iOS-app och ett nyhetsbrev. Skriver du ett inlägg i Sanity-editorn en gång visas det på alla tre ställen. Det är "write once, publish everywhere"-modellen.

De viktigaste alternativen 2026

Sanity

Sanity har vuxit kraftigt och är 2026 ett av de mer populära valen för nya projekt. Det använder ett eget frågespråk (GROQ) istället för GraphQL, vilket är ovanligt men faktiskt ganska elegant. Editorn (Sanity Studio) är en React-app du kan anpassa fullständigt och hosta var du vill – inklusive på din egen domän.

Styrkor: Extremt flexibelt schema, GROQ är kraftfullt, generöst gratisplan, bra real-time preview. Svagheter: GROQ kräver inlärning, och fullständig anpassning av Studio förutsätter React-kunskaper.

Contentful

Contentful är veteran i branschen och används av många större företag. Stöder REST och GraphQL. Har ett moget ekosystem med massor av integrationer. Gratisnivån är begränsad (5 användare, 2 miljöer, begränsad bandbredd) och betalplaner kan bli kostsamma snabbt om du skalas upp.

Styrkor: Stabilt, vältestat, bra SDK:er. Svagheter: Dyrare än konkurrenterna vid tillväxt, editorgränssnitt upplevs av vissa som föråldrat.

Strapi

Strapi är open source och självhostat – du kör det på din egen server (eller på Railway, Render, etc.). Det innebär full kontroll och ingen hosting-kostnad för CMS:et i sig, men du ansvarar för drift och uppdateringar. Strapi 5 (release 2024) moderniserade mycket av kodebasen. Stöder REST och GraphQL. Bra för team som vill ha kontroll och inte är rädda för en server att underhålla.

Styrkor: Open source, full kontroll, ingen vendor lock-in, aktiv community. Svagheter: Kräver serverdrift, skalning är ditt problem.

Storyblok

Storyblok kombinerar headless med visuell redigering – redaktörer ser en live-preview av sidan medan de redigerar, vilket är sällsynt bland headless CMS:er. Det gör det populärt för projekten där kunder och redaktörer behöver ett bekvämt gränssnitt. Component-baserat innehåll (kallat "bloks") passar bra för landningssidor och marknadsföringssajter.

Styrkor: Visuell editor, komponentbaserat, bra DX. Svagheter: Gratisnivå är begränsad, prissättning kan bli hög för stora sajter.

Directus

Directus är open source och tar ett annat grepp: det wrappar en befintlig SQL-databas (PostgreSQL, MySQL, SQLite) och genererar automatiskt ett API och ett admin-gränssnitt. Om du redan har en databas kan Directus bli ett CMS-lager ovanpå den. Bra för projekten som handlar mer om datahantering än traditionellt redaktionellt innehåll.

Styrkor: Fungerar med befintliga databaser, open source, flexibelt. Svagheter: Inte lika fokuserat på content-redaktörer som t.ex. Storyblok.

Jämförelsetabell

CMSHostingmodellAPIGratisnivåBäst för
SanitySaaS (cloud)GROQ + CDN-APIGenerös (3 användare, obegr. projekt)Flexibla content-modeller, developers
ContentfulSaaS (cloud)REST + GraphQLBegränsad (5 users, 2 locales)Enterprise, välkänd plattform
StrapiSelf-hosted / SaaSREST + GraphQLOpen source (self-host gratis)Full kontroll, tech-team
StoryblokSaaS (cloud)RESTBegränsad (1 user, 1 space)Visuell redigering, marknadsföring
DirectusSelf-hosted / SaaSREST + GraphQLOpen source (self-host gratis)Datatunga projekt, befintliga databaser

[VERIFIERA gratisnivåernas exakta begränsningar – dessa kan ha uppdaterats]

Hur data flödar – ett konkret exempel

Här är det typiska flödet i ett projekt med Sanity som CMS och Astro som frontend:

1. Redaktör skriver ett blogginlägg i Sanity Studio
→ Sparas i Sanity's cloud-databas2. Du pushar kod till Git (eller kör en manuell deploy)
→ Astro bygger sajten3. Under build-fasen kör Astro en GROQ-query mot Sanity's API:
const posts = await client.fetch(`*[_type == "post"] | order(publishedAt desc)`)4. Astro renderar statisk HTML för varje inlägg
→ En fil per inlägg: /blog/mitt-inlagg/index.html5. Filerna deployas till Netlify CDN
→ Besökaren laddar ner en färdig HTML-fil, inget databasanrop behövs

Det är kärnan i Jamstack-modellen: innehållet lever i CMS:et, men sidan levereras som statisk HTML. CMS:et är inte ens involverat när en besökare laddar sidan.

Praktiskt råd: För ett personligt projekt eller en liten sajt är Sanity ett utmärkt startval 2026 – generöst gratisplan, bra dokumentation och en flexibel content-modell. För projekt med redaktörer som inte är tekniska är Storyblok ett starkare val tack vare den visuella editorn.

Nästa steg

Nu vet du var innehållet bor. Nästa fråga är vilket verktyg du använder för att omvandla det till HTML – det vill säga: vilken statisk sajt-generator du ska välja. Det är ämnet för nästa artikel.

← FöregåendeHur webben fungerar – requests, responses och API:erNästa →Statiska sajt-generatorer – Next.js, Astro och andra

Vill du jämföra verktyg?

Jämför de bästa vibe coding-plattformarna →