Svelte is a library that binds JavaScript data to HTML/SVG DOM, so that you don't need to write ad-hoc functions to update DOM. You change values in JavaScript variables marked for reactivity, and Svelte's compiled output implements the DOM mutations. Svelte solves this better than React, both performance-wise and syntax-wise. But not so much better as to make people migrate from React, especially now that LLMs can write either. React has more runtime code, and remains uglier to read for humans: there are paired setter functions, and often-confusing hook semantics.
SvelteKit runs your Svelte code on the server as well (using Node.js), hosting multiple routes (paths), which are first delivered by the server, then updated and navigated by the client. SvelteKit is a superset of Svelte; there's rarely a need to use Svelte without SvelteKit.
Svelte/SvelteKit isn't an all-in-one framework; it considers some things out of scope: data persistence, authentication, CSS framework (beyond the per-component scoping that Svelte does), widget libraries, end-to-end testing, compatibility with old browsers.
SvelteKit uses Vite for development and production builds, so you run vite commands to do things like start a development server. As you save changes to your code, the pages in your browser are hot-patched.
Under the hood, Vite uses rollup + esbuild or rolldown as the bundler, to compile JavaScript from your code and dependencies. They work like linkers, but web developers named them bundlers. They implement complex linking semantics to combine both CommonJS and ESM modules and concatenate things, so that your browser doesn't have to make hundreds of requests, one for each module in each dependency.
People generally use TypeScript with their Svelte; Effective TypeScript: 83 Specific Ways to Improve Your TypeScript is a good refresher.
People use pnpm to manage dependencies, patches to these dependencies, and workspaces (multiple projects in one). In your own projects, there's no need to use other package managers like npm and yarn.
People rely on vscode with the Svelte extension, and linting setups using biome or oxlint. Both of those are helpful and fast and good, and have vscode extensions.
If you're annoyed by anything in vscode, you might review https://gist.github.com/ivan/ab5d11cc5f25fd2febc4925f38f26168 to see if you want any of those settings.
With Svelte 5, there was a big change adding runes to fix a lot of Svelte 4 issues. You'll still see Svelte 4 code, pre-runes, in some projects. It has different syntax and slightly different semantics.
Svelte 5 allows using the same signals-based reactivity system inside your .svelte.{js,ts} files, outside a Svelte component.
With all these recent changes and ongoing work, Svelte hasn't calcified into a book; people rely on living documentation.
Not just the documentation on the Svelte site, but also MDN, caniuse, chromestatus, WHATWG, and sometimes even browser source code. It can be helpful to have a local checkout of Firefox, Chromium, and WebKit. You'll find HTML-based test suites and sometimes-relevant comments and commit messages. git log / tig on a particular path.
https://svelte.dev/tutorial/ is the best place to start.
https://joyofcode.xyz/learn-svelte seems to be good too.
https://svelte.dev/docs/svelte/
https://svelte.dev/docs/kit/
https://svelte.dev/blog
https://svelte.dev/llms.txt is a documentation index for LLMs. You can probably lean heavily on ChatGPT 5.2 Thinking to answer Svelte and web questions. Grok has even more context window if you need it. Use OpenRouter as needed.
https://www.youtube.com/results?search_query=rich+harris+svelte A lot of ideas were conveyed in video form by the creator, and he's good at teaching, so I recommend looking at some.
https://www.youtube.com/watch?v=RVnxF3j3N8U from when runes were new.
https://www.youtube.com/playlist?list=PL8bMgX1kyZThKy_B41FQHk_xsHMQouV1Z
https://github.com/sveltejs/svelte/commits I've also learned a lot from reading the commits and GitHub issues.
https://github.com/sveltejs/kit/commits
https://discord.com/invite/svelte probably has useful links and messages to search.
https://github.com/janosh/awesome-sveltekit If you need to look at some sample projects, I suspect most of this is good.
https://geoffrich.net/archive/
https://lihautan.com/compile-svelte-5-in-your-head writes about what Svelte code compiles to.
You can also look at the JS output tab on https://svelte.dev/playground/.
https://next.melt-ui.com/ implements some additional UI components.
https://github.com/carbon-design-system/carbon-components-svelte has more components, but it comes with its own styles, and hasn't been rewritten internally for Svelte 5; it still works with Svelte 5.
https://github.com/threlte/threlte / example there's a declarative way to do 3D as well.
I implemented a basic session / password authentication system at https://github.com/ludios/cookied. Not implemented: password reset flows, TOTP, or security keys.
Useful even outside of Svelte:
- There are good libraries for validating the shapes of objects: https://github.com/samchon/typia and https://github.com/arktypeio/arktype. I tried both and stayed with Typia because it builds validators from normal TypeScript definitions, rather than the other way around (TypeScript types synthesized from non-standard syntax).
- https://github.com/porsager/postgres is very good for querying PostgreSQL.
- https://github.com/unocss/unocss provides abbreviated CSS without Tailwind, if you need that.
As you'll need to search a lot: make your own Kagi account, and uprank/downrank domains using the shield icon.
Configure your browser search engines with short keywords. Spam a query to multiple places to minimize labor and find more things.
A lot of the frontend people including Rich moved to Bluesky; some of your searches may need to hit X, Bluesky, HN (via Algolia), maybe even the Svelte Discord.