<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: EvanYou</title><link>https://news.ycombinator.com/user?id=EvanYou</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 05 Jun 2026 03:35:15 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=EvanYou" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by EvanYou in "Vite+ – Unified toolchain for the web"]]></title><description><![CDATA[
<p>Wrong - Vite is not open core, Vite+ is. This differentiation is important because even if a feature benefits Vite+, if it needs to be shipped via Vite then it has to be open source.<p>Companies willing to pay for Vite+ help sustain and improve the open source parts powering it, including Vite. Even if you only use Vite and not Vite+, you’d benefit from the success of Vite+, not the other way around.<p>I don’t really find anything inherently wrong with your definition of “rugpull”. If some people in the community are happy to pay for it and the rest also benefit because of it, that’s a win-win in my book.</p>
]]></description><pubDate>Sat, 11 Oct 2025 12:37:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45548694</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=45548694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45548694</guid></item><item><title><![CDATA[New comment by EvanYou in "Vite+ – Unified toolchain for the web"]]></title><description><![CDATA[
<p>Good question.<p>The first and most important distinction is obviously which ecosystem you are more familiar / invested in (webpack vs. vite). It does make sense for projects deeply coupled to webpack to consider rspack first.<p>Putting that aside:<p>- Vite+ is a commercial offering with a company that can provide paid support. Rstack is a big corp by-product where their primary customers are internal teams.<p>- The Vite ecosystem provides way more options in choice of meta frameworks (Nuxt, Astro, React Router, Tanstack Start, SvelteKit, SolidStart...), and 3rd party tooling integrations<p>- While both written in Rust, our tools in general perform significantly better than rstack. With the upcoming full bundle mode, Vite 8 will be at least 2x faster than rsbuild across all categories (dev server start up, HMR, production build)<p>- Vitest and Oxlint are mature and widely used in production. rstest and rslint are both quite new and not even feature complete.</p>
]]></description><pubDate>Sat, 11 Oct 2025 05:51:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=45546925</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=45546925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45546925</guid></item><item><title><![CDATA[New comment by EvanYou in "Vite+ – Unified toolchain for the web"]]></title><description><![CDATA[
<p>A rugpull means taking back something that was given.<p>Before Vite+, we maintain Vite, Rolldown, Oxc, all of which are open source and widely used. These remain open source - nothing changes about existing projects.<p>Vite+ is an entirely new product built on top of our own open source, with additional features that are entirely new. You don't need to use Vite+. You can keep using all the open source that we already provide.<p>The revenue generated from Vite+ flows back into the development of both its proprietary features the underlying OSS. So if you are a user of our OSS, you'd benefit from Vite+ even if you don't use it, because it allows us to keep improving the OSS you are using.</p>
]]></description><pubDate>Sat, 11 Oct 2025 05:43:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45546891</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=45546891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45546891</guid></item><item><title><![CDATA[New comment by EvanYou in "Vite+ – Unified toolchain for the web"]]></title><description><![CDATA[
<p>Not even Rollup. Vite+ uses Rolldown which is also developed from the ground up by VoidZero.</p>
]]></description><pubDate>Fri, 10 Oct 2025 12:09:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45538015</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=45538015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45538015</guid></item><item><title><![CDATA[New comment by EvanYou in "Vite+ – Unified toolchain for the web"]]></title><description><![CDATA[
<p>Vite+ is built on top of the Rust stack (Rolldown / Oxc) developed by the same team and uses none of these.</p>
]]></description><pubDate>Fri, 10 Oct 2025 12:08:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45538011</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=45538011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45538011</guid></item><item><title><![CDATA[VoidZero: Building a Unified Toolchain for JavaScript]]></title><description><![CDATA[
<p>Article URL: <a href="https://voidzero.dev/posts/announcing-voidzero-inc">https://voidzero.dev/posts/announcing-voidzero-inc</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41707856">https://news.ycombinator.com/item?id=41707856</a></p>
<p>Points: 34</p>
<p># Comments: 6</p>
]]></description><pubDate>Tue, 01 Oct 2024 13:07:31 +0000</pubDate><link>https://voidzero.dev/posts/announcing-voidzero-inc</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=41707856</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41707856</guid></item><item><title><![CDATA[New comment by EvanYou in "Farm: Fast vite compatible build tool written in Rust"]]></title><description><![CDATA[
<p>Note in the benchmark, it is comparing a React JSX project using @vitejs/plugin-react (Babel based) instead of @vitejs/plugin-react-swc (SWC based).<p>I made the exact same point two years ago when Turbopack came up with a similar benchmark: <a href="https://github.com/yyx990803/vite-vs-next-turbo-hmr/discussions/8">https://github.com/yyx990803/vite-vs-next-turbo-hmr/discussi...</a><p>The point is if we want to compare bundler performance, we should keep all the non-architectural variables consistent across all implementations. Otherwise we are not comparing apples to apples.<p>PR submitted to update the benchmark: <a href="https://github.com/farm-fe/performance-compare/pull/11">https://github.com/farm-fe/performance-compare/pull/11</a></p>
]]></description><pubDate>Tue, 25 Jun 2024 16:17:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=40790362</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=40790362</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40790362</guid></item><item><title><![CDATA[New comment by EvanYou in "Rolldown: Rollup compatible bundler written in Rust"]]></title><description><![CDATA[
<p>For esbuild: We know other teams that have attempted to improve code splitting based on esbuild and found it very difficult. A big part of it is that in order to be fast, esbuild applies multiple features (bundle, treeshaking, transforms) in as few AST visits possible, but that comes at the cost of the logic of different features not being layered / decoupled nicely. It is difficult for anyone other than Evan Wallace himself to add non-trivial new mechanisms to esbuild, and although we didn't directly talk to Evan about this, we felt it would be too much to ask for a substantial refactor of esbuild in order to get what we need. In addition, the people interested in making Rolldown happen has much more experience in Rust than in Go - and there is a lot more to leverage (e.g. napi-rs & Oxc) in the Rust-for-JS ecosystem.<p>For Rollup: the Rollup team itself has been trying to incrementally improve Rollup's performance, e.g. by swapping acorn with a Rust-based parser. But there's only so much you can gain starting from a pure JavaScript base, especially considering multicore utilization. Another aspect of the performance is in the back-and-forth between Rollup (on the JS side) and native transforms (swc, esbuild) - there is a lot of overhead repeatedly parsing / serializing ASTs and then passing strings across JS/native. By building on top of Oxc (which will ship transforms in the future) we hope to be able to stay on the native-side as much as possible to avoid such overhead.</p>
]]></description><pubDate>Sat, 09 Mar 2024 01:08:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=39648399</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=39648399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39648399</guid></item><item><title><![CDATA[New comment by EvanYou in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>I’m specifically taking about non-component context, i.e. plain JS/TS files.<p>Previously Svelte was able to get a pass on this because magic only happens in svelte files - but in the future, any JS/TS files in a rune-enabled Svelte project will technically be SvelteScript, this never happened before and I doubt the community has already “absorbed” how significant this change is.</p>
]]></description><pubDate>Sat, 23 Sep 2023 06:17:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=37620990</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=37620990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37620990</guid></item><item><title><![CDATA[New comment by EvanYou in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>> $state and $ref are quite different.<p>I wouldn't say they are "different" - they are fundamentally the same thing: compiler-enabled reactive variables backed by runtime signals! But yes, Vue already exposes the underlying concept of refs, so for users it's two layers of abstractions. This is something that Svelte doesn't suffer from at this moment, but I suspect you will soon see users reinventing the same primitive in userland.<p>> There's strict read/write separation<p>I'd argue this is something made more important than it seems to be - we've hardly seen real issues caused by this in real world cases, and you <i>can</i> enforce separation if you want to.<p>> We're instead encouraging people to use familiar JavaScript concepts like functions and accessors<p>This is good (despite making exposing state much more verbose). In Vue, we had to introduce destructuring macros because we wanted the transform to be using the same return shape with all the existing composable functions like VueUse.<p>> There are already a lot of different ways to work with Vue<p>This is largely because Vue has a longer history, more legacy users that we have to cater to, so it's much harder to get rid of old cruft. We also support cases that Svelte doesn't account for, e.g. use without a compile step. That said, the default way with a compile step is now clearly Composition API + <script setup>. Reactivity Transform also only really applied in this case so the point you raised is kinda moot.<p>Separate from the above points, the main reason Reactivity Transform wasn't accepted remains in Runes: the fact that compiler-magic now invades normal JS/TS files and alters vanilla semantics. Variable assignments can now potentially be reactive - but there is no obvious indication other than the declaration site. We had users trying Reactivity Transform on large production codebases, and they ended up finding their large composition functions harder to grasp due to exactly this (and not any of the points raised above).</p>
]]></description><pubDate>Thu, 21 Sep 2023 14:34:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=37598225</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=37598225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37598225</guid></item><item><title><![CDATA[New comment by EvanYou in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>This is (surprisingly) almost identical to the Reactivity Transform explorations we did in Vue: <a href="https://vuejs.org/guide/extras/reactivity-transform.html" rel="nofollow noreferrer">https://vuejs.org/guide/extras/reactivity-transform.html</a><p><pre><code>  let count = $ref(0)

  const double = $computed(() => count * 2)

  watchEffect(() => {
    console.log(double)
  })
</code></pre>
We started experimenting with this ling of thought almost 3 years ago:<p>- First take (ref sugar), Nov 2020: <a href="https://github.com/vuejs/rfcs/pull/228">https://github.com/vuejs/rfcs/pull/228</a><p>- Take 2, Aug 2021: <a href="https://github.com/vuejs/rfcs/pull/368">https://github.com/vuejs/rfcs/pull/368</a><p>- Take 3, Nov 2021: <a href="https://github.com/vuejs/rfcs/discussions/369">https://github.com/vuejs/rfcs/discussions/369</a><p>We provided it as an experimental feature and had a decent number of users trying it out in production. The feedback wasn't great and eventually decided to drop it. <a href="https://github.com/vuejs/rfcs/discussions/369#discussioncomment-5059028">https://github.com/vuejs/rfcs/discussions/369#discussioncomm...</a></p>
]]></description><pubDate>Thu, 21 Sep 2023 02:07:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=37592471</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=37592471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37592471</guid></item><item><title><![CDATA[New comment by EvanYou in "Migrating from Vue 2 to Svelte"]]></title><description><![CDATA[
<p>Author of Vue here - as many have pointed out, the article contains a number of comparisons that are incorrect.<p>I have written a post clarifying them: <a href="https://blog.vuejs.org/posts/on-migration.html" rel="nofollow">https://blog.vuejs.org/posts/on-migration.html</a></p>
]]></description><pubDate>Fri, 09 Dec 2022 03:14:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=33916965</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=33916965</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33916965</guid></item><item><title><![CDATA[New comment by EvanYou in "Vite 3.0"]]></title><description><![CDATA[
<p>This analogy is plain wrong. The blog post lists multiple non-Vue frameworks/tools using Vite as their default build tool. Compare that to the number of non-JS languages (excluding ones that compile to JS) using NPM as their default package manager (0).</p>
]]></description><pubDate>Thu, 14 Jul 2022 01:08:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=32090766</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=32090766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32090766</guid></item><item><title><![CDATA[New comment by EvanYou in "Babel is used by millions, so why are we running out of money?"]]></title><description><![CDATA[
<p>I do know Henry personally and Henry actually consulted me when he was debating whether he should quit his job to work on Babel full time. We also occasionally talk about the burdens of OSS maintenance so I know first hand how hard he's been trying to keep Babel afloat.<p>That said, a statement from the current most active paid contributor to Babel is probably more convincing: <a href="https://news.ycombinator.com/item?id=27116357" rel="nofollow">https://news.ycombinator.com/item?id=27116357</a></p>
]]></description><pubDate>Tue, 11 May 2021 13:35:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=27117915</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=27117915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27117915</guid></item><item><title><![CDATA[New comment by EvanYou in "Why we switched from Webpack to Vite"]]></title><description><![CDATA[
<p>Proper Jest integration is blocked by async transformers (<a href="https://github.com/facebook/jest/pull/9889" rel="nofollow">https://github.com/facebook/jest/pull/9889</a>) which should land as part of Jest 27, so we are mostly waiting on that.<p>In the meanwhile, you can also consider:<p>- @web/test-runner (<a href="https://modern-web.dev/docs/test-runner/overview/" rel="nofollow">https://modern-web.dev/docs/test-runner/overview/</a>)<p>- Cypress (both e2e and unit testing via its component test runner <a href="https://www.cypress.io/blog/2021/04/06/introducing-the-cypress-component-test-runner/" rel="nofollow">https://www.cypress.io/blog/2021/04/06/introducing-the-cypre...</a>)<p>- Check out <a href="https://github.com/sodatea/vite-test-example" rel="nofollow">https://github.com/sodatea/vite-test-example</a> for an example using the above.</p>
]]></description><pubDate>Thu, 29 Apr 2021 03:05:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=26976976</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=26976976</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26976976</guid></item><item><title><![CDATA[New comment by EvanYou in "Why we switched from Webpack to Vite"]]></title><description><![CDATA[
<p>At this point I don't think I really want to "sell" it to anyone. I've got enough things to maintain so I'd rather just have users who use Vite because they actually like it rather than people switching from webpack just out of FOMO.</p>
]]></description><pubDate>Thu, 29 Apr 2021 02:25:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=26976785</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=26976785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26976785</guid></item><item><title><![CDATA[New comment by EvanYou in "Why we switched from Webpack to Vite"]]></title><description><![CDATA[
<p>FWIW that plugin does not make your existing webpack-based code magically work in snowpack. It's just using webpack to bundle your snowpack-based code.</p>
]]></description><pubDate>Wed, 28 Apr 2021 23:20:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=26975474</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=26975474</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26975474</guid></item><item><title><![CDATA[New comment by EvanYou in "Why we switched from Webpack to Vite"]]></title><description><![CDATA[
<p>Author of Vite here. I see many people evaluating Vite as a webpack replacement, so I want to clarify the goal of the project here:<p>It is NOT Vite's goal to completely replace webpack. There are probably a small number of features/capabilities that some existing webpack projects rely on that doesn't exist in Vite, but those features are in the long tail and are only needed by a small number of power users who write bespoke webpack configuration. Some of the commenters here probably belong in this group. If you do (e.g. you tried to migrate and found roadblocks, or evaluated and concluded that Vite doesn't suite your needs), use webpack by all means! You are not Vite's target audience by design - and you should absolutely pick the right tool for the job.<p>However, in the context of the general web dev population, 90% of existing devs and 100% of beginners don't need or care about these long tail features. This is an estimation made based on years of experience working on vue-cli, which is webpack-based. (context: I'm also the author of Vue.js and vue-cli is downloaded more than 3 million times per month on npm). Vite is optimized for these common use cases, and we've heard many success stories of painlessly moving from vue-cli/CRA to Vite.<p>This is also why Vite is a good fit for Repl.it where majority of its use cases overlap with the target use cases of Vite.<p>That said, we are also seeing frameworks like Svelte/Solid/Marko building SSR meta frameworks on top of Vite, projects that were previously webpack-based offering alternative modes running on top of Vite (e.g. Nuxt, Storybook), so we believe Vite does cover quite a lot even for power users.<p>So - try it, and if it doesn't work for you, stick to webpack (specially if you have an existing project relying on specific webpack behavior). As many people said, webpack 5 has made decent performance gains, and if you are targeting modern browsers, consider replacing Babel/TS with esbuild. These should already get you pretty far.</p>
]]></description><pubDate>Wed, 28 Apr 2021 23:10:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=26975403</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=26975403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26975403</guid></item><item><title><![CDATA[Vite 2.0 Released]]></title><description><![CDATA[
<p>Article URL: <a href="https://vitejs.dev/blog/announcing-vite2.html">https://vitejs.dev/blog/announcing-vite2.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=26169651">https://news.ycombinator.com/item?id=26169651</a></p>
<p>Points: 6</p>
<p># Comments: 2</p>
]]></description><pubDate>Wed, 17 Feb 2021 18:20:45 +0000</pubDate><link>https://vitejs.dev/blog/announcing-vite2.html</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=26169651</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26169651</guid></item><item><title><![CDATA[New comment by EvanYou in "Vue.js 3"]]></title><description><![CDATA[
<p>> Having to write two type definitions for Component Props: one TS interface/type, and one as the JS object sucks.<p>Uh, you don't have to? TS inference works with the JS objects. There's no need to provide the generic argument here.<p>Also check out this: <a href="https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-script-setup.md#with-typescript" rel="nofollow">https://github.com/vuejs/rfcs/blob/sfc-improvements/active-r...</a> (auto-generating runtime types from TS interface)</p>
]]></description><pubDate>Fri, 18 Sep 2020 17:10:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=24519283</link><dc:creator>EvanYou</dc:creator><comments>https://news.ycombinator.com/item?id=24519283</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24519283</guid></item></channel></rss>