prisma/prisma
Fun facts
A few quirks and observations from the codebase, for the curious.
The init commit was just init
The first commit on 2019-04-29 has the message init. The next two commits are both wip. Modern Prisma started extremely scrappily — the elaborate release tooling and CI matrix you see today were built up later.
There is no Rust here
Despite Prisma's reputation as a Rust-backed ORM, this repository contains zero .rs files. All of Prisma's Rust lives in prisma/prisma-engines. What this repo consumes are artifacts:
@prisma/prisma-schema-wasm— Wasm@prisma/query-compiler-wasm— Wasm@prisma/schema-engine— a native binary downloaded at install time
If you grep for .rs here, you'll only find string mentions in comments and engine version logs.
"There's no such thing as a query engine in Prisma"
This is now an explicit knowledge reminder in AGENTS.md. For roughly five years, Prisma did have a query engine — a Rust binary that user code talked to over IPC. In Prisma 7 it was deleted. The reminder exists because so much training data and historical doc still talks about it that an unaware contributor (human or AI) will reach for the old mental model. The new architecture uses a Wasm query compiler and a TypeScript interpreter; there is no separate engine process for queries.
"Wasm" is not "WASM"
The codebase has a strong opinion on this. From AGENTS.md:
The correct and official abbreviation of WebAssembly is "Wasm", not "WASM". There are instances of "WASM" in the codebase, but they are wrong and you should not repeat them. Fix the capitalization whenever you incidentally touch the corresponding lines or surrounding code for other reasons.
If you see "WASM" in a diff, it's a leftover, not a convention.
Prismo, the prolific bot
Prismo (52275815+prisma-bot@users.noreply.github.com) is the second-most-frequent committer of the last 90 days, behind only jacek-prisma. It's the release bot. Together with dependabot, renovate, and github-actions, automated commits make up about 31% of the entire git history.
The blaze helpers
helpers/blaze/ exists alongside helpers/compile/. It contains tiny functional helpers (merge.ts, pipe.ts, record.ts) that are used across the build tooling. The name is unusual; the contents are very small, sharply written utilities that make the rest of the build feel less like TypeScript-by-committee.
Five-thousand-line test files
packages/client/src/__tests__/buffer-small.test.ts is 6,235 lines long. The biggest non-test source file is packages/client/src/__tests__/__helpers__/dmmf-types.ts at 7,910 lines — generated DMMF type fixtures used by every test that needs a representative schema shape.
Two generators, by design
Both prisma-client-js (in packages/client-generator-js) and prisma-client (in packages/client-generator-ts) ship simultaneously. The legacy generator is not a deprecation casualty — it's still built, tested in CI, and emitted for users who haven't migrated. Watching the diffs to both generator packages move in lockstep is a good signal of the in-progress migration.
Studio is bundled JavaScript
Prisma Studio's frontend is pre-bundled into packages/cli/build/studio.js and packages/cli/build/studio.css. The rest of the Studio source (the React app) does not live in this repo at all — it's a separate project. The CLI ships a working Studio without ever exposing its source.
CodSpeed regression alarms
The CI is configured to alarm on >100% benchmark regression via CodSpeed (.github/workflows/benchmark.yml). 100% is unusually permissive — most CodSpeed setups alarm on 5–10%. Prisma's benchmark variance is high enough (especially for huge-schema generation) that a tighter threshold would be too noisy.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.