| name | astro-db |
| description | Astro DB — defineDb, defineTable, column types, CRUD with db.select/insert/update/delete, db/config.ts, db/seed.ts, Turso for production, type-safety, integration with Astro Actions. Use for any database operation in an Astro project. |
Astro DB
Targets: Astro 7.
Type-safe SQL database built into Astro, powered by libSQL/Turso. Use for structured data without external backend services.
⚠️ Deprecation notice: @astrojs/db is deprecated and no longer actively maintained (still published on npm, currently v0.21.3 — it has not been removed from Astro 7). For new projects, prefer Drizzle, Kysely, or a direct libSQL client instead. Existing projects can keep using it, but should plan a migration.
Agent Workflow (MANDATORY)
Before ANY implementation, spawn 3 parallel agents (Codex spawn_agent):
- explore-codebase - Check existing db/config.ts, tables, and Actions
- research-expert - Verify Astro DB API via Context7/Exa
- Context7 (official docs) - Check Astro 6 DB docs for column types and CRUD
After implementation, run sniper for validation.
Overview
When to Use
- Storing structured data (comments, users, posts, forms)
- Building full-stack Astro apps without external DB setup
- Combining with Astro Actions for type-safe form handling
- Deploying to production with Turso (libSQL cloud)
- Seeding development data for local testing
Architecture
db/
├── config.ts # Schema definition (defineDb, defineTable)
└── seed.ts # Development data seeding
Core Concepts
Schema Definition
Define tables in db/config.ts using defineDb and defineTable. Export tables for use in pages and actions. Column types: column.text(), column.number(), column.boolean(), column.date(), column.json().
CRUD Operations
Import db and table from astro:db. All operations are async and type-safe based on your schema definition.
Turso for Production
Set ASTRO_DB_REMOTE_URL and ASTRO_DB_APP_TOKEN environment variables. Run astro db push to sync schema to Turso. Use astro db execute to run seed scripts against remote DB.
Actions Integration
Combine with astro:actions for end-to-end type safety: Zod input validation → DB operation → typed response.
Reference Guide
Concepts
Templates
Best Practices
- Export tables from config.ts - Import in pages and actions
- Use Actions for mutations - Type-safe with Zod validation
.returning() after insert - Get back inserted rows
- Push before deploy - Run
astro db push in CI/CD
- Turso free tier - 500 databases, generous for production
- New projects: consider Drizzle/Kysely/libSQL instead -
@astrojs/db is deprecated and unmaintained; still usable for existing projects, but not recommended as a starting point