HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
sveltejs
svelte
JavaScript2017–2026
sveltejs / svelte

svelte

web development for the rest of us

74Distinct people
93Mentions
4Explicit recommenders
88.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

web development for the rest of us

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I love Svelte, but you are absolutely right about Solid's influence. Svelte's Signals implementation seems very performant compared to other Signals-based frameworks. [0] [0]…

division_by_0 used a recommendation phrase. 4 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 9:01:12 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year93 dated mentions

Observed mentions: 2017-01-08 02:15:41 UTC to 2026-06-14 17:35:58 UTC.

051015202017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 20 mentions; 2 submissions, 18 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 12 mentions; 4 submissions, 8 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 12 mentions; 9 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 20 mentions; 2 submissions, 18 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC303
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC20218
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC808
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC312
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC11011
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC1248
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1293
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC20218
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC303

What Hacker News says

20 sources
> TypeScript is not "real" static typing in the same sense as Go, Rust, C#; the type information disappears the moment you build it. The type information in both Rust and Go disappears the moment you build it. The generated assembly is completely untyped: if you pass invalid objects to a compiled Rust function that you've dynamically loaded, you will cause problems, even memory safety issues, because Rust does not do any type checks at runtime. In the same way, if you call Typescript-defined functions from Javascript with the wrong types, you'll get problems. But if you write everything in Javascript, and don't ever use type assertions, you won't have issues. (In practice, I believe there are a couple of other issues you can run into, typically involving variance and mutability, but these are very rare. Also, some older APIs return `any`
Read the rest
that should return `unknown`, but that can be fixed.) It's also worth keeping in mind that all languages have and require schema validation, it just might look different. Both Rust and Go have schema validation libraries - typically they parse the data directly into the correct format, but in Rust you could do something like `let x: HashMap<String, JsonValue> = string.parse()` and get roughly the same effect as Javascript's JSON.parse, it's just that JS/TS has a built-in data structure to represent arbitrary JSON data, whereas Rust does not. > To be clear, they are not "using" TypeScript, it's more accurate to say they are providing TypeScript bindings. To be clearer: they are absolutely using Typescript. The functions (and other parts of the code) are annotated using Typescript's extension of JSDoc types, which means Typescript can parse and typecheck this code as if it were "normal" Typescript, including generating type definition files. The .d.ts files in the source code are used to define additional types and interfaces that can be used in the .js files (you can see the first file you linked to import type definitions from ESTree, for example). The type checking step can be seen in the package.json file[0]. This is all explained in the comment from Rich Harris that you linked before. Using JSDoc rather than conventional Typescript syntax makes writing your source code more complicated, but in this case the Svelte team figured it would benefit them more in the long run to still be writing code that could be interpreted by a normal Javascript runtime. However, it really is just a different syntax for Typescript, and that's how they are using it. [0]: https://github.com/sveltejs/svelte/blob/80557bbc1c8a94c43a95...
In Show HN: Nue – Apps lighter than a React button
TypeScript is not "real" static typing in the same sense as Go, Rust, C#; the type information disappears the moment you build it. function fn(x: string) {} Will happily accept: fn(2) At runtime (and thus the need for schema validators like Zod, Valibot, et al because dev-land "static typing" is a façade) > Rich and the rest of the Svelte team are still using typscript To be clear, they are not "using" TypeScript, it's more accurate to say they are providing TypeScript bindings. Their codebase (as in the actual code they are writing) is undoubtedly JS[0] with `.d.ts` bindings for TypeScript[1]. Author can also do the same and provide TS bindings at any point in the future. [0] https://github.com/sveltejs/svelte/blob/main/packages/svelte... [1] https://github.com/sveltejs/svelte/blob/main/packages/svelte...
In Show HN: Nue – Apps lighter than a React button
For the record, author is not crazy. Svelte team also switched to JS with JSDoc a few months back[0]. You can see the majority of their repo is JS and not TS[1] The cited reason[2]: > As a Svelte compiler developer, debugging without a build step greatly simplifies compiler development. Previously, debugging was complicated by the fact that we had to debug using the build step. In addition, using JSDoc does not affect compiler’s development safety because the type is almost equivalent to TS. There was a lot of noise when this happened. Rich Harris (Svelte team) even had a comment on this on HN[3]. Dev sphere similarly thought they were crazy. But Svelte seems fine and no one seems bothered by this now. As long as author ships type def, it should behave just like a TypeScript library for all intents and purposes. [0] https://news.yco
Read the rest
In Show HN: Nue – Apps lighter than a React button
> Runes Only Work in Svelte Components or .svelte.ts Files This is like complaining that types only work in .ts files > Hooks Using Runes Must Wrap State in Functions This is on purpose, as you know. They want reactivity to be explicit. The benefit of runes is, that if you like Vue and Solid so much, you can literally create their reactive primitives in Runes, and it works. > Classes as First-Class Citizens for Runes... or Not? This entire section is weird. The title complains about classes, but then the second code snippet is a function back again. And the third is also equally weird, why would you ever need that. > Svelte Templates Include Features That Cannot Be Implemented in JavaScript This one I don't know sufficiently about. I'll let others argue about it. But I do think this was already present before > Form Components Are Uncontr
Read the rest
olled by Default, Which Can Cause Issues Same here, Svelte always had this behavior. As you also state, this is present in other frameworks, such as Vue itself, which you're promoting as better than Svelte > Ecosystem If you want someone to point out the issues people had when migrating to Vue3, and still have to this day, sure. Every framework really, when they go through such a big change. > Community Response Criticism is fine. But a lot of the things have been discussed over and over tbh, and a lot of it is poorly structured, e.g. saying "svelte is react now", which just brings noise to the table. I've personally seen a lot of other criticism which has led to action being taken. As a proof of that, recently here in hacker news there was a post criticizing Svelte 5. It is now mentioned on this PR as a change for it https://github.com/sveltejs/svelte/pull/15469 I do criticize things in Svelte as well, e.g. I do like the patterns for passing reactivity through boundaries, but I do think it needs to be well documented on how to, as people can get a bit lost. Or maybe some utilities shipped to it. But I don't personally like `ref` and `createSignal`. They come with their own issues.
In Svelte5: A Less Favorable Vue3
I very much agree with the overall thesis of the post. Runes are just irksome in subtle ways. One big point that the post misses, is that the Class escape hatch for runes is incompatible with constructor-set parameters. Say you have a class that wraps a HTMLElement which you set in the constructor. This doesn't work: class Wrapper { dom: HTMLElement = $state() constructor(el: HTMLElement) { this.dom = el } } as TypeScript throws an error about `Type 'undefined' is not assignable to type 'HTMLElement' for the $state()`. You could fix it by eg. `$state(undefined as unknown as HTMLElement)` but that's dumb. Interesting enough you could do something like: class Wrapper { dom: HTMLElement constructor(el: HTMLElement) { let d = $state(el) this.dom = d } } Moreover, Vite/esbuild mangles class-f
Read the rest
ield parameters with esnext into constructor-set parameters as they are just more versatile. So the original code becomes something like: class Wrapper { constructor(el: HTMLElement) { this.dom = $state(el) } } Which is incompatible with rules of runes. I did whine about this already https://github.com/sveltejs/svelte/issues/14600 but so far no clear answer
In Svelte5: A Less Favorable Vue3
TypedAI looks solid, was not aware of it! Bookmarked for further research. Personally I am not fond of the decorator approach and decided to not use it in pgflow (my soon-to-be-released workflow orchestration engine on top of Postgres). 1. I wanted it to be simple to reason about and explicit (being more verbose as a trade-off) 2. There are some issues with supporting decorators (Svelte https://github.com/sveltejs/svelte/issues/11502, and a lot of others). 3. I decided to only support directed acyclic graphs (no loops!) in order to promote simplicity. Will be supporting conditional recursive sub-workflows to provide a way to repeat some steps and be able to branch. Cheers!
In Show HN: Mastra – Open-source JS agent framework, by the developers of Gatsby

Showing the 15 most recent of 20 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.