SvelteKit
This guide shows you how to use Prisma ORM in a SvelteKit app. You scaffold a project where a server load function queries your database, initialize the schema, and see your data render.
Every command below was run end to end against a live Prisma Postgres database.
One command scaffolds the project with Prisma ORM wired in:
bun create prisma@latest my-app --template svelte --provider postgres --no-deploypnpm create prisma@latest my-app --template svelte --provider postgres --no-deployyarn create prisma@latest my-app --template svelte --provider postgres --no-deploynpm create prisma@latest -- my-app --template svelte --provider postgres --no-deployAnswer the prompts, then export DATABASE_URL in your shell before running the database scripts. If you do not have a database yet, npx create-db@latest prints a Prisma Postgres connection string.
Answer the prompts, then export DATABASE_URL in your shell before running the database scripts. If you do not have a database yet, npx create-db@latest prints a Prisma Postgres connection string.
- Node.js 22.18 or newer (on the 24 line, 24.11 or newer; 24 recommended)
- A PostgreSQL connection string, or nothing at all:
npx create-db@latestcan create a Prisma Postgres database for you
To delegate this guide to your coding agent, copy the prompt below and hand it over:
Create a new SvelteKit app with Prisma ORM, seed it, and verify the page renders.
1. Scaffold: `npm create prisma@latest -- my-app --template svelte --provider postgres --yes`. Then run `npx prisma@latest init` in `my-app` so the Prisma agent skills are installed and stay current, and use them. Get a database connection string: use the one I give you, or create a Prisma Postgres database with `npx create-db@latest` and show me the claim URL it prints. Export it as `DATABASE_URL` in the shell; the generated scripts read the environment variable, not `.env`.
2. In `my-app`, run `npm run db:init` with `DATABASE_URL` exported. Sample users are seeded automatically on the app's first query; there is no separate seed script.
3. Do not deploy to Prisma Compute; it does not support SvelteKit yet. Start `npm run dev` in the background, wait until it reports ready, verify http://localhost:5173 lists the three seeded users, then stop the dev server, following https://www.prisma.io/docs/guides/frameworks/sveltekit.md.
Use the installed Prisma ORM skills.bun create prisma@latest my-app --template svelte --provider postgres --no-deploy
cd my-apppnpm create prisma@latest my-app --template svelte --provider postgres --no-deploy
cd my-appyarn create prisma@latest my-app --template svelte --provider postgres --no-deploy
cd my-appnpm create prisma@latest -- my-app --template svelte --provider postgres --no-deploy
cd my-appThe scaffold generates the SvelteKit app with Prisma ORM wired in, installs dependencies, and emits the contract your queries are type-checked against.
Next, set the database connection. Use your own PostgreSQL connection string, or create a Prisma Postgres database with npx create-db@latest; it prints a connection string and a claim URL you can open to keep the database. Export the variable in the shell you work in; the generated scripts read the environment variable, not .env:
export DATABASE_URL="<your connection string>"The scaffold generates the SvelteKit app with Prisma ORM wired in, installs dependencies, and emits the contract your queries are type-checked against.
Next, set the database connection. Use your own PostgreSQL connection string, or create a Prisma Postgres database with npx create-db@latest; it prints a connection string and a claim URL you can open to keep the database. Export the variable in the shell you work in; the generated scripts read the environment variable, not .env:
export DATABASE_URL="<your connection string>"bun run db:initpnpm run db:inityarn db:initnpm run db:init"summary": "Applied 5 operation(s) across 1 space(s), database signed"If db:init stops with Connection terminated unexpectedly, a database you just created is still starting; wait a few seconds and run it again. The command is safe to repeat and reports Applied 0 operation(s) when there is nothing left to do.
db:init applies your schema (src/prisma/contract.prisma) to the database and signs it. With TypeScript authoring (--authoring typescript) the schema is src/prisma/contract.ts and the emitted files land in src/prisma/generated/. Sample users are seeded automatically the first time the app queries the database.
"summary": "Applied 5 operation(s) across 1 space(s), database signed"If db:init stops with Connection terminated unexpectedly, a database you just created is still starting; wait a few seconds and run it again. The command is safe to repeat and reports Applied 0 operation(s) when there is nothing left to do.
db:init applies your schema (src/prisma/contract.prisma) to the database and signs it. With TypeScript authoring (--authoring typescript) the schema is src/prisma/contract.ts and the emitted files land in src/prisma/generated/. Sample users are seeded automatically the first time the app queries the database.
bun run devpnpm run devyarn devnpm run devOpen http://localhost:5173. The page lists the seeded users, loaded on the server by the +page.server.ts load function.
Open http://localhost. The page lists the seeded users, loaded on the server by the +page.server.ts load function.
src/routes/+page.server.ts: the serverloadfunction that fetches userssrc/routes/+page.svelte: the page that renders themsrc/prisma/users.ts: thelistUsersquery helper the load function importssrc/prisma/db.ts: the Prisma ORM client behind that helper
Model access is namespace-qualified on PostgreSQL: db.orm.public.User. The Prisma ORM overview covers the contract-first model behind it.
Prisma Compute does not support SvelteKit deployments yet; see Deploy your first app for what is currently supported. In the meantime, the app deploys to SvelteKit's usual hosts through its standard adapters.
- Change the schema in
src/prisma/contract.prisma, then runnpm run contract:emitandnpm run db:update. - Learn the fundamentals: filtering, sorting, pagination, and writes.
- Read the Prisma ORM overview for the concepts behind contracts and typed queries.