Visão geral da migração
Migrar um storefront Fresh/Deno descontinuado para o runtime Blocks 7.x publicado.
Fresh e o antigo admin da deco.cx foram descontinuados. Esta é a entrada para migrar um site Fresh/Deno existente para Blocks 7.x publicado; migrar o editor para o Studio é uma etapa separada. O playbook completo está espalhado nesta seção; esta página diz o que ler em qual ordem.
Leia nesta ordem
- Visão geral da migração — você está aqui.
- Playbook — passo a passo manual, fase por fase.
- Script de migração — o que
npx -p @decocms/blocks-cli deco-migratefaz. - Agent skills — usar IA de coding para a cauda longa.
- Checklist — validação antes do merge.
Matriz de decisão
| Situação | Caminho recomendado |
|---|---|
| Site médio, time confortável | Rodar deco-migrate, ajustar o que ele apontar, deployar. |
| Site grande (100+ sections), muito VTEX | Rodar deco-migrate em --dry-run, revisar relatório, executar. Usar Agent Skill para ajustes manuais. |
| Site pequeno, controle total | Port manual — partir da receita de Começar do zero e copiar suas sections, components e .deco/blocks/. |
| Worker bem customizado (proxies, harness AB) | Rodar deco-migrate, depois portar a lógica custom do worker manualmente usando Referência do worker entry. |
Use a documentação Fresh apenas para interpretar uma instalação antiga durante a migração; ela não oferece um compromisso de manutenção contínua.
Compatibilidade de versões
O destino da migração é Blocks 7.x, com os pacotes separados @decocms/blocks, @decocms/blocks-admin, @decocms/tanstack e @decocms/blocks-cli. Instale individualmente versões 7.x compatíveis dos provedores e registre as versões resolvidas no lockfile. Blocks Next tem outra API e não é o destino desta migração.
Use a configuração de dependências do quickstart 7.x e da referência de migração Fresh. Não use exemplos antigos de pacotes 2.x/1.x nem uma dependência literal @decocms/apps-*.
O que sobrevive à migração
- Conteúdo do repositório — preserve o JSON e reconcilie chaves renomeadas, apps instalados e funções registradas com o relatório da migração.
- Todas as interfaces
Propsde section — sem reescrita de schema. - Configuração de matchers — porte as funções e confira requisições reais, atribuição de variantes e cache pelo contrato 7.x.
- SEO do site —
configureWebsite({ seo })de@decocms/apps-websiteespelha o config do v1. - Configuração de commerce — preserve as opções necessárias e valide assinaturas de loaders/actions, cookies e registro no runtime atual.
O que você vai ter que refazer
- Tudo em
src/islands/— islands não existem em React. A maior parte vira componentes"use client", alguns viram parte da section pai, outros viram helpers. - Padrões
useScript(fn)— o pattern do v1 não sobrevive. UseinlineScript, mova para o client ou reestruture. - Rotas Fresh customizadas — porte para file routes do TanStack Router.
- Leituras
Deno.env— use o acesso ao ambiente Worker ou o mecanismo de ambiente do servidor suportado pelo setup 7.x;RequestContext.currentnão tem propriedadeenv. - Steps de build customizados em
deno.json— traduza para scripts empackage.json.
Orçamento de tempo (aproximado)
Para uma loja média (50-100 sections):
| Fase | Tempo |
|---|---|
Rodar deco-migrate | 5-15 minutos |
| Resolver ajustes manuais (typecheck + lint limpos) | 2-8 horas |
| Plugar hooks de commerce + verificar carrinho/PDP/PLP | 1-3 dias |
| Pass de performance (deferred sections, profiles de cache) | 1-2 dias |
| QA + deploy de produção | 2-5 dias |
Ou seja: mais ou menos 1-2 semanas para um engenheiro só, mais rápido em par, mais lento se houver muita lógica custom.
O que NÃO fazer
- Separe os imports de runtime. Migre a aplicação em uma branch ou worktree própria. Um monorepo pode conter aplicações Fresh e 7.x isoladas; não misture imports de runtimes incompatíveis na mesma aplicação.
- Revise os shims da migração. Substitua imports antigos e remova shims específicos do site apenas depois de validar seus substitutos; a compatibilidade fornecida pelo framework está no guia 7.x.
- Não corrija manualmente imports que o script vai resolver. Rode o script primeiro; ele cobre 70+ regras de reescrita.
- Não pule o checklist. Type-clean, lint-clean e build-clean não são o mesmo que correto em runtime — verifique carrinho, PDP, PLP e busca de ponta a ponta.