本文由 Meta 軟件工程師 Vitalii Topoliuk 和 Meta 開發人員大使 Sean Keegan 合作撰寫。
今天,我們有幸訪問到 Meta Messenger 桌面版應用程式團隊的軟件工程師 Vitalii Topoliuk。Vitalii 的團隊負責研發桌面版 Messenger,讓用戶可以直接使用電腦傳送訊息、撥打電話和保持聯絡。
我叫 Vitalii Topoliuk,是 Messenger 桌面版應用程式團隊的軟件工程師。過去三年來,我們一直在開發 Windows 和 macOS 版本的 Messenger 應用程式;而近兩年我們都在使用 React Native。
我們的應用程式由 React Native 框架提供支援。
Messenger 桌面版和衍生專案:桌面版 Work Chat、桌面版 Workrooms。
我們的應用程式構建在 Electron 框架之上,因此起步還算不錯。但很可惜,我們很快便發現到 Electron 的功能有限;為符合效能、可靠性和效率 (PRE) 要求,我們需要投放不少資源。此外,Electron 也限制了我們應用程式的功能。
改用 React Native 後,我們解決了幾個 PRE 問題並顯著改善了開發人員的體驗。React Native 使我們能夠重用 80% 程式碼庫,並改善了多項 PRE 衡量數據。之前使用 Electron 開發應用程式的時候,我們同時亦很注重改善 PRE 要求;在轉用 React Native 開發應用程式的三個月時間內,我們沒有對 PRE 投放任何額外資源,但反而實現到以下改善情況:
當機發生率:-60%
冷啟動成功率:97%(使用 Electron 的成功率是 88%)
P90 冷啟動延遲:-50%
二進位檔案大小:-80%
當機發生率:+59%
冷啟動成功率:99%(使用 Electron 的成功率是 95%)
P90 冷啟動延遲:-60%
二進位檔案大小:-70%
當然有。在 Meta,我們有機會向社群展示 React Native 可以用來建立跨平台桌面版應用程式。
我希望 React Native 日後能夠取代 Electron,但要實現這一點,我們應要改進框架,加入更多端對端的生產工具。例如,Electron 不僅是適用於網頁型應用程式的架構,同時亦包含用於建立安裝程式、自動更新程式、當機報告等工具。
感謝 Vitalii 抽空接受這次訪問。透過這次精彩的訪問,我們明白到如何使用 React 改善大型應用程式,以及我們如何從在 Meta 構建的產品中學習,並將經驗回饋 React 社群。希望大家在今天的訪問中有所得著,更了解 Meta 使用 React 的方式及用途。敬請留意我們推出的更多訪問網誌文章,屆時將有 Meta 工程師分享他們對這個主題的看法。
React 是廣受歡迎的開放原始碼專案之一,在過去幾年來一直獲評為「最受歡迎」的網絡框架之一。Meta 相信 React 是一個出色的資源庫,有助開發人員輕鬆建立大規模用戶介面。從簡單的網站乃至企業應用程式,React 開放原始碼程式庫已在全球各地獲數百萬名開發人員採用,可謂各適其適。
本網誌是「認識開發人員」系列的一部分。在這個系列中,我們邀請經常使用 React 的 Meta 工程師分享自己的體驗,向我們講述他們目前構建的精彩產品。敬請留意我們推出的更多訪問網誌文章,屆時將有其他工程師分享他們對這個主題的看法。
如需進一步了解 Meta Open Source,歡迎瀏覽我們的開放原始碼網站、訂閱我們的 YouTube 頻道,或在 Twitter、Facebook 和 LinkedIn 上追蹤我們。