Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

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-deploy
Bash
pnpm create prisma@latest my-app --template svelte --provider postgres --no-deploy
Bash
yarn create prisma@latest my-app --template svelte --provider postgres --no-deploy
Bash
npm create prisma@latest -- my-app --template svelte --provider postgres --no-deploy

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.

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@latest can create a Prisma Postgres database for you

To delegate this guide to your coding agent, copy the prompt below and hand it over:

with
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-app
Bash
pnpm create prisma@latest my-app --template svelte --provider postgres --no-deploy
cd my-app
Bash
yarn create prisma@latest my-app --template svelte --provider postgres --no-deploy
cd my-app
Bash
npm create prisma@latest -- my-app --template svelte --provider postgres --no-deploy
cd my-app

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:

Bash
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:init
Bash
pnpm run db:init
Bash
yarn db:init
Bash
npm run db:init
no-copy
"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 dev
Bash
pnpm run dev
Bash
yarn dev
Bash
npm run dev

Open 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 server load function that fetches users
  • src/routes/+page.svelte: the page that renders them
  • src/prisma/users.ts: the listUsers query helper the load function imports
  • src/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 run npm run contract:emit and npm run db:update.
  • Learn the fundamentals: filtering, sorting, pagination, and writes.
  • Read the Prisma ORM overview for the concepts behind contracts and typed queries.
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu