StriveLab
Strony internetowe
Usługi
RealizacjeO mnieBlogPorozmawiajmy
PL
EN

Astro

Ultraszybkie projekty, łączące lekkość ze skalowalnością.

Next.js

Elastyczne i wydajne narzędzia dla biznesu, które dotrzymają kroku Twojemu rozwojowi.

React

Połączenie intuicyjności z wydajnością, które zapewnia bezproblemową skalowalność kodu.

SEO & Performance

Audyt techniczny i optymalizacja pod kątem SEO i GEO.

Automatyzacja AI

Bezpieczne automatyzacje procesów i agenci AI w n8n, Make i Claude.

QA & Automation

Testy automatyczne komponentów i E2E w Cypress.

Konsultacje

Połączenie perspektywy produktu, developera i marketingu w jednym miejscu

StriveLab
Strony internetowe
Usługi
RealizacjeO mnieBlogPorozmawiajmy
PL
EN

Astro

Ultraszybkie projekty, łączące lekkość ze skalowalnością.

Next.js

Elastyczne i wydajne narzędzia dla biznesu, które dotrzymają kroku Twojemu rozwojowi.

React

Połączenie intuicyjności z wydajnością, które zapewnia bezproblemową skalowalność kodu.

SEO & Performance

Audyt techniczny i optymalizacja pod kątem SEO i GEO.

Automatyzacja AI

Bezpieczne automatyzacje procesów i agenci AI w n8n, Make i Claude.

QA & Automation

Testy automatyczne komponentów i E2E w Cypress.

Konsultacje

Połączenie perspektywy produktu, developera i marketingu w jednym miejscu

Astro

Ultraszybkie projekty, łączące lekkość ze skalowalnością.

Next.js

Elastyczne i wydajne narzędzia dla biznesu, które dotrzymają kroku Twojemu rozwojowi.

React

Połączenie intuicyjności z wydajnością, które zapewnia bezproblemową skalowalność kodu.

SEO & Performance

Audyt techniczny i optymalizacja pod kątem SEO i GEO.

Automatyzacja AI

Bezpieczne automatyzacje procesów i agenci AI w n8n, Make i Claude.

QA & Automation

Testy automatyczne komponentów i E2E w Cypress.

Konsultacje

Połączenie perspektywy produktu, developera i marketingu w jednym miejscu

RealizacjeO mnieBlog
Porozmawiajmy
PL
EN

Nowoczesne strony internetowe dla firm, które myślą odważnie.

Przewiń do góry

Nazwa

StriveLab Maciej Sala

NIP

6772218995

REGON

524008527

E-mail

contact@strivelab.pl

Usługi główne
  • Tworzenie stron internetowych
  • Strony internetowe Next.js
  • Strony internetowe Astro
  • Strony internetowe React
Inne usługi
  • Usługi
  • Audyt SEO i Performance
  • Testy automatyczne i QA
  • Konsultacje Produktowe
  • Automatyzacja Procesów AI
  • Aplikacje webowe Next.js
  • Współpraca ciągła
Strony
  • O mnie
  • Usługi
  • Realizacje
  • Blog

© 2026 StriveLab.pl

Polityka prywatności
AstroCMS

Jak połączyć Astro z Sanity CMS? Przewodnik po ultra-szybkim blogu

Astro + Sanity: GROQ, architektura wysp i Lighthouse 100/100 bez ceregieli. Blog, który ładuje się szybciej niż otwierasz zakładkę.

OpublikujLinkedInFacebookWyślij
Autor
Maciej Sala
Opublikowano
8 czerwca 2026 08:00
Czytanie
4 min czytania
Aktualizacja
Wersja pierwotna

Lighthouse 100/100 to nie mit — to wynik decyzji architektonicznych podjętych na samym początku. Jeśli budujesz bloga, portfolio albo stronę firmową, gdzie liczy się każdy punkt w Google, połączenie Astro z Sanity jest jednym z najlepszych wyborów, jakie możesz zrobić w 2026 roku. Sanity dostarcza ustrukturyzowaną treść, Astro zamienia ją w czysty HTML bez zbędnego JavaScriptu — i strona ładuje się, zanim użytkownik zdąży mrugnąć.

Artykuł w skrócie

  • Astro domyślnie generuje czysty HTML bez JavaScriptu — interaktywność dodajesz tylko punktowo jako wyspy
  • Oficjalna integracja @sanity/astro — jedna komenda instalacji, klient dostępny jako wirtualny moduł
  • Dane pobierasz zapytaniami GROQ bezpośrednio we frontmatterze .astro — kod nigdy nie trafia do przeglądarki
  • Tryb statyczny: build raz, serwuj z CDN. Tryb SSR: treść w czasie rzeczywistym przy każdym żądaniu
  • @sanity/astro jest lżejsze niż next-sanity — brak Live Content API i zintegrowanej rewalidacji cache

Dlaczego Astro i Sanity działają tak dobrze razem

Każde z tych narzędzi robi dokładnie jedną rzecz znakomicie, a ich role się nie nakładają. Sanity dostarcza ustrukturyzowaną treść, a Astro zamienia ją w czysty HTML — bez zbędnego JavaScriptu.

Sekret tkwi w Architektura wysp (Islands Architecture) to wzorzec, w którym większość strony jest statycznym HTML-em, a interaktywne fragmenty hydratują się jako niezależne wyspy. (Astro Islands). Klasyczny framework typu SPA (Single Page Application) to aplikacja webowa, w której cała strona renderuje się i działa po stronie przeglądarki w jednym dokumencie HTML — typowe podejście Reacta, Vue czy Angulara bez SSR. wysyła do przeglądarki cały JavaScript potrzebny do zbudowania strony, nawet jeśli to zwykły artykuł, który nic nie robi po załadowaniu. Astro odwraca tę logikę: domyślnie renderuje wszystko do statycznego HTML-a i nie wysyła żadnego JavaScriptu. Interaktywność dokładasz tylko punktowo — jako wyspy (np. menu mobilne czy formularz), które się Hydratacja to dołączenie JavaScriptu do wyrenderowanego HTML, dzięki czemu statyczny komponent staje się interaktywny. (hydrate), podczas gdy reszta strony pozostaje czystym, lekkim HTML-em.

Dla strony contentowej to idealne dopasowanie. Treść z Sanity i tak nie potrzebuje interaktywności — to tekst, obrazy, nagłówki. Astro pobiera te dane raz, podczas builda, i wypala je w gotowe pliki HTML. Efekt: strona ładuje się błyskawicznie, a Lighthouse pokazuje wyniki w okolicach 100/100 praktycznie z pudełka, bo nie ma czego ładować poza HTML-em i CSS-em.

Jak zainstalować integrację Astro z Sanity

Sanity utrzymuje oficjalną integrację @sanity/astro, więc nie wymyślasz koła na nowo. Instalacja to jedna komenda:

Code
npx astro add @sanity/astro @astrojs/react

@astrojs/react jest potrzebny, jeśli chcesz korzystać z wizualnej edycji albo osadzić Sanity Studio na trasie w projekcie Astro. Warto przy okazji dograć pakiety pomocnicze:

Code
npm install astro-portabletext @sanity/image-url groq
  • astro-portabletext — renderuje Portable Text (format tekstu sformatowanego z Sanity) do HTML-a
  • @sanity/image-url — buduje URL-e obrazów z transformacjami z CDN, czyli Content Delivery Network, to rozproszona sieć serwerów dostarczająca zasoby z węzła najbliższego użytkownikowi; CDN do obrazów dodatkowo transformuje je w locie.-u Sanity
  • groq — eksportuje defineQuery do typowanych zapytań

Konfigurację dodajesz w astro.config.mjs:

Code
// astro.config.mjs
import { defineConfig } from 'astro/config'
import sanity from '@sanity/astro'
 
export default defineConfig({
  integrations: [
    sanity({
      projectId: 'YOUR_PROJECT_ID',   // znajdziesz na sanity.io/manage
      dataset: 'production',
      apiVersion: '2026-03-01',        // wymagane dla przewidywalnych zapytań
      useCdn: false,                   // false przy buildzie statycznym i draftach
    }),
  ],
})

Integracja wystawia gotowego klienta Sanity jako wirtualny moduł sanity:client, którego importujesz w dowolnym komponencie. Nie musisz ręcznie konfigurować połączenia w każdym pliku.

Jak pobierać dane z Sanity w Astro przez GROQ

Tu wkracza GROQ to język zapytań Sanity służący do pobierania i filtrowania treści z datasetu. — język zapytań Sanity. Jest trochę jak SQL dla grafu dokumentów JSON: filtrujesz, sortujesz, robisz projekcje i joiny w jednym zapytaniu. (Sanity wystawia też GraphQL to język zapytań do API, w którym klient precyzyjnie określa, jakie pola chce pobrać — zamiast sztywnych endpointów REST zwracających całe obiekty., jeśli wolisz, ale GROQ jest natywny i zwykle zwięźlejszy.)

W Astro pobierasz dane bezpośrednio we Frontmatter to blok metadanych na początku pliku Markdown/MDX, zapisany zwykle w YAML między liniami ---. komponentu — czyli w bloku między ---, który wykonuje się na serwerze podczas builda i nigdy nie trafia do przeglądarki:

Code
---
// src/pages/blog/index.astro
import { sanityClient } from 'sanity:client'
import BaseLayout from '../../layouts/BaseLayout.astro'
 
const posts = await sanityClient.fetch(
  `*[_type == "post" && defined(slug)] | order(publishedAt desc) {
    title,
    "slug": slug.current,
    excerpt,
    publishedAt
  }`
)
---
 
<BaseLayout title="Blog">
  <h1>Blog</h1>
  <ul>
    {posts.map((post) => (
      <li>
        <a href={`/blog/${post.slug}`}>
          <h2>{post.title}</h2>
          <p>{post.excerpt}</p>
        </a>
      </li>
    ))}
  </ul>
</BaseLayout>

To zapytanie GROQ czyta się prosto: weź wszystkie dokumenty typu post, które mają sluga, posortuj od najnowszego i zwróć tylko te cztery pola. Cała ta logika wykonuje się raz, podczas builda — użytkownik dostaje gotowy HTML.

Statycznie czy serwerowo? Dwa tryby renderowania

Astro ma dwa tryby, a wybór wpływa na to, kiedy treść z Sanity trafia na stronę:

SSG (Static Site Generation) to generowanie kompletnego HTML podczas budowania strony. Gotowe pliki serwujesz z CDN bez renderowania na żądanie — najszybszy i najtańszy model dla treści, która nie zmienia się przy każdej wizycie. (domyślny) — każde zapytanie GROQ wykonuje się raz, podczas builda, a strony serwowane są jako statyczne pliki. Idealny, gdy treść nie zmienia się co minutę i możesz pozwolić sobie na chwilę zwłoki między publikacją a przebudową (zwykle wyzwalaną Webhook to automatyczne powiadomienie HTTP wysyłane przez Stripe do Twojej aplikacji po wystąpieniu zdarzenia, np. udanej płatności. z Sanity). To wybór dla większości blogów i stron firmowych — najszybszy i najtańszy.

SSR, czyli Server-Side Rendering, to generowanie HTML na serwerze przy żądaniu — komponent client:only je pomija i renderuje się wyłącznie w przeglądarce. (SSR) — strony renderują się na każde żądanie, więc zapytania GROQ działają w czasie rzeczywistym i zmiany widać natychmiast, bez przebudowy. Potrzebujesz do tego adaptera pod swój hosting (np. Vercel). Sięgasz po niego, gdy potrzebujesz podglądu draftów, wizualnej edycji albo treści personalizowanej.

Czego ta integracja NIE potrafi — uczciwie

@sanity/astro jest lżejsze niż next-sanity i celowo nie ma kilku jego funkcji.

Nie ma odpowiednika Live Content API — w Next.js next-sanity daje automatyczne aktualizacje treści na żywo i rewalidację Cache przechowuje gotową odpowiedź lub zasób, żeby nie generować go od zera przy każdym wejściu użytkownika.. W Astro tego nie ma out of the box: aktualizacje wymagają przebudowy (tryb statyczny) albo odświeżenia strony (SSR). Nie ma też wbudowanej rewalidacji cache zintegrowanej z frameworkiem.

Dla bloga czy strony firmowej to zwykle nie problem. Jeśli jednak budujesz coś, gdzie liczy się natychmiastowość i interaktywność na poziomie aplikacji, warto rozważyć Next.js z Payload zamiast Astro.

Werdykt Labu

Astro z Sanity to domyślne połączenie dla stron, w których treść jest gwiazdą, a interaktywność dodatkiem: blogi, portfolia, strony firmowe, landing page, dokumentacje. Dostajesz świetny edytor z real-time'em po stronie Sanity i bezkonkurencyjną wydajność po stronie Astro.

Jeśli Twoje dane z powodów kosztowych lub prawnych nie mogą leżeć w chmurze SaaS, alternatywą przy zachowaniu lekkości Astro jest Astro z Payload CMS. Jeśli budujesz pełnoprawną aplikację z logowaniem i interaktywnością — to już temat na Payload 3.0 i Next.js.

Ultraszybkie projekty, łączące lekkość ze skalowalnością.

Astro
  • Dlaczego Astro i Sanity działają tak dobrze razem1 min
  • Jak zainstalować integrację Astro z Sanity1 min
  • Jak pobierać dane z Sanity w Astro przez GROQ1 min
  • Statycznie czy serwerowo? Dwa tryby renderowania1 min
  • Czego ta integracja NIE potrafi — uczciwie1 min
  • Werdykt Labu1 min

Często zadawane pytania

Źródła i dokumentacjaZweryfikowano: 8 czerwca 2026

Oficjalna dokumentacja i materiały referencyjne do artykułu:

Astro Docs: Sanity CMS integration guide, Sanity: Enterprise Astro CMS, Sanity Docs: Integrate Sanity with your Astro app, Sanity Docs: GROQ introduction, Astro: 2023 Web Framework Performance Report

Maciej Sala

O autorze

Maciej Sala

Maciej Sala — Product Manager i Frontend Developer z bogatym doświadczeniem w marketingu internetowym oraz SEO. Na co dzień pracuje z Reactem, Next.js i TypeScriptem, a ostatnio także z Astro i narzędziami do automatyzacji procesów AI. Sprawnie łączy perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat był związany z branżą gier wideo jako project manager i game designer. Absolwent historii na Uniwersytecie Jagiellońskim oraz studiów podyplomowych z marketingu internetowego na AGH w Krakowie. Po godzinach trenuje na siłowni, maluje figurki i rozwija własne projekty side-projecty.

Moje artykułyWięcej o mnie

Pomagam przekładać takie tematy na konkretne wdrożenia w frontendzie, SEO, analityce i procesie produktowym.

Skontaktuj się ze mną

Biblioteka wiedzy

Czytaj dalej

Zobacz więcej wpisów
Sanity CMS + Next.js — od instalacji po live preview i Visual Editing
Sanity CMS + Next.js — od instalacji po live preview i Visual Editing

Sanity CMS w Next.js App Router — od schematu przez GROQ i ISR po Visual Editing na żywo. Setup, który redakcja pokocha, a developer nie przeklnie.

Maciej Sala

Maciej Sala

Founder Strivelab

11 kwietnia 2026
Payload CMS vs Sanity: który Headless CMS wybrać w 2026 roku?
Payload CMS vs Sanity: który Headless CMS wybrać w 2026 roku?

Payload czy Sanity? Samodzielny hosting kontra SaaS — model kosztów, DX i edytor redakcji pod lupą. Decyzja, której nie cofniesz łatwo.

Maciej Sala

Maciej Sala

Founder Strivelab

8 czerwca 2026
Pierwszy projekt w Astro — od npm create astro do wdrożenia w 15 minut
Pierwszy projekt w Astro — od npm create astro do wdrożenia w 15 minut

Od zera do wdrożonej strony w 15 minut — Astro w pigułce dla tych, którzy nie chcą tracić czasu na konfigurację.

Maciej Sala

Maciej Sala

Founder Strivelab

29 maja 2026
Poprzedni wpisPayload 3.0 i Next.js: rewolucja w budowaniu aplikacji fullstackCMS i aplikacja w jednym procesie — Payload 3.0 żyje wewnątrz Next.js. Zero zbędnych zapytań HTTP, pełna kontrola danych.
Maciej Sala

Maciej Sala

Founder Strivelab

8 czerwca 2026
Następny wpisAstro i Payload CMS: jak zbudować wydajną stronę bez limitów danychWłasna baza, darmowy frontend — Astro z Payload CMS nie gryzie się z budżetem nawet przy dużym ruchu. Oto jak to zintegrować.
Maciej Sala

Maciej Sala

Founder Strivelab

8 czerwca 2026