Svelte: main is ahead of the newest tag, pnpm is pinned to one hash, and the build skips playgrounds
Svelte compiles components into focused JavaScript so browsers update the page without shipping a virtual DOM runtime.
At a glance
- What is it?
- Svelte is the compiler repository, not the framework documentation: a 188-word README that points at svelte.dev, a workspace root with its own pinned package manager, a changesets release flow, and a benchmarking directory that needs a Node permission flag to run.
- Who is it for?
- sveltejs/svelte is the place to work if you intend to change the compiler, and the wrong place to look for framework documentation, since the README defers all of that to svelte.dev. Clone it with the pinned package manager or you will be fighting the toolchain before you read a line of code.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Main is a week past the newest tag, and the 5.x line moves in weeks
The three most recent releases are [email protected] on 2026-09-18, [email protected] on 2026-08-28, and [email protected] on 2026-08-20. That is two patch releases and one minor inside a single month. The last push to main is dated 2026-09-25, which is a week after the newest tag, so main is ahead of what the last release contains. The devDependencies make that concrete, because svelte there is declared as workspace:^, meaning the monorepo tests its own local build rather than the published one. Consequence for a reader: a clone of main is not [email protected], and a bug you reproduce on main may already be fixed in a tag that has not shipped, or the reverse. Pin a release if you are evaluating it, and check the tag date against the commit date when you file anything.
Contributing means reading a guide and a package directory, not just the guide
The Contributing section is one sentence with two links, and the second one is unusual. It says to see the Contributing Guide and the `svelte` package for information on contributing to Svelte, and the package link points at packages/svelte. So the repository treats a source directory as a second place where contribution rules live, and the root also carries AGENTS.md, CODE_OF_CONDUCT.md and a .agents directory. The roadmap is not in the repository at all; you are sent to a roadmap page on the website to see what is currently being worked on. Consequence for a contributor: the authoritative contribution instructions are split between a root file and a package directory, and the project's stated direction lives on a site that can change without leaving a commit in this tree. Read the package directory before you assume the root guide is complete.
The build filter covers packages only, so playgrounds are built by something else
The root build script is one line with a filter in it.
"build": "pnpm -r --filter=./packages/* build",
"check": "cd packages/svelte && pnpm build && cd ../../ && pnpm -r check"The filter restricts the recursive build to packages, so the playgrounds directory and the documentation directory are not built by it. The check script is more entangled still, because it changes into packages/svelte, runs a build there, comes back up two levels, and only then runs check across the workspace. That means a type check is not a static operation in this repository, it depends on a build of the main package having succeeded first. Consequence: a contributor who runs check on a fresh clone gets a build failure where they expected type errors, and anyone changing something under playgrounds is outside the root build contract, with no second command in the root manifest covering it.
pnpm is pinned to one hash-verified build while the type definitions target Node 20
The packageManager field is not a version on its own. It carries a full integrity digest appended to it.
"packageManager": "[email protected]+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800",
"engines": {
"pnpm": ">=9.0.0"
}So the declared floor is any pnpm from 9.0.0, and the enforced requirement is exactly one build of 10.33.4, identified by digest. In the same block of devDependencies, @types/node is at ^20.11.5 while eslint is at ^10.0.0. Consequence: the runtime toolchain is verified to the byte and the type surface describes an older Node than the tooling assumes, so a contributor on a newer Node gets types that understate the platform, and a contributor on a different pnpm build is asked to install the exact one rather than the one the engines range permits.
The version command ends in git add --all, and benchmarks need a Node permission
Two scripts show how far the release flow reaches into your working tree.
"changeset:version": "changeset version && pnpm -r generate:version && git add --all",
"bench": "NODE_ENV=production node --allow-natives-syntax ./benchmarking/run.js"The version command writes versions, then runs a generate:version script in every package, then stages everything with git add --all rather than the specific paths it changed. The benchmark scripts all pass --allow-natives-syntax, which Node requires as an explicit permission, and the debug variant adds --inspect-brk so it stops at the first line. The test script itself is just vitest run, and the root also holds vitest-xhtml-environment.ts beside vitest.config.js, so a non-HTML document environment is registered for the suite. Consequence: cutting a version can sweep unrelated work in progress into the commit, and reproducing a published benchmark number needs a Node invocation the README does not spell out and a flag a plain node run will refuse.
svelte.dev is a .dev domain, and a docs outage is answered with a SuperUser thread
There is a section of the README titled Is svelte.dev down, and it is the most operationally useful paragraph in the file. The answer is Probably not, but it's possible, and the advice for anyone who cannot access any `.dev` sites is a link to a SuperUser question and answer. There is no status page in that section, and no incident history. The reason matters, because .dev is a top-level domain on the HSTS preload list, so a resolver or browser that does not handle it will fail before any application server is reached. The root also carries a .well-known directory, which is a domain-root path for files served as-is rather than built into a bundle, so hosting is a concern in this tree rather than an afterthought. Consequence: when the documentation is unreachable, the project's own answer is a general networking thread, so you cannot tell a real outage from a local TLS or DNS problem without checking the forum.
Donations are earmarked for hosting first, and the writing says volunteers
The funding section is short and unusually precise about what money is for. The project is described as MIT-licensed open source with its ongoing development made possible entirely by fantastic volunteers, and the single ask is a backer on Open Collective. The terms are spelled out: funds donated via Open Collective will be used for compensating expenses related to Svelte's development such as hosting costs, and if sufficient donations are received, funds may also be used to support Svelte's development more directly. Read the order of that sentence. Hosting comes first, and maintainer compensation is the conditional remainder, not the stated purpose. The root also carries a FUNDING.json alongside the Open Collective link. Consequence: the money does not buy a roadmap. If you are judging the project by its funding page, the visible text says the budget covers infrastructure and that the code comes from volunteers, and the roadmap itself is on a website rather than in a file you can diff.
Editorial conclusion
sveltejs/svelte is the place to work if you intend to change the compiler, and the wrong place to look for framework documentation, since the README defers all of that to svelte.dev. Clone it with the pinned package manager or you will be fighting the toolchain before you read a line of code. Before you open a pull request, read both CONTRIBUTING.md and the packages/svelte directory, check whether the change belongs in packages/ at all given the build filter, and be aware that the version command stages your whole working tree.
Frequently asked questions
how to install svelte
The README gives no install command. It points to the Svelte website and the Discord chatroom, and for working on the code it points to CONTRIBUTING.md and the packages/svelte package. The repository itself is a pnpm workspace whose packageManager field pins one exact build.
how to install svelte 5
The published versions are the svelte package, most recently [email protected] on 2026-09-18. Inside the monorepo, svelte is declared as workspace:^ in devDependencies, so a checkout tests the local build rather than the published one, and main is dated 2026-09-25.
how to use svelte
Svelte is a compiler. It takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM, so the work happens at build time rather than through a runtime library. The README describes it as a new way to build web applications.
how to use svelte without sveltekit
This repository is the compiler itself and the README does not mention SvelteKit at all. The closest thing it says is that Svelte takes declarative components and converts them into efficient JavaScript that surgically updates the DOM, and it defers all usage documentation to svelte.dev.
how to use svelte in vscode
This repository has no documented editor extension. What it does carry is a .vscode directory, an eslint-plugin-svelte and a prettier-plugin-svelte in devDependencies, and an eslint.config.js at the root, so editor-relevant support here is repository configuration and formatting plugins.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/sveltejs-svelte)