😰

(bun + oxlint + oxlint-tsgolint + vite8) * (react-compiler vs svelte)

に公開

(bun + oxlint + tsgo + vite8) * (react-compiler vs svelte)

初投稿です。

最近のツールチェインを味見してキャッチアップ
この前のカンファで隣の人からoxcが熱いと聞いたので。どれだけ辛いのか体験

本記事はLabBaseアドベントカレンダー2025の17日目の記事です。

結論

ツール 評価
bun ❤️
oxlint 😁
oxlint-tsgolint 🤮
vite8 😁
react-compiler 🫠
svelte 😉

https://github.com/madonoharu/lbac2025

bun

https://zenn.dev/ak/articles/c21609fd3b0fdc

他に比べて問題が発生することもなく、爆速インストールを提供してくれました。
普段利用していたvoltaがbunに未対応だったため、ついでにmiseに移行しました。

oxlint + oxlint-tsgolint

plugin:react/recommended みたいな設定プリセットがないので、醜悪な自前プリセットを用意。
categoriesから一括設定するのが正解なのだろうか。

https://github.com/madonoharu/lbac2025/blob/main/recommended.json

ついでに導入したoxlint-tsgolintはtsgoを引っ提げて大暴れしました。
monorepoだと型がうまく繋がらなかったり、svelteの型解釈間違えたりと。
ちょっと当分は触りたくないです。

Vite 8

意外と問題なく動作している?
爆速ビルドで快適です。

React Compiler と Svelte

自動的に強烈なメモ化がマジカルに行われるところは両者共通。
メモ化の挙動を体で覚える必要がある気がする。
React Compilerはuse-no-memoを使って挙動を確認すると良い。

バンドルサイズ

  • React: 194 KB
  • Svelte: 39 KB

ここはSvelteさまさまです。

Web Animation APIを過剰に使って似たような実装を用意しましたが、DOMのレンダリングを比較すべきところフレームワークを無視して直接animationを弄っているため、あまり差が出ず失敗でした。
しかもメモリリークしている

まとめ

気軽に新技術を導入するのはやめようね!

時間がなくてできなかったけど、本当はwasmからマルチスレッドでレンダリングをしたかった…。
なお弊社では新技術を積極的に採用しています!

Discussion