Punkt startowy
Sklep urósł do Frankensteina: dużo pluginów, kilka lat nadpisań motywu, działająca finalizacja zakupu i Core Web Vitals na czerwono. Kupujący chciał headless front, ale nie godził się na zepsucie finalizacji zakupu, na wyłącznie amerykańską jurysdykcję ani na zamknięcie frameworka frontendu na następną dekadę.
Trzy ograniczenia, które razem szybko zawęziły architekturę.
Decyzja architektoniczna
WooCommerce został handlowym źródłem prawdy. Front przeszedł na Astro na Cloudflare Pages z Workers dla logiki na brzegu sieci. UCP dostarczył granicę integracji, więc front można w przyszłości przepisać bez ruszania zaplecza.
Cloudflare wygrał jurysdykcją EU, TTFB w ruchu europejskim i przewidywalnością kosztu. UCP wygrał otwartością i odwracalnością, nie modą.
Granica koszyka i finalizacji zakupu
Koszyk to wyspa React wewnątrz powłoki Astro. Finalizacja zakupu została w WooCommerce, z przejściem przez przekierowanie zamiast iframe. To zostawiło zgodność płatności, podatki i stany magazynowe w WooCommerce, czyli tam, gdzie chciał je mieć księgowy kupującego.
Większość przyspieszenia przyszła ze strony katalogu. Statycznie renderowane kategorie i produkty z pamięcią podręczną na brzegu sieci plus mała hydratacja koszyka po stronie klienta pobiły poprzedni model w pełni renderowany w PHP.
Model dowożenia
Prace szły etapami: katalog najpierw, wyszukiwarka, koszyk, na końcu finalizacja zakupu. Każdy etap był pod przełącznikiem funkcji na brzegu sieci. Plan powrotu oznaczał przełączenie, nie nowe wdrożenie.
Zespół redakcyjny i produktowy dalej pracował w panelu WordPress. Headless nie zmienił im dnia. To była świadoma decyzja.
Przedziały wyników
Dokładne liczby są poufne. Publicznie: Core Web Vitals katalogu weszły w zielone, TTFB w europejskiej mieszance ruchu wyraźnie spadł, a kupujący zmniejszył ekspozycję na jedną jurysdykcję hostingową.
Lekcja: headless WooCommerce wygrywa nie przez zastąpienie WordPressa, tylko przez czystą granicę integracji, dzięki której każdą warstwę można usprawniać bez dotykania pozostałych.