PWA Studio vs headless customizado no Magento: visão de dev
Quando o dono de uma loja Magento pergunta sobre headless, a conversa costuma misturar três coisas diferentes: o PWA Studio da Adobe, um frontend headless customizado num framework como Next.js ou Nuxt, e a ideia geral de uma storefront mais rápida. Elas têm custos muito diferentes. Este artigo compara o PWA Studio com um build headless customizado do ponto de vista do time que precisa construir e manter, e coloca os dois ao lado da opção que muitas lojas deveriam considerar primeiro, um theme server rendered rápido.
O que headless significa para o Magento
Num setup headless, o Magento deixa de renderizar o HTML da storefront. Uma aplicação de frontend separada renderiza as páginas e conversa com o Magento por APIs, principalmente GraphQL. O Magento continua fazendo o que faz bem: catálogo, preços, promoções, carrinho, lógica de checkout, pedidos, clientes e o admin.
O frontend vira uma segunda aplicação, com repositório, build, hospedagem, monitoramento e ciclo de release próprios. Esse é o principal custo, e é permanente. Tudo que numa loja Magento clássica é uma mudança de theme vira uma mudança numa base de código separada, muitas vezes de outro time.
O PWA Studio em resumo
O PWA Studio é o conjunto de ferramentas da Adobe para construir uma storefront em React sobre o GraphQL do Magento. As partes principais são:
- Venia, uma storefront de referência que você gera e depois customiza.
- Peregrine, uma biblioteca de hooks e talons do React que guardam a lógica da storefront (carrinho, checkout, produto, categoria).
- Buildpack, a ferramenta de build baseada em webpack, e um sistema de extensões com targets e intercepts.
- UPWARD, uma especificação e um servidor para entregar o app shell e fazer proxy das requisições, com uma implementação em PHP que pode rodar dentro do Magento.
O atrativo é ter uma storefront funcionando desde o primeiro dia, feita pela mesma empresa que faz o Magento, com checkout, conta, busca e renderização de conteúdo do Page Builder já ligados ao GraphQL.
As preocupações práticas
- Modelo de customização. Mudar o Venia a fundo significa aprender o sistema de targets e intercepts ou fazer fork de componentes. Atualizar um Venia muito alterado é difícil.
- Ecossistema. A maioria das extensões do Magento não tem frontend para o PWA Studio. Tudo que tem UI na storefront precisa ser refeito em React, e a parte de backend precisa de cobertura no GraphQL, o que muitas extensões não oferecem.
- Direção. O foco de storefront da própria Adobe para o Adobe Commerce migrou para uma storefront construída sobre Edge Delivery Services com drop-in components. O PWA Studio ainda existe, mas antes de começar um projeto novo nele, veja no repositório as releases recentes e as issues abertas e decida se o ritmo te deixa confortável.
Um frontend headless customizado
O outro caminho é construir o frontend num framework de uso geral como Next.js, Nuxt ou Remix, ou numa plataforma comercial de frontend headless, conversando com o GraphQL do Magento. O guia de storefront headless com Next.js mostra como isso fica em código.
O que você ganha em comparação com o PWA Studio:
- Um framework mainstream, com um grande mercado de contratação e documentação que não é específica do Magento.
- Controle total sobre a estratégia de renderização: static generation, server rendering, revalidação incremental, edge rendering.
- Liberdade para combinar o Magento com um CMS headless, um serviço de busca ou outras APIs num único frontend.
O que você paga:
- Você constrói tudo. Páginas de categoria com layered navigation, páginas de produto para cada tipo de produto que você vende, carrinho, checkout, conta do cliente, wishlist, histórico de pedidos, redefinição de senha, newsletter, troca de store, páginas de erro. Cada uma é um conjunto de queries GraphQL e estados de UI.
- Checkout e pagamentos são o maior item isolado. Cada provedor de pagamento precisa ter o SDK de frontend integrado ao seu checkout e ao método de pagamento do Magento no backend.
- Toda extensão do Magento com funcionalidades de storefront precisa de suporte a GraphQL e de uma nova UI.
As partes difíceis em qualquer build headless
Cobertura do GraphQL
O GraphQL do core cobre muita coisa, mas não tudo. Atributos de produto customizados, campos customizados de checkout, funcionalidades B2B e extensões de terceiros muitas vezes precisam de resolvers customizados. Planeje escrevê-los. O padrão está em custom GraphQL query resolvers.
Cache
Numa loja clássica o Varnish cacheia páginas inteiras e os dados do cliente carregam separadamente. No headless o frontend tem sua própria camada de cache, e as queries GraphQL também podem ser cacheadas no lado do Magento. Acertar os dois, e invalidar os dois quando um produto muda, exige design de verdade. Veja cache e performance do GraphQL.
SEO e URLs
O frontend precisa resolver os URL rewrites do Magento, renderizar no servidor para os crawlers, gerar tags canonical, hreflang, dados estruturados e status codes corretos para páginas inexistentes e redirects. Themes clássicos recebem a maior parte disso do Magento e de extensões de SEO. No headless você reconstrói.
Conteúdo
Times de marketing que usam Page Builder ou blocos CMS precisam que esse conteúdo seja renderizado no novo frontend. Ou você renderiza o HTML do Page Builder (e seus estilos) no frontend, ou move a gestão de conteúdo para um CMS headless. As duas coisas dão trabalho.
Preview e funcionalidades do admin
Funcionalidades que dependem de o Magento renderizar a página, como alguns comportamentos de preview e staging, se comportam diferente ou exigem trabalho extra quando o Magento não renderiza mais a storefront.
Comparação
| Tema | PWA Studio | Headless customizado | Theme server rendered (ex.: Hyvä) |
|---|---|---|---|
| Ponto de partida | Loja de referência Venia | App vazio ou um starter | Theme completo |
| Stack | React, Apollo, bibliotecas do PWA Studio | Sua escolha | Templates PHP, Alpine.js, Tailwind |
| Extensões com UI | Refazer em React mais GraphQL | Refazer no seu framework mais GraphQL | Módulos de compatibilidade ou fallback |
| Hospedagem | Magento mais frontend (ou UPWARD PHP) | Magento mais hospedagem do frontend | Só o Magento |
| Habilidades do time | React mais particularidades do PWA Studio | Framework mais GraphQL | Frontend Magento |
| Esforço típico | Alto | O mais alto | Médio |
Quando headless faz sentido
O headless vale o custo quando existe um motivo além da velocidade da página. Alguns bons motivos:
- A loja é um de vários canais atendidos por um frontend compartilhado, por exemplo um site de marca com muito conteúdo e e-commerce embutido.
- Já existe um time de frontend forte trabalhando num framework JavaScript, e o conhecimento de Magento é pouco.
- A experiência exige coisas que um theme server rendered não consegue fazer de forma razoável, como um app do tipo product builder que é o centro do negócio.
- O e-commerce está migrando do Magento para outro backend com o tempo, e o frontend deve sobreviver ao backend.
Se o objetivo é principalmente melhores Core Web Vitals e uma experiência moderna para o desenvolvedor de frontend, um theme server rendered como o Hyvä normalmente traz a maior parte do benefício por uma fração do custo e mantém o ecossistema de extensões funcionando. A comparação com o Luma está em Hyvä vs Luma para desenvolvedores.
Perguntas para responder antes de decidir
- Quem vai ser dono do frontend daqui a dois anos, e essa pessoa conhece a stack escolhida?
- Quais extensões têm funcionalidades de storefront, e elas expõem GraphQL?
- Quais métodos de pagamento são necessários, e eles têm SDKs de frontend que se encaixam na stack escolhida?
- Como o time de marketing cria conteúdo hoje, e como vai criar depois?
- Qual o orçamento para manter duas aplicações em produção, incluindo monitoramento e plantão?
Respostas honestas a essas perguntas costumam deixar a decisão óbvia. Se não deixarem, faça um protótipo da página mais difícil (muitas vezes a página de produto do seu tipo de produto mais complexo) na stack candidata antes de se comprometer.
FAQ
O PWA Studio ainda é mantido?
Ele ainda existe, mas o foco de storefront da Adobe para o Adobe Commerce migrou para a storefront baseada em Edge Delivery Services. Veja as releases recentes do repositório do PWA Studio antes de começar um projeto novo nele.
Uma loja Magento headless precisa de GraphQL?
Na prática, sim. O GraphQL do core cobre catálogo, carrinho, checkout e fluxos de cliente. O REST pode preencher lacunas, mas a maioria dos frontends headless usa GraphQL e adiciona resolvers customizados para os dados que faltam.
Headless é mais rápido que um theme do Magento?
Pode ser, mas um theme server rendered bem feito como o Hyvä também chega a bons Core Web Vitals. Velocidade sozinha raramente justifica manter uma segunda aplicação.
Qual o maior custo escondido do headless?
Reconstruir tudo que as extensões do Magento e o theme padrão já oferecem, principalmente checkout, integrações de pagamento, detalhes de SEO e renderização de conteúdo.
Atendo como freelancer em Magento e Adobe Commerce, incluindo revisões de arquitetura headless. Se você precisa de ajuda com isso, fale comigo.
Artigos relacionados
Login de cliente, tokens e segurança no GraphQL do Magento 2
Autenticação de cliente com o GraphQL do Magento 2: tokens de login, lifetime, logout, cadastro, reset de senha, armazenamento seguro do token, expiração e reCAPTCHA.
Cache e performance do GraphQL no Magento 2: guia prático
Deixe o GraphQL do Magento 2 rápido: queries GET, cache no Varnish, X-Magento-Cache-Id, identities do @cache em resolvers customizados, batching de N+1 e limites de complexidade.
Checkout GraphQL no Magento 2: das mutations do carrinho ao pedido
Fluxo completo de checkout via GraphQL no Magento 2: carrinhos de visitante e cliente, addProductsToCart, endereços, frete, pagamento, placeOrder, merge de carrinhos e erros comuns.
GraphQL no Magento 2: adicione uma query e um resolver customizados
Como adicionar uma query GraphQL customizada no Magento 2.4: schema.graphqls, resolver com ResolverInterface, erros, checagem de auth e cache identity para o Varnish.