Single Page Application w e-commerce: 3 ciche zabójcy konwersji i jak je naprawić
Gdybyś zapytał przeciętnego CTO, co jest największym zagrożeniem dla sklepu e-commerce, pewnie usłyszałbyś o wolnych API, złej optymalizacji obrazów czy problemach z cache. Rzadko kto wymieni architekturę frontendu. A to błąd.
Obserwuję od kilku lat, jak sklepy oparte na SPA (Single Page Application) notują spadki konwersji, które zespoły tłumaczą wszystkim – od zmiany algorytmu Google po sezonowość. Tymczasem winna jest często sama struktura aplikacji. SPA kusi szybkością po pierwszym załadowaniu i płynnością nawigacji, ale niesie ze sobą trzy ciche problemy, które bezpośrednio uderzają w sprzedaż.
1. Iluzja szybkości – pierwsze wrażenie, które rujnuje wszystko
SPA ładuje się „na raz” – cały bundle JavaScript, cała logika, cały stan. Po pierwszym wejściu użytkownik czeka dłużej, niż byś się spodziewał. Tylko że to nie jest zwykłe dłuższe ładowanie – to ładowanie, które blokuje renderowanie.
W mojej praktyce widziałem sklep odzieżowy, który po wdrożeniu SPA zyskał błyskawiczną nawigację między kategoriami, ale stracił 22% konwersji na stronie głównej. Powód? Time to Interactive wydłużył się z 2,1 s do 4,8 s. Klient widział pusty ekran lub szkielet, ale nie mógł kliknąć.
Co robić?
- Wdróż code splitting bez kompromisów – ładuj tylko to, co jest potrzebne na dany widok.
- Użyj prerenderowania lub SSR (Server-Side Rendering) dla pierwszego wejścia. Możesz to zrobić selektywnie – tylko dla stron lądowania i produktów.
- Mierz Time to Interactive jako kluczowy KPI, nie pomijaj go na rzecz Lighthouse.
2. Zerwane linki – SEO, które kuleje
SPA domyślnie nie ma tradycyjnych URL-i – wszystko dzieje się w jednym oknie. Nawet jeśli używasz React Routera, treść często nie jest indeksowana tak, jak powinna. Google deklaruje, że umie indeksować JavaScript, ale w praktyce bywa różnie – szczególnie przy dynamicznych listach produktów, filtrach czy stronicowaniu.
Pamiętam audyt sklepu z elektroniką, który przez pół roku stracił 40% ruchu organicznego z kategorii. Powód? Googlebot nie pobierał treści produktów ładowanych przez API po stronie klienta. Firma była przekonana, że wszystko działa, bo ich zespół testował w Chrome, ale robot indeksujący miał wyłączony JavaScript.
Co robić?
- Zastosuj dynamic rendering – serwuj statyczny HTML dla botów, a SPA dla użytkowników.
- Wdróż metadata API – upewnij się, że każda podstrona ma unikalny tytuł i opis.
- Regularnie testuj w Google Search Console – sprawdzaj, co faktycznie indeksuje bot.
3. Utrata stanu – koszyk, który znika
SPA przechowuje stan w pamięci przeglądarki. Jeśli użytkownik odświeży stronę, zamknie kartę lub wejdzie z innego urządzenia – stan ginie. W kontekście e-commerce oznacza to porzucone koszyki, zresetowane filtry i frustrację.
Przypadek z życia: klient dodał produkt do koszyka, przeszedł do szczegółów, zrobił screena, żeby pokazać żonie – i po powrocie koszyk był pusty. Nie wrócił.
Co robić?
- Synchronizuj stan koszyka z backendem lub localStorage – najlepiej obie te opcje.
- Dodaj przywracanie sesji – przy ładowaniu strony sprawdzaj, czy istnieje zapisany koszyk.
- Unikaj czystego stanu w Reduxie bez trwałego nośnika – to pułapka.
Podsumowanie
SPA to świetne narzędzie do budowania interaktywnych aplikacji, ale dla e-commerce wymaga świadomego projektowania. Nie daj się zwieść pozornej szybkości – liczby na monitoringu często maskują problemy. Zanim zdecydujesz się na SPA, odpowiedz sobie na trzy pytania:
- Czy pierwsze ładowanie jest poniżej 2 sekund?
- Czy bot Google widzi całą treść?
- Czy koszyk przetrwa odświeżenie kartki?
Jeśli brakuje ci czasu lub zespołu, by to ogarnąć – warto rozważyć hybrydowe podejście. JurskiTech specjalizuje się w takich realnych wdrożeniach. Nie sprzedajemy gotowych szablonów – analizujemy Twój ruch, konwersję i architekturę, by zaproponować konkretne rozwiązania.
Pamiętaj – klient nie wie, czy używasz SPA, Vue, czy PHP. Widzi tylko, czy strona działa i czy może kupić bez przeszkód. Zadbaj o to, by architektura nie przeszkadzała w biznesie.


