Aggiornamento
Aggiornamento di un’app esistente
Sezione intitolata “Aggiornamento di un’app esistente”Cinque passaggi, a partire dal più recente. Inizia da quello immediatamente superiore alla versione che stai utilizzando e procedi verso il basso — oppure, se provieni dalla versione 0.12, inizia dal fondo e procedi verso l’alto.
| Sei sulla | Leggi | Cosa comporta per te |
|---|---|---|
| 0.18 – 0.20 | 0.18 → 0.21 | context.client.data non compila più all’interno di una callback di collection — esegui le query tramite context.data — e selectedEntities lascia il posto a una selezione che può rappresentare righe che nessuno ha caricato. Le versioni 0.19 e 0.20 non dichiarano breaking change, quindi questo è un singolo passaggio a partire da 0.18. |
| 0.17 | 0.17 → 0.18 | Undici breaking change, per la maggior parte errori di compilazione anziché modifiche silenziose del comportamento. rebase.data scompare a runtime, i range dei peer si restringono ai caret, e il requisito minimo di Node sale a 22.22.0. |
| 0.14 – 0.16 | 0.14 → 0.17 | I pacchetti admin vengono rinominati, le risorse sono dichiarate anziché configurate, e un bundle compilato in precedenza non si avvierà su un runtime attuale. La 0.15 e la 0.16 non interrompono nulla, quindi questo è un singolo passaggio a partire da 0.14. |
| 0.13 | 0.13 → 0.14 | Tutte le chiavi di rete sono in camelCase, e l’accesso anonimo è opt-in. |
| 0.12 | 0.12 → 0.13 | Il passaggio più ampio, e l’unico che modifica chi può leggere i tuoi dati. Rimuove lo schema auth, rinomina i pacchetti, cambia il significato di id, abbandona CJS, migra il pannello admin a react-router 8 e corregge tre modalità in cui poteva essere concesso l’accesso senza che fosse richiesto. |
Le sezioni di ogni pagina sono ordinate secondo la sequenza in cui devi applicarle, e ciascuna indica il sintomo che altrimenti ti ritroveresti a dover diagnosticare partendo dal presupposto sbagliato.
Quindi, a prescindere dal passaggio effettuato:
- La checklist di aggiornamento di seguito — i grep e i comandi che vale la pena eseguire successivamente, raccolti in un unico blocco.
Checklist di aggiornamento
Sezione intitolata “Checklist di aggiornamento”[ ] 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 è quello da integrare nella CI: restituisce un exit code diverso da zero in presenza di una policy che include ancora la tautologia permissiva, o di una sostituita da un push precedente. Le letture di pg_policies prima e dopo meritano comunque quel minuto di attenzione — mostrano le espressioni stesse, l’unico modo per individuare una policy fail-open scritta con una sintassi non riconosciuta dal detector. Né i pacchetti né il sistema di tipi te lo segnaleranno: la modifica risiede nel database, e db push è l’unica operazione che la applica.
Correlati
Sezione intitolata “Correlati”- Changelog — le note di rilascio riassunte da ciascuna di queste sezioni
- Compatibilità — i sei contratti, e quali possono essere interrotti da una versione
- Comandi CLI —
rebase doctore i comandi eseguiti dalle checklist