字節跳動宣佈開源 Lynx 框架,這是一套支援使用 Web 標記語言、CSS 和 JavaScript 建立原生跨平臺移動應用的開發工具集合。該框架透過自主研發的 JavaScript 引擎和畫素級精準的 UI 渲染能力,實現原生級別的效能表現。
Lynx 架構師 Xuan Huang 解釋稱,Lynx 受 Chromium、Flutter 和 React Native 啟發,意在透過應對日益複雜的裝置形態差異和多平臺支援需求,實現規模化且更高效的原生級體驗。這些需求導致了“反覆重建功能相同的模組,從而造成資源浪費、團隊協作割裂,以及產品上市時間的延誤”。
Lynx 框架延續了相似的設計理念——"專為應用開發定製的替代性 Web 方案"。該框架在繼承 Web 技術優勢的同時,採取了強約束策略:既支援類 Web API 介面,又透過施加特定限制與擴充套件來實現明確的設計意圖。
為實現這一目標,Lynx 採用標記語言與 CSS 語法,讓 Web 開發者得以進行移動應用開發。框架原生支援 CSS 動畫與過渡效果、CSS 選擇器與主題變數配置,以及漸變、遮罩、裁剪等現代 CSS 視覺效果。
在架構層面,Lynx 突破了傳統 Web 單執行緒模型的限制,透過靜態強制實施的雙執行緒架構模型進行革新:主執行緒專用於處理高優先順序的同步非阻塞任務,後臺執行緒則負責執行使用者程式碼。據 Huang 介紹,這種架構設計使得 Lynx 能夠近乎即時地渲染應用的首幀介面,大幅最佳化"首幀渲染時間(TTFF)"指標,同時也透過在主執行緒高效處理高優先順序事件與手勢操作,確保介面互動的高響應度。
Lynx 框架由多個元件構成,其中包括:Lynx 核心引擎;基於 React 的宣告式 UI 前端框架 ReactLynx;採用 Rust 語言構建的、基於 webpack 相容的 Rspack 開發的高效能打包工具 Rspeedy;最佳化版 JavaScript 引擎 PrimJS;以及基於 Electron 的除錯工具 Lynx DevTool。該框架還提供了 Web 前端適配層,支援在瀏覽器環境中執行 Lynx 應用。
在 Syntax FM 的技術播客中,字節跳動工程師 Zack Jackson 將 Lynx 定位為公司內部的 React 替代方案,這套框架驅動著其他所有應用程式的 UI 層,以確保跨團隊技術架構的統一性。不過 Huang 在官方宣告中特別強調,Lynx 並不侷限於 React 技術棧,未來還會逐步開源其他前端方案。
目前該框架已應用於 TikTok 應用內的搜尋框,以及專為創作者打造的內容生產和管理工具 TikTok Studio 等多個業務場景。
Hacker News 上自稱就職於位元組的使用者 suzakus 透露,iOS 與安卓客戶端中最重要的跨平臺功能模組採用 C++ 編寫以實現跨平臺的可移植性,而其他包括大部分的 UI 元件仍使用 Kotlin 或 Swift 開發。這一技術現狀雖看似與應用中 Lynx 框架的普及程度存在反差,但卻是與 Huang 此前描述的漸進式演進路線相吻合。
此外,Huang 也在 Hacker News 的評論區回應了為何位元組選擇與現存最古老的命令列網頁瀏覽器 重名:
Lynx 專案最初命名時並未考慮長遠影響。鑑於已有大量程式碼庫和使用者依賴現有名稱,我們決定保持原名,不因專案的開源而更名。
最後,Huang 強調說,字節跳動將持續推進 Lynx 框架的開源程序,未來將陸續公開更多 UI 元件、定製化渲染引擎及其他前端框架。該框架還將突破移動端限制,逐步擴充套件至桌面端、電視以及 IoT 裝置等更多平臺。
檢視英文原文:
TikTok's Native Cross-Platform UI Framework Lynx Goes Open Source(https://www.infoq.com/news/2025/03/tiktok-lynx-cross-platform-apps/)
宣告:本文由 InfoQ 翻譯,未經許可禁止轉載。
