苹果刚发布首款折叠屏手机 iPhone Duo ,机器还没正式开卖,跨端开发圈已经先吵起来了。

Expo、React Native、DartNative 几拨人直接在 X 上杠上了。

事情起因其实不复杂:
iPhone Duo 这种全新的设备形态,跨端框架到底要多久才能跟上?
iPhone Duo 给跨端框架出了道新题
这次 iPhone Duo 可不只是把屏幕从中间折一下那么简单。

它配备了 5.4 英寸外屏 + 7.6 英寸内屏,开合之间,App 需要在完全不同的尺寸之间动态切换。
同时还有双屏显示、折叠姿态、Split View、非对称 Safe Area、竖向导航栏等一整套新的交互场景。
Apple 官方甚至专门强调:开发者需要重新审视 动态布局、Size Classes、导航栏以及不同折叠状态下的界面表现。
原生 SwiftUI / UIKit 自然不用担心,苹果肯定第一时间给支持。
那 React Native 和 Flutter 怎么办?

这才是大家真正关心的。
Expo:已经在跟了
发布会刚结束没多久,Expo 官方直接晒出了 iPhone Duo 的适配进展。

速度确实快得离谱。
这其实也是近几年 Expo 一直押注的方向:Apple 每推出一轮新的系统 UI、组件和能力,Expo 都争取第一时间把它们带进 React Native。
尤其现在的 React Native 已经进入 New Architecture 时代,Fabric、JSI、原生组件体系越来越扎实,Expo 自己也一直在往更深的系统能力里钻。
所以 iPhone Duo 一亮相,Expo 迅速跟进,不算特别意外。
真正有戏剧性的是——隔壁 DartNative 看不下去了。
DartNative:这有什么好吹的?
DartNative 作者 Ioseph Magno 很快发帖回应。


意思很直接:
Expo 那帮人总爱拿“快速支持苹果原生能力”当卖点,但现在 DartNative 同样能快速支持 iPhone Duo。
包括:
- 原生导航栏
- 原生组件
- 系统动画
- 最新的 iOS 原生能力
最后直接撂下一句:DN > RN。

火药味瞬间拉满。
随后 React Native 社区的开发者也加入混战,这件事很快从“谁先支持 iPhone Duo”升级成了那个经典争论:
跨端框架到底谁更接近原生?
DartNative 凭什么敢直接叫板 React Native?
这就得聊聊 DartNative 这个最近刚冒出头的项目了。
它的定位相当有意思。
你依然写 Dart,API 设计上大量继承了 Flutter 的使用习惯,但底层链路大致是:
Dart → DartNative → FFI / JNI → UIKit / Android View
举个例子,一个列表,在 Flutter 里最终由自己的渲染体系绘制。
到了 DartNative:
ListView → UITableView / RecyclerView
Text → UILabel / Native Text
TextField → UITextField
也就是说,它直接调用平台自带的 UI 控件。

DartNative 官方把口号写得相当直白:
Real native apps, written in Dart.
同时强调自己没有 Impeller、没有 Skia、没有 JavaScript Runtime,通过 Dart AOT 编译后直接驱动原生 View。
这就有意思了。
它刚好卡在 Flutter 和 React Native 中间
如果粗暴一点理解,三条技术路线的差异大致是这样的:
Flutter:
Dart → Flutter → Impeller / Skia → UI
React Native:
JavaScript → React Native → Fabric / Native Components → UIKit / Android View
DartNative:
Dart AOT → FFI / JNI → UIKit / Android View
所以 DartNative 瞄准的位置很清晰:
保留 Flutter 开发者熟悉的 Dart 和 Widget 开发体验,同时直接使用原生 UI。
这也是为什么 DartNative 一露面,就疯狂强调键盘动画、滚动手感、文字渲染、原生输入框、Liquid Glass 这些细节。
因为这些恰恰是“用起来像不像原生”最容易露馅的地方。
DartNative 官方目前甚至宣称可以使用真正的 UITableView / RecyclerView、UILabel、UITextField,以及 iOS 的 Core Animation。
那 React Native 真被吊打了吗?
还真没那么简单。
首先,现在的 React Native 早就不是当年那个 Bridge 满天飞的 RN 了。
随着 JSI、Fabric、New Architecture 不断成熟,JS 和 Native 之间的调用方式已经发生了根本性变化。
再加上 Expo 这些年疯狂补基础设施、原生模块和 Router,React Native 手里最大的牌依然恐怖:生态。
DartNative 官方目前公布的是 34 个第一方插件,框架也才刚刚进入开发者视野。
React Native 背后却是一个发展多年的庞大生态。
支付、地图、推送、相机、监控、登录、动画、第三方 SDK……
真正落地商业项目时,这些东西可能比 Benchmark 多出来的那几帧重要得多。
另外,DartNative 官网那些 120fps、Zero stutter、DN > RN 的性能描述,目前主要来自项目官方自己。
在更多第三方 Benchmark 和真实大型项目验证之前,先别急着封神。
写在最后
技术圈的“谁吊打谁”向来不缺流量,但真到了项目里,很难用一句 A > B 下结论。
Flutter 有自己的渲染体系,跨平台一致性强,生态也已经相当成熟。
React Native / Expo 背靠庞大的 JavaScript 和 React 生态,原生能力、社区规模以及商业项目积累都是实打实的优势。
DartNative 选了另一条路,用 Dart 直接连接 UIKit / Android View,思路够新,也确实给跨端开发带来了新的想象空间。
三种方案走的是不同路线,解决的问题也不完全重叠。
对开发者来说,真正要权衡的还是自己的 项目场景、团队技术栈、生态依赖、性能要求以及长期维护成本。
技术可以讨论,架构可以争论,Benchmark 也可以拿出来硬碰硬,但没必要演化成技术鄙视链。
能解决问题、能创造价值的技术,都值得尊重。
至于 DartNative 最终能不能成为 Flutter 和 React Native 之外的第三种选择,不妨给它一点时间。
毕竟在跨端这条赛道上,多一个认真折腾技术的玩家,对开发者来说总归是件好事。