本来已经 2026 ,感觉这种 Flutter VS React Native 的场景其实没什么太大对比意义,因为两个框架现在都比较成熟,也都大规模在各种消费级应用里被使用,但是这时候 Shorebird 提供了另一个角度对比,我们应该在渲染架构、生态系统稳定性、招聘流程、升级难度和运维控制等方面的对比,Shorebird 给出的角度是:
❝ 真正的问题不在于“哪个更快”,而在于风险和控制,比如对交付流程的控制力有多大?操作系统变更多久会迫使SDK 发布紧急补丁?第四年的维护情况会是什么样的?能否在流量高峰期立即发布关键修复程序?对合规性、安全审查和五年总成本产生怎样的影响?
然后再结合最近的 AI 与 Native 开发场景,突然就觉得有必要聊一聊。
Flutter VS React Native
相信 Flutter 和 RN 的对比大家应该已经看过不少,但今天我们可以通过一些新的角度来对比。
渲染架构的划分
实际上这也是 Flutter 和 React Native 区分最大的地方,也是大家最熟悉的烂大街对比,React Native 大部分时候依赖原生控件渲染,而 Flutter 则是拥有独立的完整渲染栈,这不能绝对性的说是谁好谁怀,只能说根据需求各自有各自的优势。
但是还是有值得一聊的地方,对于 Flutter 目前基本上已经是 Impeller 引擎为主,Skia 已经逐步被完全取代,这样就意味着 Flutter 会在构建时真正预先编译着色器,运行时不需要色器处理意味着动画卡顿更少。
❝ 目前 Impeller 现在已经成为移动平台的默认渲染器,而 Impeller 在 PC 的落地也在推进。
此外,去年底的时候,Avalonia 也宣布投资 Impeller , 和 Flutter 团队合作
将他们的 GPU 优先渲染器 Impeller 移植到 .NET 平台,所以从这个角度看,Impeller 无疑算是成功的,也代表了 Flutter 团队在自绘跨平台这一领域的成就。
而 React Native 的新架构则走了一条不同的道路,现在 JSI(JavaScript 接口)取代了旧的异步桥接,实现了直接的 C++ 通信,这其实比 Flutter 快了一大步,Flutter 在 Framework 的 FFI 和第三方支持上,同步调用支持进度还是慢了不少,另外 Fabric 则通过同步布局计算来处理渲染,性能差距显著缩小,不过核心渲染还是映射成原生控件(虽然也有 react-native-skia 第三方包)。
![]()
而在渲染对比上,也有一些数据参考:
Flutter 2026 年的基准测试显示,与旧版 Skia 渲染器相比,在复杂动画过程中,卡顿帧减少了 30-50%
SynergyBoat 基准测试里,最坏情况下的丢帧对比:Flutter( Impeller)的丢帧率接近 0%,而 React Native 为 15.51%,Swift(原生)为 1.61%
❝ 实际上当从数据看,两个的丢帧率其实都还行。
这里可能就有人不服了,所以就需要额外提一下 SynergyBoat 的这个测试基准 synergyboat/flashcard-ai-app-cross-platform ,它对所有平台(Flutter, Android Native, iOS Native, React Native)实现了一套统一逻辑的基准:
核心执行逻辑的统一,所有平台(Flutter, Android Native, iOS Native, React Native)都实现了一套完全对等的执行时间记录器:
UI 工作负载的标准化,在列表渲染测试中,Flutter 和 React Native 构造了几乎完全一样的测试场景,两者在移动端均设定了 500 px/s 的滚动速度,均使用线性曲线(Linear Curve/Easing)进行自动滚动,消除了人为操作的不确定性
深入底层的原生监控,例如记录底层引擎和模块的耗时,两个平台都测量了“首帧渲染时间”
为了消除单次测试的偶然性,基准采用了完整的统计分析:
多维度指标:除了平均帧时间,还有P95 帧时间(反映掉帧的尖峰情况)和掉帧率(Jank %)
可靠性校验:通过计算变异系数(CoV)来衡量测试结果的稳定性
环境基准化:在测试开始前记录内存基准,通过计算
memoryDeltaMB来衡量纯粹由测试操作引起的增量,消除了系统背景负载的影响
环境感知与配置对齐
屏幕刷新率对齐:基准会自动检测平台的屏幕刷新率(如 60Hz 或 120Hz),动态调整
targetFrameTimeMs(如 60Hz 对应 16.6ms),确保在不同硬件上的评价标准是公平的发布模式日志优化:React Native 版本在 Release 模式下通过自定义
emit函数和 ASCII 净化处理,确保日志记录本身的开销不会显著干扰测试结果
而对于对比结果,可以简单看结论:
帧率余量:基准结果里, Flutter 的平均帧耗时仅为4.01ms(远低于 120Hz 的 8.34ms 预算),而 React Native 虽能维持在8.34ms左右,接近预算极限
P95 与掉帧率:通过 P95 耗时和 1.5 倍预算的“Jank(卡顿)”统计,客观揭示了 RN 在滚动过程中存在15.51%的丢帧,而 Flutter 接近0%
启动性能 (TTFF):代码中均实现了对“首帧渲染时间”进行了的精准捕获,数据显示 Flutter (16.67ms) VS RN (32.96ms)
![]()
![]()
另外除了性能差异之外,在外观一致性上,Flutter 和 React Native 也有很大差异,例如:
React Native 依赖原生控件,所以会有平台特性的优势,但是如果你需要不同平台一致性的时候,就需要单独处理和适配,就算同平台,比如在之前 iOS 17 改变
TextInput表情符号的处理时,React Native 应用也会随之改变,当三星发布 One UI 更新并修改TextView内边距时,Galaxy 设备上的 React Native 应用也会改变行为而 Flutter 在上述例子里会始终保持一致,也就是没了一定的平台特性,但是一致性有相对优势,不过这也是另外一个问题,当需要平台特性时,需要单独增加适配,比如特性控件的跟进就天然慢于 RN ,更典型是字体库,Flutter 只会读取系统路径下的字体,如果主题字体在系统是通过 hook Typeface 或者 HwTypeface 等注入,那对于 Flutter 而言也是不生效
而 Shorebird 从 UI 层面对比的考虑结果是:
❝ 在 QA 阶段,Flutter 的像素级控制可以让测试在多平台,或者 Android 平台的不同机型上,在 UI 层面减少测试成本。运营风险
在这方面 React Native 一致保持着优势,特别微软的 App Center CodePush 提供了可靠的基础架构,推送的 JavaScript 更新后,用户可以够立即获得更新,并且它还能与现有的 CI/CD 流水线无缝集成,企业围绕它构建了关键的工作流程。
![]()
不过后来微软关闭了这个服务,微软在宣布终止服务时给了大家一年的迁移时间,之后就是自行托管开源的 CodePush 服务器,或者使用 Expo EAS 或自行构建,不过也都进入到了付费模式,例如 Expo 按月活跃用户数(即下载过至少一次更新的用户)收费,外加带宽费用:
❝ 每次更新都会下载完整的 JavaScript 包,一个 12MB 的包分发给 50 万用户,每年大约会消耗 6TB 的带宽,如果每月都发布热修复补丁,那么每年就会消耗 72TB 的带宽
截至 2026 年 2 月,Expo 的企业级套餐起价约为每月 1,000 至 2,000 美元,另加使用量费用,一个实际的企业应用场景:
❝ 一款金融科技应用,50 万活跃用户,每月更新安全补丁,对应 OTA 的基本费用加上超额费用每年就大概 25,000 至 30,000 美元
而 Flutter 目前热更新能力就相对较弱,对比 Shorebird 提供了一个定制的 Flutter 引擎,和官方分支不冲突,可以无缝切换:
按补丁安装量计费,免费套餐每月包含 5,000 次安装,超出部分每次安装收费 0.01 美元
同样情况下(50 万用户,每月补丁安装量),在企业套餐中,每月费用为 400 美元,或每年 4,800 美元
如果每月补丁安装量超过 100 万次,可以单独议价
❝ 虽然 Shorebird 看起来便宜,但是 Shorebird 对国区支持不稳定(因为 cloudflare),所以这方面也是个优势不明显。
当然 Shorebird 从另一个角度也做了对比:
Shorebird OTA 的补丁签名采用 Ed25519 加密签名,补丁使用开发者的私钥进行签名,私钥始终保留在开发者自己那里
Expo EAS 提供类似的签名功能,但由于 EAS 控制着的构建环境,因此需要信任 Expo 的基础设施来保障密钥安全
❝ 从实际结果上考虑,热更新还是 RN 更优秀,毕竟 Shorebird 方案也并不是完全开源支持自托管的方案。成本对比
首先,一个标准的 JS/React 项目在安装时会从 npm 拉取 700 到 1500 个包,每个包都可以通过预安装脚本在安装过程中执行代码,每个包都有自己的依赖项,相信 JS Package 审核和安全问题大家都听过:
![]()
而 Flutter 的 pub.dev 生态系统嵌套规模相对没那么深,整体审计难度相对较低,另外 Flutter 用 AOT 编译将 Dart 编译成原生 ARM 机器码,生成的二进制文件逆向成本对比 JS 工程偏高,这算是 Flutter 的相对优势。
❝ 现在 AI 逆向越来越强,不过相对优势还是有的。
而在混合开发领域,这方面 React Native 确实更有优势,因为核心渲染都是原生平台,Facebook 开发它的目的就是为了在不完全重写代码的情况下,给原生应用添加新功能。
而 Flutter 因为独立渲染的缘故,add-to-app 的效果和成本都相对较差,虽然经过了几个版本的优化,但是对比 React Native ,在混合开发领域确实还是逊色不少。
当然,如果说到 SDK 升级成本对比,Flutter 肯定比 RN 低很多,Flutter 的整体项目升级难度和成功率,还是比 RN 高不少的。
对此 Shorebird 也做了一个简单的总结:
因素
Flutter + Shorebird
React Native + Expo EAS
渲染
Impeller(Metal/Vulkan),直接访问GPU,像素级精准一致性,不受操作系统界面变化的影响
通过 Fabric 实现原生组件,外观与原生应用完全一致,但可能会因 OEM 厂商的行为变更而有所调整。
OTA 更新
Shorebird 补丁签名 ,支持任何 CI/CD,基于安装量的定价
Expo EAS,完整软件包下载,需要 Expo 构建版本,按月活跃用户数和带宽计费
表现
原生 AOT 到 ARM 架构,稳定60/120,可预测的最坏情况帧延迟
JSI 移除了桥接开销,Hermes 会进行预编译,适用于大多数用户界面,但复杂的动画可能需要优化
安全
强类型,默认启用二进制混淆,依赖关系图小
压缩后的 JavaScript 代码是可逆的程度较高,npm 攻击面大,需要额外的安全加固措施
招聘
人数较少,专注于移动端专业选手,Dart 需要学习。
庞大的 JavaScript 人才库,较低的 Web 开发门槛,移动端专业技能水平参差不齐
混合开发
Add-to-App 可用,但工具还不够好用
非常出色,专为逐步推广而设计,成熟的社区工具
升级成本
相对较低
很高
平台
移动端、网页端、桌面端、嵌入式系统单一代码库
以移动端为主,网页/桌面端也有,但成熟度一般
❝ 只能说在成本方面,各有优劣。AI VS Native
而回到现在的 AI 大潮下,原生开发其实在 VS 跨平台开发上,一直有一个说法:
❝ 都是 AI 时代了,都 AI 生产了,还用什么跨平台,不如直接原生生产,性能更好。
比如在 这种 OpenAI 的实践下,这类观点更是有了强力的依据。
实际上使用 Native 开发最大的好处就是可以更容易接近平台的性能,当然我一直说,目前能流行的大部分框架,它的性能瓶颈都不在于框架本身,因为大部分时候已经足够可以了,更多的瓶颈是在于你写的代码质量。
❝ 原生的性能好更多在于,它给了你更高的容错率。
而 AI 时代,确实很大程度可以解决代码质量问题,因为 AI 在「局部范围内」和「小规模需求」上,代码质量确实不错,但是我这里加了一些限定词,因为实际上在中大型项目里,AI 的整体能力还是挺一般的,如果使用者没有很好的工程管理能力和 AI 规范,大概率会让代码在两三次迭代后留下一坨屎山。
所以,AI 并不是想象中那么万能,至少在短期的移动客户端开发领域上不是,这一点我们刚聊过的 我们就提到过,当前 AI 在生产级的软件工程力在移动端还存在巨大局限性:
成功率极低:表现最好配置的成功率仅为 12%,大多数任务以“实现不完整”告终
复杂度陷阱:任务涉及 1-2 个文件时成功率为 18%,但当涉及 7 个以上文件时,成功率骤降至 2%,显示出模型在跨文件长程推理方面的短板
“防御性编程”提示词更有效:研究发现,使用基于“防御性编程”(原则的简洁提示词,比复杂的提示词能让成功率提升7.4%
所以不同人用 AI ,也可以得到不一样的效果,那么回归到用 AI 生成 Native (Android/iOS)双端的优势上,基于前面的情况来说,对于跨平台在 「UI 和通用业务代码上」,其实还是存在新的成本:
Token 支出,当然这对于企业可能是“微不足道”的成本差异,两次生成等于双倍 Token
失败率,基于小红书的论文数据,因为 AI 代码能力和客户端项目的复杂,AI 的产出通过率并不高,所以需要花费更多的时间和 Token 成本在成功率上,因为双平台代码输出下 AI 失败率叠加
Review 成本,实际上 AI 时代测试和审核才是最大成本,很多时候 AI 写代码之后,工程师都是审核员的角色,而双端生成就代表了双端的审核,除非你闭眼 commit ,能跑就行
测试成本,在 「UI 和通用业务代码上」上,需要在双平台上去检验成果
可以看到,实际上 AI 能做更多,但是也带来了更多,AI 在目前不是什么闭眼就能搞定的状态,Native 固然就是有性能和兼容性优势,但是 AI 其实没有给他带来对比跨平台上真正的成本和效率优势。
相反,对于 Flutter 和 RN ,很多时候以前因为要修改某些原生插件,而自己又不熟悉平台的情况,现在 AI 反而凸显出了它的优势:
❝ 首先原生插件普遍上下文内容偏短,功能单一,范围局限,又有对应已有平台代码参考,比如一个 Android 开发,在只有 Android 插件之后,让 AI 补全 iOS 实现,反而成功率更高
另外,在目前的测试和 AI 闭环能力上,Flutter 等框架确实比原生体验更好,比如在 Claude Code 上,就有人把 Flutter 的 Widget Preview 和 Claude Code 结合在一起实现了自动修改和预览:

另外,在 AI 时代,原生 Android 的 XML 的写法确实已经不行了,如果你想要更好的原生 AI 体验,至少你也要用上 Compose,而官方也是这么觉得的,所以谷歌也宣布放弃了 XML 的视图预览,未来 XML 的功能支持也不会有什么更新了:
![]()
所以,如果从 AI 角度看,其实原生对比跨平台的优势并没有凸显,除非 AI 真的进化到可脱手阶段,不然短时间来看,跨平台在 AI 时代的反而相对会更有优势,当然,这里最重要的是区分场景:
❝ 有的应用的场景就是注重底层硬件交互,或者对文本复杂输入场景、字体场景有强要求的,那么实际上肯定选择原生可以减少更多不必要的麻烦。最后
最后,我们可以总结下,从 Shorebird 和 SynergyBoat 提供的对比和数据上看,Flutter 确实存在一定优势,但是也是区分场景,不同场景下优势可能就成了劣势,例如热更新和混合开发,具体还是看你需要什么。
但是有一点可以看出来的是,Flutter 和 RN 在现阶段的性能上已经非常不错了,特别是 Flutter 的 Impeller 加持下,帧率和动画稳定性都有很大提升,如果你是在早些年认识的 Flutter 和 RN,那对于他们的印象,也许需要改改了。
而对于 AI ,目前来说并不能完全体现出双端的优势,这个目标效果,还有一段路要走。
https://shorebird.dev/blog/react-native-vs-flutter-for-enterprise-apps
https://www.synergyboat.com/blog/flutter-vs-react-native-vs-native-performance-benchmark-2025
https://devnewsletter.com/p/state-of-flutter-2026/
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.