Atualização
Atualizando um aplicativo existente
Seção intitulada “Atualizando um aplicativo existente”Cinco etapas, da mais recente para a mais antiga. Comece na etapa logo acima da versão em que você está e desça — ou, se você estiver vindo da 0.12, comece de baixo e suba.
| Você está na versão | Leia | O que isso impacta |
|---|---|---|
| 0.18 – 0.20 | 0.18 → 0.21 | context.client.data deixa de compilar em um callback de coleção — faça consultas por meio de context.data — e selectedEntities dá lugar a uma seleção que pode representar linhas que ninguém carregou. As versões 0.19 e 0.20 não declaram breaking changes, portanto este é um único salto a partir da 0.18. |
| 0.17 | 0.17 → 0.18 | Onze breaking changes, a maioria sendo erros de compilação em vez de alterações silenciosas de comportamento. rebase.data desaparece em tempo de execução, os intervalos de peer dependencies se restringem a circunflexos (carets) e a versão mínima do Node passa a ser 22.22.0. |
| 0.14 – 0.16 | 0.14 → 0.17 | Os pacotes de admin foram renomeados, os recursos são declarados em vez de configurados e um bundle construído anteriormente não inicializará em um runtime atual. As versões 0.15 e 0.16 não quebram nada, portanto este é um único salto a partir da 0.14. |
| 0.13 | 0.13 → 0.14 | Todas as chaves trafegadas na rede (wire keys) usam camelCase, e o login anônimo passa a ser opt-in. |
| 0.12 | 0.12 → 0.13 | O maior salto e o único que altera quem pode ler seus dados. Ele remove o esquema auth, renomeia pacotes, altera o significado de id, remove o suporte a CJS, migra o painel de administração para o react-router 8 e corrige três maneiras pelas quais o acesso poderia ser concedido sem que você tivesse solicitado. |
As seções de cada página estão na ordem em que você deve realizá-las, e cada uma indica o sintoma que, de outra forma, você investigaria pelo lado errado.
Depois, independentemente da etapa realizada:
- O checklist de atualização abaixo — os greps e comandos que vale a pena executar depois, em um único bloco.
Upgrade checklist
Seção intitulada “Upgrade checklist”[ ] grep for authenticated() and (auth|rebase).uid() IS NOT NULL in config/collections/[ ] decide the intent of each rule; rewrite the ones that meant "public"[ ] replace not(authenticated()) with serverContext()[ ] if realtime.requireAuth was true with an AuthAdapter, treat the socket as having been open — verify RLS on every subscribable collection (section 2)[ ] SELECT ... FROM pg_policies — record the qual of every policy BEFORE[ ] update package names and imports[ ] grep for rebase.data — it is now rebase.dataAsAdmin (section 8)[ ] grep for the other ten removed deprecated exports (section 8)[ ] drop react-router-dom; import RouterProvider from "react-router/dom"[ ] check node >= 22.22.0 and react >= 19.2.7 (react-router 8 requires both)[ ] move defaultSecurityRules into config/collections/index.ts[ ] grep for .userId[ ] grep for row.id on tables not keyed on id[ ] run db push[ ] run rebase doctor --policies — expect no Insecure or Orphaned entries[ ] SELECT ... FROM pg_policies again — confirm every intended change landed[ ] exercise the app signed OUT, in a private window — watch the websocket too
--- 0.13 → 0.14 (part 2) ---[ ] re-run rebase generate-sdk, then build — the compiler finds row.author_id[ ] grep for snake_case where/orderBy keys; a stale one is a 400, not a warning[ ] grep for raw fetch consumers reading row.<something>_id — these read undefined and raise nothing[ ] if the project was introspected, re-run rebase schema introspect[ ] decide anonymous sign-in: set auth.allowAnonymous: true, or confirm you never used it (grep for signInAnonymously)[ ] drop @rebasepro/client-postgres from package.json
--- 0.14 → 0.17 (part 3) ---[ ] rename @rebasepro/admin → @rebasepro/cms and admin-types → cms-types, and RebaseAdmin → RebaseCMS[ ] move dataSources / storageSources out of the backend config into rebase.json and config/, then `rebase build` — an old bundle will not boot[ ] grep collections for admin.titleProperty; it is refused at boot now[ ] grep crons for ctx.client and for `userId` as an identity key[ ] rename --legacy to --workspace wherever build/start is scripted[ ] if you implement EmailService yourself, `send` must return a resultrebase doctor --policies é o comando ideal para integrar ao CI: ele retorna um código de saída diferente de zero para políticas que ainda contenham a tautologia permissiva e para aquelas que foram substituídas por um push anterior. As leituras de pg_policies antes e depois ainda valem o minuto dedicado — elas mostram as próprias expressões, que é a única maneira de identificar uma política com falha aberta (fail-open) escrita em um formato que o detector não reconhece. Nem os pacotes nem o sistema de tipos irão avisar: a alteração reside no banco de dados, e db push é a única coisa que a aplica lá.
Relacionados
Seção intitulada “Relacionados”- Changelog — as notas de lançamento que cada uma dessas seções resume
- Compatibilidade — os seis contratos e quais deles uma versão pode quebrar
- Comandos da CLI —
rebase doctore os comandos executados pelos checklists