JSR
The JavaScript Registry: an open-source, TypeScript-first package registry where you publish TypeScript source and it generates the docs, JavaScript and .d.ts files that npm, pnpm, Yarn, Bun and Deno projects install.
- What it is
- Package managers
- Type
- Open source
- Made by
- Deno Land Inc.
- License
- MIT
- Facts checked
- 12 October 2026
What it is
JSR is a registry, the server package managers download from, not a package manager itself. Packages are ES modules named @scope/name, and authors publish TypeScript source with npx jsr publish or deno publish from a jsr.json (or deno.json) that gives the name, version and exports. JSR analyzes the code as it arrives: it generates API documentation, and for Node-style consumers it transpiles to JavaScript and writes .d.ts files, so authors have no build step. Public APIs must avoid “slow types” (exports whose types need inference), because JSR does not run the TypeScript compiler. Every version is immutable: you can yank it, but not change it, and deleting is allowed only within 24 hours for a version with almost no downloads and no dependents.
Deno imports jsr: specifiers natively and downloads only the files it imports. Everything else goes through an npm-compatible endpoint at npm.jsr.io that serves each package as @jsr/scope__name: pnpm 10.9+, Yarn 4.9+ and vlt understand jsr: directly, and for npm, Bun or older versions npx jsr add writes the .npmrc line and installs with your package manager. Publishing from GitHub Actions uses an OIDC token instead of a stored secret and records SLSA provenance in Sigstore’s transparency log. Each package gets a JSR score from 0 to 100 for documentation, best practices, discoverability and runtime compatibility, which also ranks search results.
Why teams pick it
- Authors publish TypeScript once; docs, transpiled JavaScript and type declarations for npm users are generated for them
- Works with the package managers people already use, and JSR packages can depend on npm packages
- Tokenless publishing from GitHub Actions with automatic Sigstore provenance, and immutable versions that can’t be swapped after you audit them
- Free to use, open source under MIT, and governed by a five-member board that includes the creators of Node.js, npm and Vue
Watch out for
- Through the npm layer you get transpiled JavaScript, not the TypeScript source, so “go to definition” lands in generated files, and npm or Yarn may install duplicate copies
- ESM only, and exported APIs must have explicit types or docs and
.d.tsoutput degrade - Default quotas of 3 scopes per user, 100 packages per scope and 20 MB per package version (raised on request)
- Still operated and paid for by the Deno Company, whose team announced in October 2026 that it is joining Cloudflare; JSR keeps running, with its infrastructure moving to Cloudflare
Alternatives
What all package managers have in common →How it fits with other technologies
What JSR uses
Publish a TypeScript package, then install it from Node, pnpm or Deno · bash
# jsr.json: { "name": "@luca/greet", "version": "1.0.0", "exports": "./mod.ts" }
npx jsr publish --dry-run # validate without publishing
npx jsr publish # authorize in the browser, no token to store
# Consumers
pnpm add jsr:@luca/greet # pnpm 10.9+ and Yarn 4.9+ understand jsr: natively
npx jsr add @luca/greet # npm and Bun: writes @jsr:registry=https://npm.jsr.io to .npmrc
deno add jsr:@luca/greet
# In code, the import is the same everywhere:
# import { greet } from "@luca/greet";See it in a real stack
No architecture uses JSR yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2024–2026
npm was designed in 2009 for Node.js and CommonJS. By 2024 ES modules were the web standard, TypeScript had become the default for serious JavaScript, and Node was one runtime among several, alongside Deno, Bun and workerd. npm, as the Deno team put it, “was not designed with these new realities in mind.”
On March 1, 2024, Ryan Dahl, Luca Casonato and Kevin Whinnery of Deno opened JSR as a public beta: TypeScript-first, ESM-only, free and open source, and designed to “build on the success of npm, not fork it” by serving every package to npm-based projects too. Casonato later listed what set it apart: TypeScript source published as is with generated docs, tokenless publishing from GitHub Actions, Sigstore provenance and the JSR score.
The Deno team built JSR but meant it to be an openly governed community service. On February 3, 2025 it gained an independent board with a charter: Evan You, Isaac Schlueter, James Snell, Luca Casonato and Ryan Dahl, tasked with finding a legal home in a foundation such as the Linux Foundation or OpenJS, with the Deno Company paying the bills until then. pnpm and Yarn added native jsr: support in April 2025. On October 9, 2026, Dahl announced that the Deno team is joining Cloudflare and that JSR will keep operating, with its infrastructure moving to Cloudflare.
Why it’s built this way
- Publish TypeScript source, generate the rest
- TypeScript had become a de facto standard, so JSR takes the source as published and produces documentation, JavaScript and
.d.tsfiles itself, removing the build step from every author. - ES modules only
- ESM is the web standard for JavaScript modules, and the team wanted the registry to push the ecosystem toward it rather than carry CommonJS forward.
- A superset of npm rather than a fork
- JSR would only be adopted if it interoperated with existing projects, so every package is also served through an npm-compatible endpoint and can depend on npm packages.
- Immutable versions
- If published versions could change, users could not trust that a package they audited stays the same, and caching the registry would be harder.
Timeline
- 2024
JSR opens as a public beta on March 1, MIT-licensed
- 2025
Independent governance board and charter announced on February 3
- 2025
pnpm 10.9 and Yarn 4.9 install
jsr:packages natively (April) - 2026
Deno team joins Cloudflare on October 9; JSR’s infrastructure moves to Cloudflare
- Deno Blog: Introducing JSR, the JavaScript Registry (Mar 2024)
- Deno Blog: How we built JSR (Apr 2024)
- Deno Blog: Introducing the JSR open governance board (Feb 2025)
- Deno Blog: Add JSR packages with pnpm and Yarn (Apr 2025)
- Deno Blog: Deno is joining Cloudflare (Oct 2026)
- JSR docs: Why JSR?
- JSR docs: Immutability
Sources12 · facts checked 12 October 2026
- JSR docs: Introduction
- JSR docs: Why JSR?
- JSR docs: npm compatibility (npm.jsr.io, @jsr scope, limitations)
- JSR docs: Publishing packages (GitHub Actions OIDC, dry run)
- JSR docs: About slow types
- JSR docs: Scoring
- JSR docs: Trust (provenance with SLSA and Sigstore)
- JSR docs: Immutability
- JSR docs: Quotas and limits
- JSR docs: Governance
- JSR docs: FAQ (free to use, hosting paid by the Deno Company)
- jsr-io/jsr on GitHub (MIT license)