Storefront → Templates → Migração
Checklist de migração
Passe por essa lista antes de mergear o PR de migração.
Use esta lista como o portão entre "migração feita" e "merge para main". Se algum item está sem marcação e você não tem motivo escrito, corrija antes.
Build & types
-
npm run typechecklimpo (sem erros, sem warnings deanyimplícito). -
npm run lintlimpo. -
npx vite buildproduz bundle sem warnings de imports faltando. -
npx wrangler deploy --dry-runpassa. -
npx tsr generatesem erros. - Sem imports de
@deco/deco/*,$fresh/*,preact/*ou@preact/signals. - Sem chamadas
Deno.env.get(...)fora denode_modules. - Sem diretório
src/islands/. - Shims específicos obsoletos foram removidos ou documentados após validar seus substitutos.
Arquivos gerados
-
src/server/cms/blocks.gen.jsonexiste e não está vazio. -
src/server/cms/sections.gen.tslista todas as sections esperadas. -
src/server/cms/loaders.gen.tslista todos os loaders esperados. -
meta.gen.jsonvalida (/live/_metaretorna 200 com conteúdo válido).
Wiring obrigatório
- Imports do
src/setup.tsvêm primeiro emsrc/server.tsesrc/worker-entry.ts. -
src/worker-entry.tschamacreateDecoWorkerEntrycom os handlers de admin 7.x do guia TanStack. -
vite.config.tsincluidecoVitePlugin()e a lista dededupe. -
wrangler.jsonctem flagsnodejs_compateno_handle_cross_request_promise_resolution. -
wrangler.jsoncmainaponta para./src/worker-entry.ts.
Rotas
-
src/routes/__root.tsxexiste e renderiza o shell global. -
src/routes/index.tsxusacmsHomeRouteConfig. -
src/routes/$.tsxusacmsRouteConfig. -
siteNamecorresponde à configuração existente do storefront. Confira separadamente a importação do repositório e o preview no Studio; veja migração do editor. -
ignoreSearchParamsincluiskuId(e qualquer outro param de variante que seu site usa).
Sections
- Toda section em
.deco/blocks/resolve para um arquivo registrado (sem warnings de "section not found" nonpm run dev). - Toda section que tinha loader no v1 ainda tem em Blocks 7.x.
- Nenhuma section default-exporta algo que não é componente (funções, objetos etc.).
- Exports de
LoadingFallbackpara cada section de prateleira/grid.
Commerce
VTEX
- Block
deco-vtexno admin temaccount,appKey,appTokenconfigurados. -
setVtexFetch(createInstrumentedFetch("vtex"))roda nosetup.ts. - Se você usava fetch regional no v1, porte — veja VTEX gotchas para o padrão canônico.
- PDP renderiza o produto certo com o preço certo para a região certa.
- PLP renderiza produtos e respeita filtros de facets.
- Busca retorna resultados.
- Carrinho adiciona, atualiza, remove via
useCart. - Fluxo de auth (sign-in, sign-up, logout) funciona via
useUser. - Wishlist adiciona/remove via
useWishlist.
Shopify
- Block
deco-shopifytemstoreNameestorefrontAccessToken. - PDP renderiza.
- PLP renderiza.
- Cookie do carrinho é setado no primeiro acesso (
getCartcomresponseHeaders).
Admin
-
/live/_metaretorna 200 com JSON Schema válido. -
/.decofileretorna 200 com todos os blocks. - Editar uma section no admin dispara
/deco/renderbem-sucedido e mostra preview atualizado. - O conteúdo é salvo na branch de trabalho, revisado por PR conforme a política do projeto, mergeado e entregue pelo deploy configurado. Confira a página pública; teste invalidação de cache no runtime/KV separadamente apenas quando essa integração de entrega estiver configurada.
Performance
- FCP da homepage dentro do orçamento (alvo: ≤1.5s em cold cache).
- Sections deferred renderizam o
LoadingFallback, não espaço em branco. - Sem erros de hydration mismatch no console.
- Sem CLS de scripts de terceiros no head (GTM etc.).
-
wrangler tail --format prettymostra timings razoáveis sob carga.
Cache
- Profile de cache de borda configurado para home, PDP, PLP e busca.
- Endpoint de purge funciona (
?__deco_purge_cache=1). - Assets estáticos passam pelo bypass (retornam de
caches.defaultrapidamente).
SEO & robots
-
robots.txtcorreto. -
sitemap.xmlgerado e acessível. - Title e meta description de PDP renderizam server-side.
- Tags Open Graph renderizam para previews de compartilhamento.
- JsonLd estruturado renderiza em PDP e PLP.
Observabilidade
- Traces OpenTelemetry visíveis no dashboard para requests representativas.
- Headers Server-Timing aparecem em respostas de produção.
- Endpoint de health (
/_healthou equivalente) retorna 200.
Deploy
- Secrets configurados no Wrangler:
appKey/appToken/ API keys. - Bindings KV (e.g.
SITES_KV) configurados se você usa A/B ou redirects armazenados. - DNS / domínio custom configurado se aplicável.
-
wrangler deploypassa.
QA pass
- Click-through manual de:
- Home → categoria → PDP → adicionar ao carrinho → entrada do checkout.
- Busca → resultado → PDP.
- Login → conta → logout.
- Mobile (device real ou emulador) renderiza certo — header, drawer, PDP, carrinho.
- Render de bot (curl como Googlebot) retorna HTML completo para SEO.
Pós-merge
- Tag de release.
- Atualizar docs internas / runbooks.
- Notificar time de conteúdo de qualquer mudança no comportamento do admin.
- Agendar revisão em +1 semana e +1 mês para pegar regressões lentas.
Pular um passo é arriscado. Os incidentes de produção mais comuns vindos de sites migrados rastreiam para itens do checklist que estavam "provavelmente OK" em vez de verificados.