重點摘要: 行動應用開發沒有放諸四海皆準的「最佳技術」,只有最適合你的需求、預算與時程的選擇。本文比較原生(Swift/Kotlin)、跨平台(React Native/Flutter)與漸進式網頁應用(PWA)三種方式在成本、效能、裝置存取能力與長期維護上的取捨,並根據真實專案情境提供決策框架與各方案的實際預算參考。

前言

「我們該用原生開發,還是用 React Native?」是新創創辦人與產品團隊在啟動行動應用專案時最常問的問題之一,但這通常不是該問的第一個問題。真正該先問的是:這個應用實際上要做什麼?服務誰?多快需要上市?

平台選錯,代價會不斷累積。明明不需要卻選了原生開發,你等於為一個原本很直觀的業務型應用,多花了一倍的開發成本與時程去維護兩套獨立程式碼庫。反過來,明明需要深度硬體整合卻選了跨平台,你會花上好幾個月和框架限制搏鬥,而原生開發本來完全不會遇到這些問題。

本文拆解三種主流方式之間真實的取捨,不是行銷話術,讓你能根據實際需求做出決定。

三種方式,白話說明

原生開發

分別為 iOS(Swift/SwiftUI)與 Android(Kotlin/Jetpack Compose)獨立開發,兩套各自使用該平台語言與工具鏈的獨立程式碼庫。

優勢: 最佳效能表現、第一天就能完整存取平台的每一項 API 與裝置能力(相機、感測器、背景處理、平台專屬 UI 模式),以及最順暢的使用體驗,因為應用是按照該平台預期的方式打造的。

取捨: 兩套程式碼庫要建置、測試、維護,開發成本大約是單一跨平台程式碼庫的 1.5 到 2 倍,每個功能都得做兩次。

跨平台開發(React Native、Flutter)

單一程式碼庫同時編譯給 iOS 與 Android,兩平台共用大部分業務邏輯與 UI 程式碼。

優勢: 單一程式碼庫、明顯較低的成本與更快的上市時程,以及龐大的人才庫(尤其 React Native,與 Web React 開發有高度重疊)。

取捨: 部分平台專屬的細節需要原生模組或變通做法;對絕大多數業務型應用而言效能表現很好,但對圖形密集或高度動畫化的體驗可能略遜於原生;框架跟上新 OS 功能的速度有時會比原生慢一些。

漸進式網頁應用(PWA)

以網頁應用打造、但行為像原生應用,可安裝、可離線使用、可推播通知,完全不需經過應用商店審核與上架流程。

優勢: 成本最低、上線最快、不需經過應用商店審核與等待,且同一套程式碼庫同時服務行動與桌面網頁。

取捨: 裝置硬體存取能力有限(無法深度整合藍牙、相機控制受限、背景處理受限)、無法在 App Store/Play Store 上架(對依賴商店曝光的消費型應用而言是重大限制),且 iOS 對 PWA 能力的限制歷來比 Android 更嚴格。

比較表

面向原生跨平台PWA
開發成本最高(1.5-2 倍)中等最低
上市時程最慢中等最快
效能最佳對多數應用而言很好UI 簡單時表現佳,複雜互動受限
裝置存取完整接近完整(缺口用原生模組補)有限
應用商店上架有有無(除非包裝)
維護兩套程式碼庫一套程式碼庫一套程式碼庫
最適合效能導向、重硬體整合的應用需要商店曝光的多數業務應用內容型應用、內部工具、快速驗證

實用決策框架

依序回答以下問題,第一個能給出明確答案的問題,通常就決定了你的方向。

1. 是否需要深度硬體整合(藍牙周邊裝置、進階相機/AR、背景定位追蹤、複雜感測器融合)? → 若是,傾向原生,或針對特定硬體相關功能使用帶原生模組的跨平台。

2. 這是一個依賴應用商店曝光與發現機制成長的消費型應用嗎? → 若是,你需要 iOS/Android 應用商店的存在,PWA 就不是選項了;再依剩下的問題在原生與跨平台間做選擇。

3. 這是在驗證商業構想,還是服務內部團隊,速度比精緻度更重要? → 依序優先考慮 PWA 或跨平台,以取得速度與成本優勢。

4. 你有足夠預算與時程負擔兩套獨立程式碼庫,且跨平台的效能上限確實無法滿足你的使用情境嗎? → 選原生。否則,跨平台很可能是成本與成果之間更好的取捨。

預算與時程參考

應用複雜度原生(iOS + Android)跨平台PWA
簡單(內容/預約類,少於 10 個畫面)12-18 週,60,000-120,000 美元8-12 週,35,000-70,000 美元4-8 週,15,000-35,000 美元
中等(市集、社群、多角色)20-30 週,120,000-250,000 美元14-20 週,70,000-140,000 美元8-14 週,35,000-70,000 美元
複雜(金融科技、即時協作、重硬體使用)30-52 週,250,000 美元以上20-32 週,140,000-250,000 美元此複雜度下通常不適用

以上範圍假設需求明確且團隊經驗豐富;需求不明或頻繁變動範疇,無論選擇哪種技術都會拉長時程、增加成本。

常見錯誤

沒有硬體相關需求,卻「為求保險」選了原生。 這是最常見、也最昂貴的可避免錯誤,團隊為了一個從未真正用到的能力上限,多付了一倍的成本。

為依賴成長的消費型應用選了 PWA。 如果你的成長模式依賴應用商店搜尋與精選曝光,PWA 會在產品驗證之前就先切斷一個主要的獲客管道。

低估平台專屬的品質測試需求。 即使是跨平台應用,也需要在 iOS 與 Android 的真實裝置上測試,模擬器往往抓不到瀏海/相機開孔、手勢導覽衝突、OS 版本特定錯誤等實際問題。

把框架選擇當成永久且不可逆的決定。 從跨平台開始,之後為某個重硬體功能加一個原生模組,是常見且低風險的做法。反過來,一開始就選原生、只做了 iOS,之後才發現需要再開發第二套完整的原生程式碼庫,則是規模大得多的轉向。

行動應用開發常見問題

React Native 跟 Flutter 哪個比較好?

兩者在大規模正式環境中都已獲得驗證(React Native 支撐了 Instagram、Shopify 的部分功能;Flutter 支撐了 Google Pay 與 BMW 的應用)。React Native 的人才庫較大,特別是當團隊已熟悉網頁 React 時更有優勢。Flutter 因為自行繪製 UI 而非橋接原生元件,通常在跨平台的視覺一致性上表現更好。我們會依團隊契合度與具體功能需求來選擇,而非一律偏好某一方。

我們可以先做 PWA,之後再升級成跨平台或原生應用嗎?

可以,而且是常見的驗證策略,先以最小投資推出 PWA 測試需求與核心功能,等有了真實使用數據支撐更大的投資規模時,再投入跨平台或原生應用開發。為 PWA 打造的業務邏輯與 API 層通常可以延續到下一階段,減少重工。

跨平台開發中,實際上有多少程式碼是共用的?

架構良好的 React Native 或 Flutter 應用,通常有 80-95% 的程式碼在 iOS 與 Android 間共用,其餘是平台專屬的原生模組,用於推播通知設定、深度硬體整合或平台專屬 UI 細節等功能。這比十年前早期的跨平台框架能達到的比例高出許多。

應用商店審核跨平台應用時,待遇會不一樣嗎?

不會,Apple App Store 與 Google Play 是根據應用的行為與是否符合商店規範來審核,而非底層框架。一個建置良好的 React Native 或 Flutter 應用,會經過與原生應用相同的審核流程,不會有先天劣勢。

上線後應該預期多少持續維護成本?

跨平台應用建議每年編列初期建置成本的 15-20% 作為維護預算(OS 更新、依賴套件升級、修錯、小幅功能新增),原生應用則因兩套程式碼庫的維護負擔,通常接近 20-25%。PWA 一般最低,約 10-15%,得益於網頁標準工具鏈,且多數更新不需重新提交應用商店審核。

結語

原生、跨平台、PWA 之間的選擇,不是技術偏好問題,而是效能上限、成本與上市時程之間直接的取捨,應該由你的應用實際需要做什麼來決定。大多數業務型應用,也就是絕大多數被建置出來的應用,並不需要原生所提供、但也讓成本大幅提升的效能上限。真正需要它的應用,通常從特定的硬體或效能需求就能判斷出來,而不是「原生感覺比較正式」這種模糊的直覺。

Nxtcloud 曾以這三種方式打造過行動應用,從幾週內驗證新商業構想的 PWA,到處理高要求即時需求的原生應用。我們依需求決定技術,而不是反過來。

準備好規劃你的行動應用了嗎?