TL;DR
Performance budget to twarde progi (LCP, INP, CLS, rozmiar JS), które CI blokuje, gdy PR je przekracza — zamiast odkrywać regresję tydzień później w Search Console. Lighthouse CI uruchamia audyt na buildzie produkcyjnym przy każdym pull requeście i failuje merge, gdy mobile LCP > 2,5 s lub CLS > 0,1. Zespół dev, design i marketing dzieli jedną tabelę budżetów: hero max 200 KB, third-party scripts tylko po review, GA4 afterInteractive, Ads lazyOnload. Hosting na DevStudioIT Cloud + RUM po deploy domyka pętlę między syntetyką CI a prawdziwymi użytkownikami.
Dla kogo to jest
- Zespołów Next.js / React, które co sprint dodają komponenty i „nagle" strona główna ma LCP 4 s
- Product ownerów odpowiadających za konwersje z Google Ads — wolny landing podnosi CPC
- Firm bez dedykowanego performance engineer — Lighthouse CI jest automatycznym gatekeeperem
- Designerów dodających animacje i fonty — budżet wymusza tradeoff przed merge
- Projektów po audycie SEO, gdzie CWV są „żółte" i trzeba utrzymać zielone, nie tylko jednorazowo naprawić
Fraza (SEO)
performance budget core web vitals, lighthouse ci zespół, lcp inp cls progi, budżet wydajności ci, regresja wydajności pull request, lighthouse github actions 2026
Czym jest performance budget w 2026
Performance budget to zestaw limitów mierzalnych w CI i w dokumentacji projektu:
| Kategoria | Przykładowy budżet (strona marketingowa) | Narzędzie pomiaru |
|---|---|---|
| LCP | ≤ 2,5 s (mobile) | Lighthouse CI, CrUX |
| INP | ≤ 200 ms | Lighthouse, RUM |
| CLS | ≤ 0,1 | Lighthouse CI |
| Performance score | ≥ 0,85 mobile | Lighthouse CI |
| Total JS | ≤ 300 KB (gzip) na landing | webpack analyzer / CI |
| LCP image | ≤ 150 KB WebP/AVIF | build + review |
| Third-party | max 2 tagi blocking | manual + LHCI |
Budżet nie zastępuje optymalizacji — zapobiega regresji. Pierwsza optymalizacja to praca ręczna; budżet utrzymuje wynik.
Core Web Vitals — cele dla zespołu produktowego
Google ocenia LCP ( Largest Contentful Paint ), INP ( Interaction to Next Paint ) i CLS ( Cumulative Layout Shift ) w field data (CrUX). Syntetyka Lighthouse w CI koreluje z CrUX, ale nie zastępuje — używaj obu.
| Metryka | Good | Needs improvement | Działanie zespołu |
|---|---|---|---|
| LCP | ≤ 2,5 s | 2,5–4 s | Hero image, font, SSR, TTFB hostingu |
| INP | ≤ 200 ms | 200–500 ms | Mniej JS na main thread, defer chatbot |
| CLS | ≤ 0,1 | 0,1–0,25 | width/height na obrazach, rezerwa na banery |
Marketing musi wiedzieć: nowy pixel tracking bez lazyOnload to ticket do dev z oczekiwanym +200 ms LCP w LHCI — nie „dodajmy szybko skrypt".
Lighthouse CI — konfiguracja w repozytorium
Plik lighthouserc.json w korzeniu repo:
{
"ci": {
"collect": {
"numberOfRuns": 3,
"startServerCommand": "npm run start",
"startServerReadyPattern": "Ready",
"url": ["http://localhost:3000/pl", "http://localhost:3000/en"]
},
"assert": {
"assertions": {
"categories:performance": ["error", { "minScore": 0.85 }],
"largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
"cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }],
"interactive": ["warn", { "maxNumericValue": 3800 }]
}
},
"upload": {
"target": "temporary-public-storage"
}
}
}Workflow GitHub Actions (skrót):
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm ci && npm run build
- run: npx @lhci/cli@0.14.x autorunKlucz: npm run build + npm run start — ten sam łańcuch co deploy na DevStudioIT Cloud. Audyt na next dev fałszuje wyniki.
Szczegóły rozszerzone: Lighthouse CI — audyt Next.js.
Budżet JS i third-party — reguły review PR
Checklist w opisie PR (template):
- Nowy npm package — uzasadnienie + rozmiar bundle
- Obraz hero — format AVIF/WebP,
prioritytylko na LCP - Skrypt marketingowy — strategia ładowania (
lazyOnload/worker) - Font — subset,
display: swap, max 2 wagi - Komponent kliencki — czy można Server Component
Tabela odpowiedzialności:
| Rola | Odpowiedzialność |
|---|---|
| Dev | Bundle, SSR, image pipeline, LHCI zielone |
| Design | Rozmiar assetów, animacje bez layout thrashing |
| Marketing | Tagi po consent, bez nowych sync scriptów |
| DevOps | TTFB, cache, HTTP/2 na Cloud |
INP w praktyce — co łapie zespół
INP zastąpił FID jako metryka interakcji. Winowajcy na stronach firmowych:
- Chatbot ładujący się
afterInteractivena każdej stronie - Menu mobilne z ciężkim JS i re-render całego drzewa
- Event handlery bez debounce na scroll
- Radix/shadcn — OK, ale dziesiątki komponentów client na landing
Budżet INP w LHCI (opcjonalny assert na experimental-interaction-to-next-paint) lub monitoring RUM (web-vitals library → endpoint na Branchly / analytics).
RUM po deploy — zamykanie pętli
LHCI = syntetyka w CI. Po deploy na DevStudioIT Cloud dodaj RUM:
import { onLCP, onINP, onCLS } from 'web-vitals';
function sendToAnalytics(metric: Metric) {
navigator.sendBeacon('/api/vitals', JSON.stringify(metric));
}
onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);Porównuj percentyl 75 z CrUX co tydzień. Jeśli CI zielone, a RUM czerwone — problem TTFB regionu, adblock na tagach, lub trasa CDN inna niż localhost CI.
Eskalacja gdy budżet blokuje feature
Proces bez „wyłączania LHCI na stałe":
- Feature flag — włączenie po optymalizacji
- Tymczasowy wyjątek w assert z ticketem i datą usunięcia
- Split bundle — lazy load ciężkiego modułu
- Odrzucenie scope — MVP bez animacji 3D
Permanentne obniżenie minScore to dług techniczny w metrykach — wraca jako spadek konwersji.
FAQ
Czy desktop też testować w CI?
Tak, ale mobile assert jest obowiązkowy — Google CWV field data mobile-first dla większości stron B2B. Desktop może być warn.
Performance 0,85 vs LCP 2,5 s — co ważniejsze?
Assertuj bezpośrednio LCP/CLS/INP — score jest syntetycznym agregatem. Score 0,9 przy LCP 2,6 s nadal failuje dobry próg CWV.
Lighthouse CI na monorepo?
Osobny lighthouserc.json per app lub url w matrix. Budżet per produkt — landing marketing ≠ dashboard SaaS.
Kto płaci za regresję wydajności?
Spadek Quality Score w Ads, niższy organic CTR, mniej leadów z formularza. Budżet w CI to ubezpieczenie o wartości wielokrotności kosztu utrzymania pipeline.
Chcesz performance budget w swoim repozytorium?
- Skontaktuj się z nami — wdrożymy Lighthouse CI, progi CWV i review proces pod Twój zespół
- Lighthouse CI Next.js — pełna konfiguracja workflow
- Optymalizacja wydajności strony — praktyki poza CI
O autorze
Budujemy szybkie strony WWW, aplikacje web/mobile, chatboty AI i hosting — z naciskiem na SEO i konwersję.
Przydatne linki
Od teorii do produkcji — Branchly, hosting i realizacje.
