什么?我用日历软件跑路了?什么?我又重写了?我抛弃 Tauri,回归 SwiftUI!

148 阅读3分钟

在上一篇文章里,我还在兴致勃勃地分享如何用 Tauri 开发 macOS 日历小助手。开发到一半,我甚至把 NSPopover、Dock 隐藏、托盘图标、签名打包全部搞定了。按理说已经可以继续往前推进——结果,我毅然决定:把全部代码推翻,用 SwiftUI 从头重写

按照惯例,先上效果图:

image.png

为什么?因为现实狠狠教育了我。


为什么我最终还是放弃了 Tauri?

Tauri 的确很优秀:安全、轻量、跨平台、前端友好。但当我真的把它用于「只做 macOS」的场景时,它的优势反而成了包袱。

① 原生体验还是比混合方案更丝滑

Tauri 的 UI 是 HTML + CSS + JS,再怎么调也不可能做到和 SwiftUI 完全一致的原生动画、毛玻璃、手势反馈。
尤其是交互频繁的小工具(如日历弹窗),微小的延迟和渲染方式差异都会显得“怪怪的”。

作为每天都要点几十次的小工具,我容忍不了任何不原生的感觉。

② 我只做 macOS,不需要跨平台

这是问题的核心。
Tauri 的最大卖点是:跨平台

但是……
我只需要做 macOS 一个平台。

这意味着我要:

  • 引入 Rust
  • 引入浏览器环境
  • 引入 Tauri API
  • 写 JS/TS + Rust 互调
  • 管理两套构建链路
  • 面对更多奇奇怪怪的 macOS 权限、签名、弹窗 API 兼容性问题

最后我终于问了自己一句:

“你图啥?”

③ macOS 26 的新 Liquid 模糊(液态玻璃)太诱人了

这才是压死骆驼的最后一根稻草。

macOS 26 的新 Liquid 模糊真的太好看了。

Tauri 的 UI 想实现这个效果?
——那就是纯前端滤镜 + hack + 性能不佳 + 兼容性不行。

SwiftUI:

.background(.ultraThinMaterial)

就结束了。

而我想做的就是那种「完全原生、美到离谱的小日历弹窗」,Liquid Material 是核心设计元素之一。

所以,Tauri goodbye,我决定用 100% SwiftUI 重写整个 App


重写后的效果:比原来爽 100 倍

SwiftUI + macOS 26 = 真正的沉浸式苹果风体验

你会看到:

  • 全局 Liquid Glass (液态玻璃)模糊
  • 完整的原生动画(弹性、过渡、Popover 动画全跟随系统)
  • 更轻量,内存占用直接砍半
  • 无需再写 Rust/JS 桥接
  • 适配 macOS 26 新 API 简直爽到飞起

当我把旧版 Tauri 构建出来的 App 与 SwiftUI 原生版并排放在一起时,我瞬间懂了:

这东西只能用 SwiftUI 写。别骗自己了。


SwiftUI 重写后的关键亮点

① 使用 SwiftUI + SwiftData 管本地数据

再也不用想 State 管理到底放前端 Vue 还是 Rust side。

Swift 切切实实地告诉我:

“你想存数据?我帮你搞定。”


② 100% 原生 NSPopover

Tauri 模拟弹窗 VS 原生弹窗
差距大概就像:

  • 网页里的假原生按钮
  • 和真正 macOS 的蓝色默认按钮

不用插件,不用写 Rust,非常干净:

NSPopover()

③ Dock 隐藏、常驻托盘天然支持

不用再担心 Tauri 的 Tray、权限、事件回调一致性。

SwiftUI 中一句话:

NSApp.setActivationPolicy(.accessory)

④ 动画流畅度提升明显

Tauri 下的弹窗动画是模拟出来的。

SwiftUI 下的弹窗动画是:

  • 原生帧率
  • 系统一致
  • 自适应桌面刷新率

肉眼直接能看出差别。


⑤ macOS 26 的 Liquid Glass 简直神器

一句代码:

.background(.ultraThinMaterial)

就能让 UI 质感飙升到 Apple 官方同款。


最后

从 Tauri 到 SwiftUI,算是一次“回归原生”的旅程。

Tauri 真的很棒,适合:

  • 跨平台项目
  • 前端团队主力开发
  • 后端想用 Rust

但对于我的这个项目——

✔️ 专注 macOS
✔️ 极简 UI
✔️ 完全原生风格
✔️ 要用 macOS 最新 Liquid 视觉

SwiftUI 才是那个真正适合的选择。

越小越精致的 app,越适合 SwiftUI。
越跨平台、越庞大的 app,越适合 Tauri。

而我的日历小助手,毫无疑问属于前者。

如果你也在纠结 Tauri vs SwiftUI,可以私信我,我还能帮你分析你的项目适不适合原生。


附上下载地址