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
Next.jsAstroWydajność

Client directives w Astro — client:load, client:idle, client:visible, client:media, client:only w praktyce

client:load, client:idle czy client:visible? Zła dyrektywa niszczy wydajność Astro. Kiedy używać której — z benchmarkami i typowymi błędami.

OpublikujLinkedInFacebookWyślij
Autor
Maciej Sala
Opublikowano
24 kwietnia 2026 00:00
Czytanie
8 min czytania
Aktualizacja
25 maja 2026 12:48

Większość programistów przechodzących z Next.js na Astro popełnia ten sam błąd: oznacza wszystko client:load i wraca do starych nawyków. Rezultat? Strona, która powinna być wydajna jak bolid, zachowuje się jak miejski autobus. to kontrakt wydajnościowy — i musisz wiedzieć, co podpisujesz.

w skrócie

  • zostaw dla interakcji krytycznych na pierwszym ekranie (w początkowo widocznym obszarze).
  • jest najczęściej najlepszym wyborem dla komponentów znajdujących się niżej na stronie.
  • pomaga przesunąć mniej pilny JavaScript poza krytyczną ścieżkę renderowania.
  • usuwa SSR dla komponentu, więc używaj go tylko przy realnej zależności od API przeglądarki.

W tym artykule rozbieram każdą z pięciu dyrektyw, pokazuję, kiedy której użyć i jakie błędy najczęściej spotykam w audytach stron Astro.

Kontekst — po co w ogóle dyrektywy hydracji

Astro domyślnie wysyła do przeglądarki zero JavaScriptu. Jeśli komponent (React, Vue, Svelte) ma być interaktywny, musisz jawnie wskazać, kiedy i jak ma pobrać swój kod JS i przejść . Brak domyślnego „wszystko hydratuj" to fundament architektury wysp — i jej największa przewaga.

Jeżeli nie wiesz, czym są wyspy w Astro, zacznij od wpisu o Islands Architecture.

Dyrektywa to kontrakt wydajnościowy — mówisz frameworkowi: „ten komponent otrzyma JS w taki a taki sposób". Astro renderuje wszystko najpierw do statycznego HTML, a dyrektywa decyduje, kiedy (lub czy w ogóle) ten HTML zostanie ożywiony przez JavaScript po stronie klienta.

client:load — hydracja natychmiast

Code
---
import Navbar from '../components/Navbar.tsx';
---
 
<Navbar client:load />

client:load pobiera i uruchamia kod JavaScript komponentu jak najszybciej — gdy tylko przeglądarka przetworzy HTML. To najbardziej agresywna dyrektywa i powinna być zarezerwowana dla elementów, które muszą działać od razu.

Kiedy używać:

  • Nawigacja główna z rozwijanym menu, które użytkownik prawdopodobnie otworzy natychmiast.
  • Przycisk CTA w głównej sekcji (hero), który musi otworzyć okno modalne.
  • Komponent do zmiany motywu (ciemny/jasny), który ma zareagować na preferencje użytkownika bez migotania strony.

Kiedy NIE używać:

  • Formularze kontaktowe w stopce — do nich użytkownik musi przewinąć stronę, więc client:visible w zupełności wystarczy.
  • Komentarze pod wpisem — z tego samego powodu co wyżej.
  • Galeria zdjęć, którą widać dopiero po kliknięciu w miniaturkę.

Kluczem do sukcesu jest selektywność. Każdy nieuzasadniony client:load to kilobajty blokujące i . Oznaczenie wszystkich wysp jako client:load niszczy całą przewagę wydajnościową Astro — i stawia Cię z powrotem na starcie Next.js, tyle że w innym ekosystemie.

client:idle — hydracja, kiedy przeglądarka jest bezczynna

Code
---
import NewsletterSignup from '../components/NewsletterSignup.tsx';
---
 
<NewsletterSignup client:idle />

client:idle czeka na wywołanie — moment, w którym przeglądarka zakończyła krytyczne zadania i procesor ma wolny cykl. W praktyce następuje to zazwyczaj od kilkuset milisekund do sekundy po załadowaniu strony.

Kiedy używać:

  • Komponenty ważne, ale nie krytyczne dla pierwszej interakcji — zapis na newsletter, widżet czatu, baner zgody na pliki cookie (uwaga: RODO wymaga, by baner pojawił się przed załadowaniem innych skryptów śledzących).
  • Skrypty analityczne i widżety dostawców zewnętrznych, które wpływają na interaktywność, ale nie stanowią priorytetu.
  • Przyciski udostępniania w mediach społecznościowych.

Kiedy NIE używać:

  • Elementy znajdujące się poza początkowo widocznym obszarem strony, których załadowanie można odłożyć używając client:visible.
  • Krytyczne elementy interfejsu (okna modalne, główna nawigacja).

Dane pokazują, że różnica w czasie załadowania między client:idle a client:load wynosi 100–500 ms — i to właśnie te ułamki sekund decydują o TTI i wyniku Lighthouse.

client:visible — hydracja, kiedy komponent wchodzi w pole widzenia

Code
---
import CommentsSection from '../components/CommentsSection.tsx';
import ProductGallery from '../components/ProductGallery.tsx';
---
 
<article>
  <!-- długa treść artykułu -->
</article>
 
<CommentsSection client:visible />

client:visible wykorzystuje , aby pobrać i uruchomić JavaScript dopiero wtedy, gdy komponent pojawi się w widocznym obszarze ekranu. Jeśli użytkownik nie przewinie strony do tej sekcji — kod JS w ogóle się nie pobierze.

client:visible to domyślna rekomendacja dla wszystkich elementów poniżej linii przewijania. Jeśli użytkownik nie dotrze do sekcji — JavaScript nie załaduje się w ogóle.

Kiedy używać:

  • Sekcja komentarzy pod artykułem.
  • Formularz kontaktowy w stopce lub na samym dole strony.
  • Galeria zdjęć znajdująca się poniżej opisu produktu.
  • Kalkulator lub interaktywny widżet osadzony w środku wpisu.
  • Karuzela z logotypami klientów.

Kiedy NIE używać:

  • Komponenty na pierwszym ekranie — są one widoczne od razu, więc użycie client:visible niczego nie optymalizuje, a jedynie dokłada dodatkowy narzut związany z obserwatorem (IntersectionObserver).
  • Komponenty współdzielące stan z innymi wyspami — mechanizm obserwacji może wprowadzić zauważalne opóźnienie w synchronizacji danych.

Możesz też skonfigurować parametr client:visible, aby rozpocząć pobieranie kodu JS zanim komponent fizycznie wejdzie w widoczny obszar (prefetching):

Code
<CommentsSection client:visible={{ rootMargin: "200px" }} />

Dzięki temu kod ładuje się, gdy komponent znajduje się np. 200 pikseli poniżej aktualnego widoku — użytkownik nie odczuje żadnego opóźnienia, a w przypadku gdy w ogóle tam nie przewinie, oszczędzamy zasoby sieciowe.

client:media — hydracja tylko przy spełnieniu warunków media query

Code
---
import MobileNav from '../components/MobileNav.tsx';
import DesktopSidebar from '../components/DesktopSidebar.tsx';
---
 
<MobileNav client:media="(max-width: 768px)" />
<DesktopSidebar client:media="(min-width: 1024px)" />

client:media ożywia komponent tylko wtedy, gdy przeglądarka spełnia przekazane reguły zapytania o media (media query). Na smartfonie DesktopSidebar nigdy nie pobierze swojego kodu JS, podobnie jak MobileNav na komputerze stacjonarnym.

Kiedy używać:

  • Elementy interfejsu przeznaczone wyłącznie na urządzenia mobilne — menu typu hamburger, wysuwane panele dolne (bottom sheets), galerie obsługujące gesty przesunięcia (swipe).
  • Elementy wyłącznie desktopowe — rozbudowane menu rozwijane po najechaniu kursorem, skomplikowane filtry wykorzystujące mechanizm przeciągnij i upuść.
  • Responsywne widżety, które mają kompletnie inną logikę działania w zależności od rozmiaru ekranu.

Kiedy NIE używać:

  • Kiedy komponent dostosowuje się tylko wizualnie (za pomocą CSS media queries), ale nie zmienia logiki biznesowej.
  • Gdy zachowanie różni się zaledwie szczegółem — prościej jest użyć client:visible i wewnątrz komponentu weryfikować warunki przez window.matchMedia.

Po tę dyrektywę sięgam rzadko, ale w specyficznych sytuacjach — np. przy ciężkim wysuwanym panelu mobilnym, który na desktopie nie istnieje — oszczędza dziesiątki kilobajtów transferu. Wdrażamy ją tylko wtedy, gdy logika po obu stronach ekranu jest fundamentalnie inna.

client:only — komponent wyłącznie po stronie klienta

Code
---
import ChartWidget from '../components/ChartWidget.tsx';
import ClientSideMap from '../components/InteractiveMap.tsx';
---
 
<ChartWidget client:only="react" />
<ClientSideMap client:only="react" />

client:only to sygnał dla Astro: „nie próbuj renderować tego komponentu po stronie serwera (), wygeneruj go wyłącznie w przeglądarce". Działa to odwrotnie do pozostałych dyrektyw.

Kiedy używać:

  • Komponenty zależne w fazie renderowania od obiektów globalnych przeglądarki takich jak window, document czy localStorage — bez tego proces SSR zakończyłby się błędem.
  • Biblioteki, które nie posiadają wsparcia dla SSR (np. niektóre nakładki na Three.js, react-leaflet, edytory tekstu typu WYSIWYG).
  • Komponenty bazujące na danych z bazy IndexedDB lub service workerów.
  • Elementy, których wygląd jest bardzo mocno uzależniony od dokładnego rozmiaru okna, a wersja wyrenderowana na serwerze i tak wymagałaby natychmiastowego przebudowania przez JS.

Kiedy NIE używać:

  • We wszystkich innych przypadkach. Użycie client:only dezaktywuje mechanizm SSR, przez co rezygnujesz z błyskawicznego serwowania gotowej treści. Zamiast tego zmuszasz użytkownika do oczekiwania, aż pobierze się JS i wygeneruje komponent bezpośrednio w jego przeglądarce.

Sprawdzoną praktyką przy korzystaniu z client:only jest dodanie zastępczego szkieletu (placeholdera):

Code
<div class="min-h-[400px] flex items-center justify-center">
  <ClientSideMap client:only="react">
    <p slot="fallback">Ładowanie mapy...</p>
  </ClientSideMap>
</div>

Dzięki temu zabiegowi użytkownik na czas wczytywania widzi zarezerwowaną przestrzeń, układ strony nie „skacze", a wskaźnik przesunięcia układu () pozostaje nienaruszony.

Porównanie w tabeli

DyrektywaKiedy ładuje JSKiedy używaćKiedy unikać
client:loadNatychmiastKrytyczne interakcje na pierwszym ekranie (nawigacja, główne przyciski)Elementy widoczne dopiero po przewinięciu
client:idleGdy przeglądarka jest bezczynnaWażne, ale nie priorytetowe elementy (newsletter, czat)Krytyczny interfejs, komponenty reagujące na przewijanie
client:visibleGdy element wchodzi w pole widzeniaWszystko poniżej pierwszego ekranuElementy widoczne od razu po załadowaniu
client:mediaGdy spełnione są reguły media queryInterfejsy specyficzne tylko dla mobile / desktopGdy zmienia się wyłącznie wygląd, a nie logika
client:onlyPo załadowaniu strony (omija SSR)Biblioteki niekompatybilne z SSR, wymagające okna przeglądarkiKażdy element, który można bez problemu wyrenderować na serwerze

Budżet hydracji

W większych projektach wdrażam limit wielkości kodu (budżet hydracji) dla każdego typu komponentów. To chroni przed pułapką, w której strona Astro powinna być szybka, a w praktyce ładuje kilka masywnych paczek.

maksymalna liczba wysp z client:load na pierwszym ekranie
1–2maksymalna liczba wysp z client:load na pierwszym ekranie
JavaScript dla elementów czysto wizualnych bez interakcji
0 KBJavaScript dla elementów czysto wizualnych bez interakcji
  • Komponenty widoczne od razu po załadowaniu: maksymalnie 1–2 interaktywne wyspy z client:load.
  • Sekcje poniżej linii przewijania: zawsze client:visible jako domyślny wybór.
  • Detale wizualne i dekoracje: brak hydracji, chyba że wprost wpływają na konwersję.
  • Komponenty wymagające API przeglądarki: client:only — brak SSR jest w tym wypadku nieunikniony.
  • Współdzielone biblioteki: regularna weryfikacja, czy jeden mały komponent nie importuje całej biblioteki wykresów, edytora WYSIWYG albo kitu.
Wskazówka

Praktyczna zasada: jeśli element na stronie nie wymaga nasłuchiwania na kliknięcia, wpisywania tekstu, reakcji na zmianę rozmiaru okna lub specyficznych danych z przeglądarki klienta — prawdopodobnie w ogóle nie potrzebuje kodów JS i hydracji.

Najczęstsze błędy

W audytach stron Astro notorycznie spotykam trzy te same błędy:

1. Nadużywanie client:load. Wytłumaczenie zawsze brzmi: „bo po prostu działa". Serwis z ośmioma komponentami oznaczonymi client:load traci całą przewagę nad Next.js — staje się identycznym tworem, tyle że w innym ekosystemie.

2. Layout owinięty w jeden wielki React z client:load. Programista przyzwyczajony do Next.js odruchowo buduje Layout.tsx z nagłówkiem, treścią i stopką — i oznacza całość client:load. Fundament strony musi być .astro. Frameworkowe komponenty dodajemy jak karabinowe gniazda w mocnych punktach — wyłącznie tam, gdzie konieczna jest interakcja.

3. client:only bez elementu zastępczego. Komponent ładuje się po 1,5 s, strona skacze, CLS rośnie. Zawsze ustaw kontener zastępczy z odpowiednią wysokością na czas ładowania.

Scenariusz praktyczny — karta produktu w e-commerce

Przeanalizujmy dobór odpowiednich dyrektyw przy projektowaniu standardowej podstrony produktowej:

Code
---
// src/pages/produkt/[slug].astro
import Layout from '../../layouts/Layout.astro';
import Header from '../../components/Header.astro';
import ProductImages from '../../components/ProductImages.tsx';
import AddToCart from '../../components/AddToCart.tsx';
import ProductDescription from '../../components/ProductDescription.astro';
import Reviews from '../../components/Reviews.tsx';
import RecentlyViewed from '../../components/RecentlyViewed.tsx';
import Footer from '../../components/Footer.astro';
 
const { product } = Astro.props;
---
 
<Layout>
  <Header />
 
  <main>
    <!-- Galeria widoczna od razu, istnieje wysokie prawdopodobieństwo wejścia w interakcję -->
    <ProductImages images={product.images} client:load />
 
    <!-- Przycisk dodawania do koszyka (CTA) o kluczowym znaczeniu dla konwersji -->
    <AddToCart productId={product.id} client:load />
 
    <!-- Czysto statyczny tekst opisu, nie generuje JS -->
    <ProductDescription content={product.description} />
 
    <!-- Sekcja opinii umieszczona niżej, aktywuje się dopiero przy przewijaniu -->
    <Reviews productId={product.id} client:visible />
 
    <!-- Karuzela "Ostatnio przeglądane" pobiera kod JS w wolnej chwili -->
    <RecentlyViewed client:idle />
  </main>
 
  <Footer />
</Layout>

Taka konfiguracja gwarantuje, że:

  • Otrzymujemy natychmiastowe wyświetlenie pełnej struktury strony (bez oczekiwania na pobranie skryptów).
  • Krytyczne strefy interfejsu (galeria zdjęć, przycisk zakupu) są błyskawicznie hydratowane i gotowe do akcji.
  • Skrypty opinii ładują się tylko i wyłącznie, gdy użytkownik przewinie stronę do danej sekcji.
  • Elementy o niższym priorytecie (jak karuzela sugerująca inne produkty) nie opóźniają pierwszego renderowania zawartości na ekranie.

Audyt własnej strony Astro

Jeśli rozwijasz już projekt w Astro, wdróż ten czteropunktowy audyt:

  1. Przeszukaj kod pod kątem client:load — każda taka deklaracja musi być nieodzowna na pierwszym ekranie.
  2. Zmień na client:visible każdą dyrektywę dla elementów poza pierwszym ekranem.
  3. Znajdź każde client:only — udokumentuj komentarzem, dlaczego SSR jest tu niemożliwy. Część przypadków da się przepisać.
  4. Uruchom Lighthouse Mobile. TBT poniżej 200 ms, TTI maksymalnie 3,5 s na wolnym 4G.

Jeśli chcesz zlecić profesjonalny audyt SEO i wydajności Twojej witryny w Astro — wejdź na wyższy poziom i odezwij się.

Werdykt Labu

Dyrektywy to kontrakt wydajnościowy — i każda z nich rozwiązuje inny problem. client:visible jako domyślny wybór, client:idle dla ważnych lecz niepilnych elementów pierwszego ekranu, client:load wyłącznie dla interfejsu krytycznego, client:only tylko gdy SSR jest fizycznie niemożliwy.

Nie ma skrótów. Każda decyzja o hydracji ma cenę w milisekundach i , które użytkownik odczuje zanim jeszcze wejdzie w interakcję ze stroną.

Przejrzę architekturę projektu i wskażę, gdzie leży koszt.

Audyt techniczny i optymalizacja pod kątem SEO i GEO.
SEO & Performance
  • Kontekst — po co w ogóle dyrektywy hydracji1 min
  • client:load — hydracja natychmiast1 min
  • client:idle — hydracja, kiedy przeglądarka jest bezczynna1 min
  • client:visible — hydracja, kiedy komponent wchodzi w pole widzenia1 min
  • client:media — hydracja tylko przy spełnieniu warunków media query1 min
  • client:only — komponent wyłącznie po stronie klienta1 min
  • Porównanie w tabeli1 min
  • Budżet hydracji1 min
  • Najczęstsze błędy1 min
  • Scenariusz praktyczny — karta produktu w e-commerce1 min
  • Audyt własnej strony Astro1 min
  • Werdykt Labu1 min

Często zadawane pytania

Źródła i dokumentacjaZweryfikowano: 25 maja 2026

Materiały wykorzystane do weryfikacji artykułu o dyrektywach hydracji w Astro:

Astro docs: Client directives, Astro docs: Islands Architecture, Astro docs: UI Framework components, web.dev: Interaction to Next Paint (INP), web.dev: Total Blocking Time (TBT).

Seria

Astro w praktyce 2026
Część 4 / 10
  1. 1Pierwszy projekt w Astro — od npm create astro do wdrożenia w 15 minut
  2. 2Astro 6 — przewodnik po nowościach: Cloudflare Workers, Live Content Collections, Fonts API i CSP
  3. 3Architektura wysp w Astro — czym są wyspy i dlaczego zero JS domyślnie zmienia zasady gry
  4. Client directives w Astro — client:load, client:idle, client:visible, client:media, client:only w praktyce
  5. 5Astro Content Collections — typowany blog z walidacją Zod od podstaw
  6. 6Server Islands w Astro — dynamiczne fragmenty na statycznej stronie
  7. 7Astro View Transitions — płynne przejścia między stronami bez budowania SPA
  8. 8SEO w Astro — Core Web Vitals, dane uporządkowane i techniczny fundament rankingu w 2026
  9. 9Migracja bloga z WordPress na Astro — eksport treści, przekierowania 301 i zachowanie pozycji w Google
  10. 10Lighthouse 100/100 w Astro — case study optymalizacji strony usługowej
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
Architektura wysp w Astro — czym są wyspy i dlaczego zero JS domyślnie zmienia zasady gry
Architektura wysp w Astro — czym są wyspy i dlaczego zero JS domyślnie zmienia zasady gry

Zero JS domyślnie to fundament Astro. Czym są wyspy, jak działa selektywna hydratacja i kiedy naprawdę ma to wpływ na wydajność?

Maciej Sala

Maciej Sala

Founder Strivelab

24 kwietnia 2026
Astro.js vs Next.js w 2026 — kompleksowe porównanie frameworków
Astro.js vs Next.js w 2026 — kompleksowe porównanie frameworków

Astro 6 vs Next.js 16 — zupełnie różne założenia. Które wybrać do strony usługowej, bloga, SaaS i e-commerce? Decydujące kryteria.

Maciej Sala

Maciej Sala

Founder Strivelab

15 kwietnia 2026
Wieloframeworkowa architektura wysp w Astro: React, Vue i Svelte w jednym projekcie
Wieloframeworkowa architektura wysp w Astro: React, Vue i Svelte w jednym projekcie

Trzy frameworki, jeden projekt — Astro naprawdę na to pozwala. Koszty runtime, dyrektywy i ograniczenia ważne w projektach enterprise.

Maciej Sala

Maciej Sala

Founder Strivelab

18 maja 2026

Poprzedni wpis

Astro Content Collections — typowany blog z walidacją Zod od podstaw
Astro Content Collections — typowany blog z walidacją Zod od podstaw

Błędny frontmatter w Astro wykryty dopiero na produkcji? Content Collections z Zod sprawdzają schematy już w edytorze. Jak to skonfigurować?

Maciej Sala

Maciej Sala

Founder Strivelab

24 kwietnia 2026

Następny wpis

Astro 6 — przewodnik po nowościach: Cloudflare Workers, Live Content Collections, Fonts API i CSP
Astro 6 — przewodnik po nowościach: Cloudflare Workers, Live Content Collections, Fonts API i CSP

Astro 6 z Cloudflare Workers w dev, Live Collections i wbudowanym Fonts API. Co te zmiany oznaczają dla Twoich projektów na produkcji?

Maciej Sala

Maciej Sala

Founder Strivelab

24 kwietnia 2026