《为特定场景"投影"React:从60KB到7KB的极致裁剪实验》

标签:#前端 #工程化 #React #TanStackStart #AICoding #PerformanceOptimization #Vite #RSC #BundleSize

总结:
TanStack作者Tanner Linsley发现React 19在Vite打包后仍占约60KB gzip,远大于TanStack全家桶总和。受"代码即物化视图"理念启发,他借助AI代理在一天内生成了一个针对TanStack Start需求定制的React"投影"——保留完整公共API,但移除并发调度、时间切片等不需要的功能,核心仅7.08KB gzip。该项目已在其个人博客和tanstack.com生产环境运行,JS体积减少33%至85%,渲染性能提升2到3倍,验证了当代码生成成本骤降时,为特定场景定制依赖库投影的可行性。

文章要点:
- 作者发现React打包后仍有约60KB,比TanStack全家桶加起来还"胖",成了整个技术栈里"最不能删却又最大块头"的存在
- 本想用Preact"瘦身",但它和React 19在use()、服务端动作、hydration等边缘地带已经"渐行渐远",补丁叠补丁让人望而却步
- 一个超酷的观点启发了他:如果写代码能像查数据库一样"按需生成",那代码本身只是"理念"的一种展示形式,我们完全可以为不同场景生成不同版本的React
- 借助AI代理,只用一天就"捏"出了一个迷你版React,保留了你熟悉的hooks、JSX、Suspense和SSR,但扔掉了并发调度、时间切片这些TanStack Start用不上的"重型装备"
- 设计得像乐高一样:7KB核心底座 + 8个可插拔功能(context、suspense、portal等),不需要的模块在构建时直接替换成空实现,不会混进最终包
- 真刀真枪上了生产环境:个人博客JS少了三分之一,首屏快了近两成;tanstack.com这种"重火力"站点也成功扛住,客户端JS砍掉近1MB
- 作者抛出思考题:当定制一个库的成本从几个月降到几天,继续默认 shipped 全套通用库,反而成了一种需要掂量的选择
- 他强调这不是要"取代React",更像是Linux发行版或歌曲混音——同一个内核,根据不同听众的口味调出不同版本

文章URL:https://tannerlinsley.com/posts/projecting-react Projecting React
 
 
Back to Top