CSR

Renderowanie strony w przeglądarce za pomocą JavaScriptu, który buduje treść po stronie klienta. Odciąża serwer, ale opóźnia pierwsze wyświetlenie.

CSR (Client-Side Rendering) to model renderowania strony w przeglądarce użytkownika. Serwer wysyła niemal pusty plik HTML (często z jednym

) plus paczkę JavaScriptu. Dopiero ten JS pobiera dane, buduje DOM i wstrzykuje treść — czyli to, co widzisz na ekranie, składa się u Ciebie, nie na serwerze.

Jak to działa i do czego służy

Przeglądarka ściąga HTML, potem pobiera i wykonuje bundle JS. Framework (np. React, Vue, Angular) montuje aplikację, odpytuje API o dane, a następnie maluje interfejs. Do pierwszego renderu użytkownik patrzy na biały ekran albo spinner — stąd zwykle gorszy First Contentful Paint i Largest Contentful Paint niż przy renderze serwerowym.

Zaletą jest odciążenie serwera: po wstępnym załadowaniu kolejne przejścia między widokami dzieją się bez przeładowania całej strony (zmienia się tylko fragment DOM-u). To naturalny wybór dla rozbudowanych aplikacji, gdzie liczy się płynna interakcja, a nie indeksacja każdej podstrony — paneli administracyjnych, dashboardów, edytorów, narzędzi za logowaniem.

Przykład z praktyki

Klasyczne CSR dostajesz od ręki, gdy odpalisz npm create vite@latest moja-apka -- --template react. Po npm run dev wchodzisz na localhost:5173 i w źródle strony (Ctrl+U) widzisz niemal pusty z jednym

. Cała treść pojawia się dopiero po wykonaniu JS. Chcesz to zobaczyć dosłownie? Wyłącz JavaScript w DevTools (zakładka Network conditions albo Command Palette: „Disable JavaScript”) i odśwież — strona zniknie. To samo widzi crawler, który nie wykonuje skryptów.

Częste błędy i mity

  • „CSR zabija SEO” — przesada. Googlebot renderuje JS, ale w drugiej fali i z opóźnieniem; przy treści, która musi być w wynikach wyszukiwania, bezpieczniej sięgnąć po SSR lub SSG.
  • Brak stanu ładowania — bez spinnera czy szkieletu (skeleton) użytkownik gapi się w pustkę i myśli, że appka padła.
  • Przerost bundla — im więcej JS, tym dłużej do pierwszego renderu. Code splitting i lazy loading to nie fanaberia, tylko higiena.
  • Mylenie z SPA — SPA to architektura aplikacji, CSR to sposób renderowania. Często idą w parze, ale to nie synonimy.

Pojęcia powiązane

SSR (Server-Side Rendering), SSG (Static Site Generation), hydration, SPA, Virtual DOM, time to interactive, Core Web Vitals.