Czym są page buildery?
Page buildery to wtyczki takie jak Elementor, Divi, Beaver Builder czy WPBakery, które pozwalają budować strony WordPress metodą "przeciągnij i upuść" bez pisania kodu. Brzmią kusząco — i dla wielu projektów naprawdę są właściwym wyborem. Ale gdy budujesz stronę pod wydajność, SEO i długoterminowy rozwój — własny kod daje Ci przewagi, których żaden builder nie da.
Artykuł nie jest anty-builderowy manifestem. Buildery mają swoje miejsce — małe projekty, klienci edytujący treść samodzielnie, szybkie MVP. Chodzi o świadomy wybór, a nie o używanie buildera jako domyślnego rozwiązania dla każdego projektu.
Wydajność i rozmiar kodu
Każdy popularny builder ładuje kilkaset kilobajtów CSS i JS na każdej stronie — niezależnie od tego, czy dany widżet jest użyty czy nie. Elementor Free ładuje typowo 300-500 kB zasobów. Na stronie z prostym layoutem i własnym kodem te same efekty uzyskasz w 20-40 kB.
# Typowy wynik PageSpeed Insights (mobile) dla tej samej strony:
# Z Elementorem: Score: 52, LCP: 4.8s, TBT: 720ms
# Z własnym kodem: Score: 94, LCP: 1.2s, TBT: 45ms
# Różnica jest dramatyczna na słabszych urządzeniach mobilnych
Core Web Vitals (LCP, FID/INP, CLS) bezpośrednio wpływają na ranking w Google. Ciężki builder utrudnia osiągnięcie dobrych wyników, bo ładuje DOM kilkaset węzłów głębiej niż potrzeba i blokuje renderowanie JavaScript.
Vendor lock-in
Gdy budujesz stronę w Elementorze, każdy post zawiera shortcody i serializowane struktury danych specyficzne dla Elementora. Gdy za 3 lata firma Elementor zmieni model licencyjny, zniknie lub poważnie zmieni API — zostaniesz z setkami "zepsutych" stron, które nie działają bez aktywnej subskrypcji.
Własny kod HTML + CSS + PHP należy do Ciebie absolutnie: nie ma licencji, nie ma subskrypcji, nie ma ryzyka że autor wtyczki zdecyduje o deprecacie kluczowej funkcji.
Możliwości dostosowania
Builder zawsze ma granicę — coś czego nie da się zrobić przez GUI bez kupowania dodatkowych addons lub pisania własnych widżetów. Własny kod nie ma żadnych ograniczeń:
- Animacje GSAP z dokładnym timingiem i scroll-triggerami
- Własne komponenty WebGL (Three.js, canvas)
- Precyzyjna dostępność (ARIA, focus management, keyboard navigation)
- Custom scroll behavior i infinite scroll
- Integracje z dowolnym zewnętrznym API
- Optymalizacja krytycznej ścieżki CSS (Critical CSS inline)
// Przykład: animacja GSAP z ScrollTrigger — niemożliwa do osiągnięcia
// w builderze z taką precyzją
import gsap from 'gsap';
import ScrollTrigger from 'gsap/ScrollTrigger';
gsap.registerPlugin(ScrollTrigger);
gsap.from('.hero__title', {
y: 60,
opacity: 0,
duration: 0.9,
ease: 'power3.out',
});
gsap.from('.card', {
y: 40,
opacity: 0,
stagger: 0.12,
ease: 'power2.out',
scrollTrigger: {
trigger: '.cards-section',
start: 'top 80%',
},
});
SEO i dostępność
Buildery generują nadmiarowy HTML — dziesiątki zagnieżdżonych div.elementor-*,
inline styles, skrypty blokujące rendering. Własny kod daje Ci kontrolę
nad semantyczną strukturą HTML, co przekłada się na:
- Lepsze pozycje w wynikach wyszukiwania (mniej "szumu" dla crawlerów)
- Poprawną hierarchię nagłówków (h1-h6 bez przypadkowych duplikatów)
- Dostępność dla czytników ekranowych (poprawne role ARIA)
- Mniejszy DOM = szybszy paint = lepszy LCP
<!-- Porównanie: -->
<!-- Elementor -- wiele div.elementor-* -->
<div class="elementor-section elementor-top-section elementor-element
elementor-element-abc123 elementor-section-boxed elementor-section-height-default">
<div class="elementor-container elementor-column-gap-default">
<div class="elementor-column elementor-col-100 elementor-top-column">
<div class="elementor-widget-wrap">
<h1 class="elementor-heading-title">Tytuł</h1>
</div>
</div>
</div>
</div>
<!-- Własny kod -- semantyka i minimalny DOM -->
<section class="hero">
<h1 class="hero__title">Tytuł</h1>
</section>
Kiedy builder jest właściwym wyborem?
Uczciwa odpowiedź — są sytuacje, gdy builder wygrywa:
- Klient sam edytuje treść — nie ma dewelopera w zespole
- Strona wizytówkowa, nieduża — kilka sekcji, niewymagające SEO
- Prototyp lub MVP — szybkie wdrożenie ważniejsze niż wydajność
- Brak budżetu na custom dev — lepszy działający builder niż nieukończony własny kod
Złoty środek: Możesz używać Gutenberga (wbudowanego edytora blokowego) z własnymi blokami napisanymi w React. Klient ma wygodny edytor, Ty masz kontrolę nad jakością kodu i wydajnością. To najlepsze z obu światów.
Podsumowanie
Własny kod zamiast buildera to nie snobizm techniczny — to konkretna przewaga w wydajności, SEO, dostępności i niezależności. W dzisiejszych czasach, gdy Core Web Vitals wpływają na ranking, a użytkownicy mobilni oczekują ładowania poniżej 2 sekund, każde zbędne 300 kB CSS z buildera kosztuje Cię pozycję w Google i konwersje.