---
# System prepended metadata

title: 'Vite: Beyond a Build Tool - 尤雨溪 (Evan You)'
tags: [JSDC2025]

---

# Vite: Beyond a Build Tool - 尤雨溪 (Evan You)

{%hackmd @JSDC-tw/B1loEcwJZl %}
###### tags: `JSDC2025`

Slido：https://app.sli.do/event/j4ehzyo9v3zhouRAEFkD5A

> 開始做筆記

# Current Status
npm install vite: 40 million / week downloads

2025-07 > wepback ! :confetti_ball: 
Was never thought

Lots of libraries to compose a ecosystem
Exploring the future now

storybook, playwright, laravel ... use vite

becomes **The shared infrastructure layer!**

[Vite documentory](https://www.youtube.com/watch?v=bmWQqAKLgT4)

# Challenges
Face some unique challenge

esbuild (Golang) + rollup (JS/TS) + swc (Rust) => vite

Different tech stacks, but all together, too many chunks produced
Communication between different parts

# How To Resolves
## Unify the bundler
Complicated
- Reference Webpack has its complex issue, from design
- Interupt between commonjs - ESM
- Use the third body tools to build will still face the same problem

-> STOP!

## Why build tool matters in JS first?
- Modules -> find standard -> ESM
- Too many requests
    - How many paralleable
    - Not all big chunk needed
    - How to become reasimable chunk?
    - How to handle network buddleneck
- Use new / custom system
    - Scale to no typing JS
- Dev a little new feature -> build too long time!


# The OGs
- browserify -> may the first tool node to browser
- new tools come up each month!
- JavaScript is not as fast as we hope!

# The next gen
- Tools written in native language!
    - ...
- Use vue, had to install deps, takes a long time

## How fast?
- Native != Fast



# Void(0)
- But it is still fragmented
    - Tools contribute the artitechture it is blackbox

- Unify all toolchains!
    - Oxc -> Linter in Rust

## Overview

## Why Rust?
- Simply to memory safty and perfermance
- Balance between performance ceiling and memory safety
- Already jas a very active ecosystem around js tooling
	- Easier to find libraries and contributors
	- Mature JS interop eg napi-rs
	- Mature web assembly support

## OXC
### Progress
- Linter 600+ rules to 
    - Search the best tool to support vue's format
### Performance

## Rolldown
Bundling is the one of the most complicated problem
- Replace esbuild, rollup

## Vite progress to adopt native solutions
- Phase 1 vite
    - deps on rolldown + oxc
    - next year comes up(with vite v8)!!
- Phase 2
    - Shift more bundle to Rust

## Oxlint
- ESLint is really slow ...
- Separate linting and type checking
- One cli, run syntax, type linting
- Resolving JS code to Rust, interesting issue
    - Did lot of research
    - Still fast JS

## Oxfmt
- Alternative to prettier
    - We (void(0)) contributed a lot to prettier
- In Alpha

## Rolldown
- Different architechtures to run bundlers in diffrent speed
- Perfroemance increased dramatically! (45x then prettier)
- 

# Status of productions
- Vite
    - Adapt rust more
- Vitest
    - Become faster
- Rolldown-Vite

# vite dev full bundle mode
- Phase 2 - Including more native bundles


# Make JS faster
- Rust is fast but 
- You still want to write in JS!
    - ESLint tools
    - Transformers
        - React
        - CSS-in-JS
        - Soild
    - Parser JS + MagicString :rolling_on_the_floor_laughing: 
        - Vue
        - Svelte
- But still slowing progress down
- need to minifise the overhead in JS
    

- eq. Handling CSS in Rust-to-JS has costs

## Oxc AST raw transfer
- One more step to transform between Rust and JS
    - Sending AST from Rust to JS is slow
- AST involves calling memory
- Lazy deserilaization


Yellow part is slow in OXC transform slide

Vite+
Agent mode

# Q+A 現場
1. Business model?
    2. 定制化服務 - 企業級需求 (CST)
    3. 先訂製，之後做成可重複使用
    4. V plus 有許可證方案
        - 營收超過一個程度
    6. 深度高度性能優化
        - 金雞母不開源
2. React Server Component
    - 價值不大 ...
    - 團隊有大支持，成員 Hiroshi 為專家
    - 有在使用 Waku 用量小
    - RSC 的應用到底有什麼本質性的優勢？
    - 心智模型變複雜
        - 互相 embedded
        - 安全性問題
            - SQL in React Component :rolling_on_the_floor_laughing: 
    - Server Side 複雜，增加負擔
    - Promise 的 size 不如大家期待


https://app.sli.do/event/j4ehzyo9v3zhouRAEFkD5A/live/questions

## 場外 QA

1. 有蠻多人問了關於怎麼看待 AI 影響軟體工作減少這件事

- 認為這就跟當初工業革命一樣，我們有了新工具可以省下許多重複且勞動性高的工作，就可以把精力花在有價值的產品與解決問題上面

2. 有人詢問了對於創業這件事有什麼經驗與建議，尤大的回答很實在：

- Vue 當時能從零到有一來是因爲時代對了，二來他也有喜歡做所以去把想法實踐出來，但如果是在現在這時代的話，他開玩笑的說：「我是覺得不要想不開」
- 認為如果只是因為不喜歡工作而去創業也不太會成功
- 就他自己的經驗是以前讀設計的背景，後來也學了程式，出來工作一段時間後累積一些經驗再結合以前的技能，先用 side project 的形式作出了一些成果，再 leverage 這些成果來擴大規模相對容易些
- 至少出去做 product pitch 時人家看著你過往累積的成果不會質疑這個人是不是真的能做得到
- 他自己認為他也不是一個很有毅力的人 (眾人倒抽一口氣)，但可以觀察自己在工作上感覺有得到 positive feedback 的事，朝那個方向做可能阻力比較小

---

## Slides

---

## Slido Remaining Question
1. Thanks for the work! 這邊想要請教，用別的語言改寫是趨勢，那全部改寫完一輪之後，你覺得趨勢是什麼？

2. 會建議 web 開發者開始學 Rust 建構工具嗎？還是交給 AI 來寫就好？

3. 目前這些發展中的 Oxc 工具有辦法做到 100% 跟 JS ecosystem 相容嗎？

4. 如果想加入 Build Tool 開發的話，建議從哪部分開始？

5. 想詢問剛剛提到的讓 JS plugin 能使用 vite 生態系更快是怎麼做到的？

6. magic-string 遷移到 rolldown 裡面表示以後寫 plugin 不需要再裝 magic-string 還是他會用 rust 重寫呢？

7. 會不會因為void 營利商業化導致這個工具鏈被出資方影響你們的開發方向，如何權衡？

8. 我應該幾乎不會直接使用 vite 的功能，而是靠比如說 React Router v7 framework mode 而接觸到 vite。可以簡單說說什麼情境比較會直接使用的 vite嗎？我想了解可能的應用跟需求

9. 您覺得 JavaScript 會不會被其他語言取代？例如 Rust

---

> 聊天區

---

{%hackmd @JSDC-tw/jsdc2025_sponsor %}