Mise à niveau
Mettre à niveau une application existante
Section intitulée « Mettre à niveau une application existante »Cinq étapes, de la plus récente à la plus ancienne. Commencez par celle qui se trouve juste au-dessus de votre version actuelle et descendez — ou, si vous partez de la version 0.12, commencez par le bas et remontez.
| Vous êtes en | À lire | Ce que cela implique |
|---|---|---|
| 0.18 – 0.20 | 0.18 → 0.21 | context.client.data ne compile plus dans un callback de collection — effectuez vos requêtes via context.data — et selectedEntities cède la place à une sélection qui peut désigner des lignes que personne n’a chargées. Les versions 0.19 et 0.20 ne déclarent aucun changement cassant, il s’agit donc d’une seule étape depuis la 0.18. |
| 0.17 | 0.17 → 0.18 | Onze changements cassants, la plupart étant des erreurs de compilation plutôt que des changements de comportement silencieux. rebase.data disparaît au runtime, les plages de peer dependencies sont restreintes aux carets (^), et la version minimale de Node passe à 22.22.0. |
| 0.14 – 0.16 | 0.14 → 0.17 | Les paquets admin sont renommés, les ressources sont déclarées plutôt que configurées, et un bundle compilé avant cela ne démarrera pas sur un runtime actuel. Les versions 0.15 et 0.16 ne cassent rien, il s’agit donc d’une seule étape depuis la 0.14. |
| 0.13 | 0.13 → 0.14 | Chaque clé réseau est en camelCase, et la connexion anonyme nécessite désormais une activation explicite (opt-in). |
| 0.12 | 0.12 → 0.13 | L’étape la plus importante, et la seule qui modifie qui peut lire vos données. Elle supprime le schéma auth, renomme des paquets, redéfinit la signification de id, abandonne CJS, migre le panneau d’administration vers react-router 8, et corrige trois failles par lesquelles des accès non souhaités pouvaient être accordés. |
Les sections de chaque page sont présentées dans l’ordre où vous devez les appliquer, et chacune indique le symptôme que vous risqueriez sinon de déboguer par le mauvais bout.
Ensuite, quelle que soit l’étape franchie :
- La checklist de mise à niveau ci-dessous — l’ensemble des greps et des commandes utiles à exécuter par la suite, regroupés en un seul bloc.
Checklist de mise à niveau
Section intitulée « Checklist de mise à niveau »[ ] 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 est la commande à intégrer dans votre CI : elle retourne un code d’erreur non nul si une stratégie comporte encore la tautologie permissive, ou si un push antérieur l’a rendue obsolète. Les lectures de pg_policies avant et après valent tout de même la peine d’y consacrer une minute — elles vous montrent les expressions brutes, ce qui constitue le seul moyen de repérer une stratégie ouverte par défaut (fail-open) rédigée selon une syntaxe non reconnue par le détecteur. Ni les paquets ni le système de types ne vous alerteront : le changement réside dans la base de données, et seul db push l’y applique.
Voir aussi
Section intitulée « Voir aussi »- Changelog — les notes de version résumées dans chacune de ces sections
- Compatibilité — les six contrats, et ceux qu’une version peut rompre
- Commandes CLI —
rebase doctoret les commandes exécutées par les checklists