PHP / Magento Dev Blog

  • Publikacje
  • O autorze
  • Kontakt

PWA Studio vs Hyvä vs Luma – rzetelne porównanie TCO i kiedy który

by Henryk Tews / środa, 16 października 2024 / Opublikowano w Magento 2

Dwa lata temu pisałem o Hyvä jako alternatywie dla Lumy. Od tamtej pory ekosystem dojrzał, a wybór między PWA Studio (React, headless API), Hyvä (Alpine.js, server-side) i klasyczną Lumą stał się pytaniem które pojawia się przy każdym nowym projekcie Magento. Robię rzetelne porównanie tych trzech ścieżek – z perspektywy kogoś kto wdrażał każdą z nich.

Trzy architektury frontendowe dla Magento 2

Aspekt Luma (klasyczny) Hyvä PWA Studio
Renderowanie Server-side (PHP) Server-side (PHP) Client-side (React SPA)
JS Framework RequireJS + knockout.js Alpine.js React + GraphQL
CSS LESS (skompilowany) Tailwind CSS CSS Modules / Venia UI
SEO Doskonałe (SSR) Doskonałe (SSR) Wymaga SSR (Next.js) lub SSG
PageSpeed typowy 30-55 85-95 60-80 (zależy od konfiguracji)
Licencja Open Source Płatna (~1000 EUR) Open Source (Adobe)
Checkout Wbudowany Hyvä Checkout (dodatkowa opłata) Wbudowany (React)

Hyvä – zalety i ograniczenia po 2 latach

Po kilku wdrożeniach Hyvä mam klarowny obraz kiedy to właściwy wybór:

Zalety które się potwierdziły:

  • PageSpeed 90+ jest realny bez heroicznych optymalizacji – to wynika z architektury
  • Developerzy PHP szybko piszą szablony – Alpine.js jest prostszy niż knockout.js
  • Mniej JavaScript = mniej podatności i prostsze debugowanie
  • Integracja z Magento backend bez API – layout XML działa jak w Lumie

Ograniczenia które boleją:

  • Kompatybilność modułów zewnętrznych – każdy moduł z knockout.js wymaga adaptera lub przepisania
  • Hyvä Checkout to osobna, dodatkowa płatność – bez niej zostaje Luma checkout (wolny)
  • Mniejsza społeczność niż Luma – mniej gotowych rozwiązań na marketplace
  • Tailwind purge CSS wymaga buildstepu – dodatkowa złożoność CI/CD
# Build Tailwind CSS w Hyvä - wymagane przy każdej zmianie klas
cd app/design/frontend/Vendor/MyHyvaTheme/web/tailwind
npm ci
npm run build-prod  # generuje purge CSS dla produkcji

# Wersja deweloperska z watch
npm run watch

# Integracja z pipeline Magento:
# bin/magento setup:static-content:deploy uruchamia automatycznie Tailwind build
# jeśli skonfigurujesz to w Gruntfile.js lub webpack

PWA Studio – kiedy ma sens

PWA Studio (Venia UI) to oficjalny Adobe framework oparty na React i GraphQL. Główne zastosowanie: sklepy gdzie doświadczenie mobilne jest priorytetem i masz zasoby frontendowe (React developerzy).

// PWA Studio - komponent produktu (React + GraphQL)
import React, { useState } from 'react';
import { useQuery } from '@apollo/client';
import { gql } from '@apollo/client';

const PRODUCT_QUERY = gql`
    query GetProduct($urlKey: String!) {
        products(filter: { url_key: { eq: $urlKey } }) {
            items {
                id
                name
                sku
                price_range {
                    minimum_price {
                        final_price { value currency }
                    }
                }
                media_gallery { url label }
                description { html }
            }
        }
    }
`;

function ProductPage({ urlKey }) {
    const { loading, error, data } = useQuery(PRODUCT_QUERY, {
        variables: { urlKey },
    });

    if (loading) return <ProductSkeleton />;
    if (error)   return <ErrorPage error={error} />;

    const product = data?.products?.items?.[0];
    if (!product) return <NotFound />;

    return (
        <div className={classes.root}>
            <ProductImages images={product.media_gallery} />
            <ProductDetails product={product} />
            <AddToCartButton productId={product.id} />
        </div>
    );
}

Zalety PWA Studio:

  • Oficjalne wsparcie Adobe – długoterminowo utrzymywane
  • App-like doświadczenie mobilne – nawigacja bez przeładowania strony
  • Łatwe dodawanie PWA features: offline cache, push notifications, instalacja na ekranie głównym
  • Dobre narzędzia dla React developerów (hot reload, TypeScript, testowanie)

Wady PWA Studio:

  • SEO wymaga SSR (Next.js lub dodatkowej konfiguracji) – SPA domyślnie słaby dla robotów
  • Wymaga React developerów – nie PHP developerów
  • Wolniejszy Time To First Byte – pobieranie bundle JS przed renderowaniem
  • Trudniejsza integracja z modułami Magento które mają tylko PHP/PHTML output

Framework decyzyjny – które podejście wybrać?

<?php

// Pseudokod decyzji :-) - poważnie, to realne pytania przy wyborze

function chooseFramework(Project $project): string
{
    // Budżet poniżej 5k EUR na frontend
    if ($project->budget < 5000) {
        return 'luma'; // minimum investment, proven solution
    }

    // Sklep B2B z dużo customowego kodu Magento
    if ($project->hasHeavyB2BCustomizations()) {
        return 'hyva'; // SSR, dobra integracja z Magento backend
    }

    // Prioritet mobile app experience + PWA features
    if ($project->needsPwaFeatures()) {
        return 'pwa_studio'; // push notifications, offline, install prompt
    }

    // Główny cel: szybkość strony i SEO bez dużych zasobów frontendowych
    if ($project->teamHasPhpDevs() && !$project->teamHasReactDevs()) {
        return 'hyva'; // PHP team może pisać Alpine.js szablony
    }

    // Duży sklep B2C z dedykowanym teamem frontend
    if ($project->hasDedicatedFrontendTeam()) {
        return 'pwa_studio'; // lub Next.js + Magento GraphQL
    }

    return 'hyva'; // safe default dla większości projektów
}

Koszty całkowite (TCO) – realistyczne liczby

Pozycja Luma Hyvä PWA Studio
Licencja frameworka 0 ~1000 EUR (+ Checkout ~500 EUR) 0
Wdrożenie (custom theme) Niski Średni Wysoki
Kompatybilność modułów Pełna Częściowa (adaptery) Wymaga API
Utrzymanie (miesięcznie) Niskie Średnie Wysokie
Koszty hostingu Standard Standard +Node.js serwer SSR

Podsumowanie

Nie ma złego wyboru jeśli pasuję do realiów projektu. Luma jest odpowiednia gdy masz istniejący sklep, niski budżet lub dużo zewnętrznych modułów. Hyvä to najlepszy wybór dla nowych projektów gdzie PHP team jest dominujący i SEO/PageSpeed są priorytetem – licencja zwraca się przez wyższe konwersje. PWA Studio ma sens gdy budujesz sklep z doświadczeniem aplikacji mobilnej i masz React developerów. Kluczowe pytanie to nie „który jest lepszy” ale „który pasuje do mojego zespołu, budżetu i wymagań”.

About Henryk Tews

Co możesz przeczytać następne

B2B – Company, Shared Catalog, Negotiable Quote, Requisition List, własne pluginy
Hyvä vs Luma benchmark – twarde liczby, LCP 3.5x szybszy, k6 load test, konwersja
MSI – Source, Stock, SSA, własny algorytm, migracja ze starego API
  • Publikacje
  • O autorze
  • Kontakt

© 2026 Created by

GÓRA
Zarządzaj zgodą
Aby zapewnić jak najlepsze wrażenia, korzystamy z technologii, takich jak pliki cookie, do przechowywania i/lub uzyskiwania dostępu do informacji o urządzeniu. Zgoda na te technologie pozwoli nam przetwarzać dane, takie jak zachowanie podczas przeglądania lub unikalne identyfikatory na tej stronie. Brak wyrażenia zgody lub wycofanie zgody może niekorzystnie wpłynąć na niektóre cechy i funkcje.
Funkcjonalne Zawsze aktywne
Przechowywanie lub dostęp do danych technicznych jest ściśle konieczny do uzasadnionego celu umożliwienia korzystania z konkretnej usługi wyraźnie żądanej przez subskrybenta lub użytkownika, lub wyłącznie w celu przeprowadzenia transmisji komunikatu przez sieć łączności elektronicznej.
Preferencje
Przechowywanie lub dostęp techniczny jest niezbędny do uzasadnionego celu przechowywania preferencji, o które nie prosi subskrybent lub użytkownik.
Statystyka
Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do celów statystycznych. Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do anonimowych celów statystycznych. Bez wezwania do sądu, dobrowolnego podporządkowania się dostawcy usług internetowych lub dodatkowych zapisów od strony trzeciej, informacje przechowywane lub pobierane wyłącznie w tym celu zwykle nie mogą być wykorzystywane do identyfikacji użytkownika.
Marketing
Przechowywanie lub dostęp techniczny jest wymagany do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na stronie internetowej lub na kilku stronach internetowych w podobnych celach marketingowych.
  • Zarządzaj opcjami
  • Zarządzaj serwisami
  • Zarządzaj {vendor_count} dostawcami
  • Przeczytaj więcej o tych celach
Zobacz preferencje
  • {title}
  • {title}
  • {title}