You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First, an honest note: this project drifted for a while. Issues piled up, PRs sat unreviewed, and responses were slow. That's on me. I still care about prisma-erd-generator, and I'm putting it back into active maintenance. This issue is a public commitment to that and a roadmap for where it's headed.
Status (August 2026): 3.2.0 is out. Everything the original roadmap listed has shipped, the toolchain moved to bun + oxlint, and the open issue count went from ~30 to 2. This issue is kept up to date as a checklist rather than a comment thread β check here for current state.
β Shipped
3.0.0 β Puppeteer is optional
The single biggest historical source of friction is gone. @mermaid-js/mermaid-cli (and with it puppeteer/Chromium) is now an optional peer dependency:
.svg / .png / .pdf need npm i -D @mermaid-js/mermaid-cli puppeteer, which you now control. A missing CLI fails with a message naming the package instead of a generic error. (Installation bug: reify:poppeteer-core: timing...Β #183)
mermaidConfig was silently ignored for CommonJS config files β including the shape shipped as example-mermaid-config.js. Anyone following the docs had their config discarded.
Field-level @map applied to the wrong field when one name was a suffix of another (id vs user_id).
Package manager and task runner moved from pnpm to bun. Consumers are unaffected β the published package and its dependency ranges are unchanged. Clean install went from 2.2s to 0.63s, and CI jobs are ~30% faster (90s β 63s median on Linux), almost all of it from bunx beating pnpm dlx on the ~35 Prisma invocations each job makes.
Linting moved to oxlint (47ms vs biome's 61ms). The formatter stayed on biome β benchmarking showed oxfmt about 1.8Γ slower per file, and speed was the reason to consider moving it. oxlint's rule set is tuned to match the coverage biome's linter had, rather than taking its defaults.
Tests now fail CI loudly when a PR has no changeset, so nothing else can quietly ship without a changelog entry the way sortFields did.
Fixed a Windows CI flake that failed whole runs (Timeout calling "onTaskUpdate") after every test had already passed.
Three latent bugs surfaced during that work and are fixed: @types/node was never a direct devDependency and only resolved through pnpm's hoisting; the test runner spawned one worker per core in a suite where every test launches a headless Chromium; and mermaid CLI resolution on Windows assumed npm's shim layout, so a bun-installed project could not render images at all (#183-adjacent, shipping in 3.0.1).
3.2.0 β renderer option with a browser-free graphviz renderer (Replace MermaidΒ #102)
π What's next
Nothing urgent, which is the point.
Prisma 8 support: blocked on the generator plugin modelΒ #315 β Prisma 8. Blocked, not deferred. Prisma 8 is still a release candidate, its CLI has no generate command, and @prisma/generator-helper has no 8.x release β the generator plugin model this package is built on does not exist there. Supporting it means reading the emitted contract.json rather than being handed the DMMF, which is a new integration rather than a version bump.
TypeScript 7 β blocked on tooling. 7.x is npm latest, and our source typechecks clean under it, but the native port's package no longer exposes the classic compiler API (ts.sys and ts.createProgram are undefined; everything moved under ./unstable/*). rollup-plugin-dts, which tsup uses for declaration output, breaks on it. Revisit when tsup supports the new API surface.
Regenerate ERD.svg when the schema changes. It went stale for a long time and nothing catches that.
How to help
π Retest old bugs on 3.2.0. Several closed issues were fixed by the engine-less rewrite, the optional-peer change, or the SVG text change. If one still reproduces, reopen it.
bun install
bun run test
bun run build
bun run lint
Add a changeset with bunx changeset so your change shows up in the release notes β CI fails the PR without one. For docs- or CI-only work, apply the skip-changeset label instead.
Thanks for your patience, and for continuing to use the tool. π
Hi everyone π
First, an honest note: this project drifted for a while. Issues piled up, PRs sat unreviewed, and responses were slow. That's on me. I still care about
prisma-erd-generator, and I'm putting it back into active maintenance. This issue is a public commitment to that and a roadmap for where it's headed.Status (August 2026):
3.2.0is out. Everything the original roadmap listed has shipped, the toolchain moved to bun + oxlint, and the open issue count went from ~30 to 2. This issue is kept up to date as a checklist rather than a comment thread β check here for current state.β Shipped
3.0.0 β Puppeteer is optional
The single biggest historical source of friction is gone.
@mermaid-js/mermaid-cli(and with it puppeteer/Chromium) is now an optional peer dependency:.md/.mmdoutput requires zero browser. New.mmdwrites bare mermaid with no code fence. (Remove puppeteer dependency when outputting mermaid markdownΒ #176, mermaid-cli is a hard dependency even for Markdown output, where it is never executedΒ #293).svg/.png/.pdfneednpm i -D @mermaid-js/mermaid-cli puppeteer, which you now control. A missing CLI fails with a message naming the package instead of a generic error. (Installation bug: reify:poppeteer-core: timing...Β #183)Features
usePrismaNamesβ draw schema names instead of@@mapdatabase names (Allow control over whether to use model name or db nameΒ #128)showIndexesβ mark unique (π/UK) and indexed (π/IDX) columns (Feature Request: Show indexes in the diagram as wellΒ #209)includeCommentsβ render///schema comments (Include comments in prisma.schema fileΒ #248)sortFieldsβ sort field names alphabetically (Feature request: allow to sort field names in the diagram alphabeticallyΒ #122)Fixes
mermaidConfigwas silently ignored for CommonJS config files β including the shape shipped asexample-mermaid-config.js. Anyone following the docs had their config discarded.@mapapplied to the wrong field when one name was a suffix of another (idvsuser_id).@@maped enums rendering a duplicate empty node.Toolchain & CI
bunxbeatingpnpm dlxon the ~35 Prisma invocations each job makes.sortFieldsdid.Timeout calling "onTaskUpdate") after every test had already passed.Three latent bugs surfaced during that work and are fixed:
@types/nodewas never a direct devDependency and only resolved through pnpm's hoisting; the test runner spawned one worker per core in a suite where every test launches a headless Chromium; and mermaid CLI resolution on Windows assumed npm's shim layout, so a bun-installed project could not render images at all (#183-adjacent, shipping in3.0.1).π’ Released
2.5.0βincludeComments3.0.0β optional peer deps,usePrismaNames,showIndexes,.mmdoutput3.0.1β mermaid CLI resolution on Windows under bun3.1.0β plain SVG text instead of embedded HTML (SVG files are unviewable on modern InkscapeΒ #245)3.2.0βrendereroption with a browser-freegraphvizrenderer (Replace MermaidΒ #102)π What's next
Nothing urgent, which is the point.
generatecommand, and@prisma/generator-helperhas no 8.x release β the generator plugin model this package is built on does not exist there. Supporting it means reading the emittedcontract.jsonrather than being handed the DMMF, which is a new integration rather than a version bump.latest, and our source typechecks clean under it, but the native port's package no longer exposes the classic compiler API (ts.sysandts.createProgramareundefined; everything moved under./unstable/*).rollup-plugin-dts, which tsup uses for declaration output, breaks on it. Revisit when tsup supports the new API surface.ERD.svgwhen the schema changes. It went stale for a long time and nothing catches that.How to help
π Retest old bugs on
3.2.0. Several closed issues were fixed by the engine-less rewrite, the optional-peer change, or the SVG text change. If one still reproduces, reopen it.π¬ Weigh in on Prisma 8 support: blocked on the generator plugin modelΒ #315 if you know the intended migration path for third-party generators on Prisma 8.
π PRs welcome. The repo uses bun:
bun install bun run test bun run build bun run lintAdd a changeset with
bunx changesetso your change shows up in the release notes β CI fails the PR without one. For docs- or CI-only work, apply theskip-changesetlabel instead.Thanks for your patience, and for continuing to use the tool. π