搜索

Refrax – 我从零打造的Arc浏览器替代品

在两个浏览器窗口中打开同一个标签页。在Chrome或Safari中,你会得到两个互不关联的页面。在Arc中,一个窗口显示占位符。在Zen中,它会静默创建副本。而在Refrax——我亲手打造的浏览器里,两个窗口会实时同步显示同一个页面。同一个网页,想开多少窗口就开多少。这原本不可能实现。WebKit的WKWebView一次只能存在于一个视图层级中。随着macOS 26发布,苹果新增了SwiftUI API将WebView与WebPage分离,理论上可以实现多个视图引用同一页面。但若尝试,应用就会崩溃。WebKit源码中有这样一段前置条件注释:“无论如何我们都不能拥有多个所属页面,但我们需要决定这是否算错误、能否优雅处理,甚至其确定性如何……”下面是我的实现方法。CAPortalLayer是自macOS 10.12起就存在的未公开私有类。它通过引用同一GPU内存(而非复制)来镜像图层的合成输出。每次滚动、动画或重绘都能即时同步。这正是液态玻璃效果、iOS文字选择放大镜和拖拽时幻影图像的实现原理。苹果用传送门实现特效,我则用它让同一网页出现在两个窗口。Refrax为每个标签页保留一个真实的WKWebView,在其他地方显示CAPortalLayer镜像。当你点击不同窗口时,协调器会将真实视图移至该处,原窗口则获得传送门。你根本无法分辨孰真孰假。理论上很简单,但实现无缝体验耗费了大量心血。每个macOS窗口都有独立的渲染上下文,且上下文ID异步更新,立即创建传送门会捕获过时ID导致无渲染。必须延迟创建传送门,但延迟又会产生视觉空隙。我通过私有CoreGraphics函数捕获GPU快照,将其置于传送门后方作为后备方案。另一难点是毫无文档可循。传送门极其善变,使用不当就会导致应用崩溃。我不得不查阅头文件并反编译二进制文件,才彻底弄清其运作机制以构建稳定功能。此前我从未开发过浏览器,仅仅是个用户。2022年开始使用Arc,记得当初申请邀请码、学习快捷键、慢慢适应。起初并不喜欢——对我来说它谷歌味太浓,当时我还在用Safari。但它逐渐吸引了我,等到它被Atlassian收购近乎弃置时,我已无法回归Safari。我尝试了所有替代品:Zen、SigmaOS、Helium。都不对味,我也不想要另一个Chromium分支。WebKit随系统提供,但只有渲染引擎。标签页、历史记录、书签、密码、扩展……所有功能都需要自行实现。于是,作为一个非常理性的人,我决定从零打造自己的Arc替代品。我做到了。Refrax采用Swift和Objective-C构建,无任何外部依赖。应用本身不到30MB。我现在打开了393个标签页,仅占用442MB内存;而Safari开150个标签页就已超过1GB。我已日常使用一个多月,几位朋友也在用。传送门镜像只是特性之一。这种“发掘苹果自用技术,创造他们未曾设想的功能”的理念贯穿整个浏览器:你可以用可调混合模式和透明度为玻璃窗着色;紧凑模式下的侧边栏会采样页面并匹配色彩;它还支持Firefox和Chrome扩展。公开测试版已发布。从官网下载后输入REFRAX-ALPHA-HACKERNEWS即可激活,无需注册账户。遥测数据仅含崩溃报告和日活用户心跳,再无其他。如果你发现漏洞——这是我独立开发的项目,你的每份报告我都会认真阅读。

  • macOS
  • 浏览器扩展
  • 软件即服务
Mar 22, 2026访问官网

AI 摘要

Refrax是一款从头构建的macOS浏览器,允许用户通过调用苹果私有API实现实时镜像,在同一网页上同时打开多个窗口。它提供可自定义窗口透明度、支持Chrome/Firefox扩展等功能。

适合谁

需要跨多个显示器查看和交互同一网页内容的高级用户, 寻求替代Arc浏览器、专注于WebKit的用户, 对探索未公开macOS功能以进行应用开发感兴趣的开发者

为什么值得关注

Refrax利用macOS私有的CAPortalLayer技术,使用户能够在多个窗口中同时显示和交互单个网页。

核心特性

  • 跨多个窗口复制标签页,实时更新
  • 利用未公开的CAPortalLayer实现镜像内容
  • 支持Firefox和Chrome扩展
  • 可自定义窗口色调,支持混合模式和透明度

使用场景

  • 开发者调试响应式网页应用时,可以在两个Refrax窗口中同时打开同一页面,以便在不同屏幕尺寸下并行查看和测试其行为,无需手动刷新或切换标签页。
  • 内容创作者管理社交媒体时,可以在一个Refrax窗口中保持实时动态或仪表盘开启,同时在另一个窗口中撰写帖子,确保工作时能随时看到实时更新。
  • 研究人员比较文档或网页的两个版本时,可以在不同的Refrax窗口中分别打开它们,实现即时视觉对比,并在两个实例间无缝同步滚动。