page:guides:react router:schema changes
Apply Database Schema Changes for React Router
Apply database schema changes for a React Router app on Ample with a release command. node migrate.cjs runs against the injected DATABASE_URL before the new release goes live, and the release fails instead of activating if the migration fails.
Summary
- Framework operation: Framework
- Workload: Apply database schema changes
- Release Status: Published
- Support Status: Verified
- Execution Status: Ready
Prerequisites
- A migration command that reads DATABASE_URL and exits non-zero on failure
- A PostgreSQL database (supplied or managed)
- An Ample account token with servers:write and databases:read
Resource Requirements
- Compute: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- Postgres: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.
Workflow Steps
Write an idempotent migration: Create tables and markers with IF NOT EXISTS or a migration framework so a re-run is safe.
Deploy with the release command: Ample runs the command before activation; a non-zero exit fails the release.
Command:
ample deploy . --name --public --release-command "node migrate.cjs"Verify the marker through the app: Serve a route (/migrated) that reads something only the migration creates.
Verify: Fetch the live URL and run the success checks below. On failure read the build log, then the runtime log, fix the cause and deploy again; do not blind-retry.
Command:
ample logs --kind build
Success Checks
- Migration marker is readable via HTTP GET at the path
/migrated, expectingmigrated=release-ok.
Limitations
- Verified on the node-22 template at s-1vcpu-1gb; other templates and sizes are not verified by this recipe.
- Apps auto-pause when idle and wake on the next request; always-on is an operator setting, not a plan feature.
Cost Estimate
- Monthly Amount: $10.00
- Currency: USD
- Breakdown:
- App server: s-1vcpu-1gb - $5.00
- Managed PostgreSQL database: s-1vcpu-1gb - $5.00
Examples
- React Router release-command canary:
node migrate.cjsruns before activation against the auto-provisioned managed database.