How to Preview Migrations Without a Live Database
The standard loom stitch --preview workflow needs a live database connection — it inspects information_schema to compute the diff. For brand-new projects (or quick "what would this emit?" sanity checks) that's overkill.
The fix: --no-live
loom stitch --preview --no-live
# or, since --no-live implies --preview:
loom stitch --no-live
This skips the database connection entirely. Loom treats the live schema as empty and shows the plan as if you were running against a fresh database.
When to use it
- Brand-new projects. Before you've provisioned a database, see what the first migration will look like.
- Schema review. Open a PR that adds three new Threads, and reviewers want to see the SQL that'll get applied — paste the
--no-liveoutput into the PR description. - CI smoke checks. Run
loom stitch --no-liveto confirm Threads are still SQL-able after a refactor, without standing up a database in the pipeline.
Example output
loom stitch (env=dev, --no-live)
Plan (3 step(s)):
+ create_table — CREATE TABLE customers
+ create_table — CREATE TABLE contacts
+ create_table — CREATE TABLE notes
If a Thread has type-drift or nullability issues that would surface against a real database, --no-live won't catch them — by definition, there's no live schema to drift from.
When NOT to use it
- Before applying real migrations. Always
loom stitch --preview(without--no-live) against the live schema beforeloom stitchfor real. The diff against your actual database is the one that matters. - Production schema reviews.
--no-liveshows what a fresh run would emit, not what your current run will emit.
Combining with --env
The --env label gets logged for audit even in --no-live mode:
loom stitch --no-live --env=preview-pr-123
Useful when you want PR reviewers to see exactly which environment context the plan is for.
See also
- Reference → CLI Command Reference — every flag for
loom stitch - Getting Started → Connecting to PlanetScale — DSN setup for real previews
Was this article helpful?