Bluesky 会在截图中添加其标志。
How Bluesky draws its logo on screenshots

原始链接: https://timmarinin.net/2026/bluesky-screenshots/

作者发现,当用户在 Bluesky 应用中截图时,该应用会巧妙地将“关注”按钮替换为 Bluesky 的图标。出于对这种无需实时“切换”即可实现该效果的好奇,作者查阅了该应用的开源代码,发现了 `expo-privacy-sensitive` 程序包。 这一技巧利用了 iOS 的一项特定行为:通过将内容置于启用了 `isSecureTextEntry` 的 `UITextField` 中,开发者可以触发系统在截图时对该区域进行遮盖。当系统屏蔽掉这个受保护的字段时,底层的 Bluesky 图标便会显示出来。虽然这种技术在 Signal 和 Telegram 等应用中常被用于保护隐私以防止敏感数据泄露,但 Bluesky 将其用于品牌推广的做法引发了用户的争议。尽管存在争议,但作者认为这一实现方式在技术上令人印象深刻,并且由于它利用的是标准的、有据可查的 iOS 安全 API,预计该方法将持续有效。

这场讨论围绕 Bluesky 使用的一种“增长黑客”手段展开:该应用将一个 Logo 放置在 UI 元素后方,当用户截图时,操作系统会自动隐藏该元素,从而起到给分享的图片加水印的效果。虽然一些用户认为这是一种无伤大雅的巧妙设计,但它引发了关于平台敌意和用户自主权的广泛争议。 批评者认为,允许应用操纵、屏蔽或检测截图开创了一个危险的先例,削弱了用户对其自身设备的所有权。评论者指出了许多“安全剧场”(security theater)的例子,例如银行或密码管理应用屏蔽截图,或者应用强制用户使用其内置的“分享”流程——这些做法阻碍了正常的故障排除、存档或记录行为。 许多参与者表达了对现代操作系统将应用开发者的偏好置于用户截屏权利之上的不满。虽然有人认为这些功能对于安全或内容隐私是必要的,但普遍的观点是,这些能力经常被滥用于强制执行 DRM、提高用户粘性或阻止用户保存记录。许多人总结认为,除非用户能够选择退出这些系统级的限制,否则他们的设备就依然只是“口袋电脑”,其最终服务的是企业利益,而非设备的所有者。
相关文章

原文

Sometimes I take a screenshot of a post I like, either to send it to friends/meme channel or to save a “durable” copy. Like this one (I’ve cropped out the rest of the interface):

A screenshot of Bluesky post by @eroston.bsky.social, the important part is that Bluesky logo is visible in the top right corner
Original, if you want to reskeet it

I noticed the Bluesky logo in the right corner and thought that it was weird that the logo doesn’t bother me when I use the app. Then I looked at the post in the app again—logo wasn’t there, replaced by the “Follow” button.

I remembered that a few apps hide their logo where the iPhone notch is, so that it doesn’t stick out, unless you take a screenshot. But here the logo is placed in the open, so how do they do it?

I tried to take another screenshot, this time mid-switching to the other app:

Screenshot of zoomed out version of Bluesky app mid-switching, Follow button is visible
The “Follow” button is visible when I take the screenshot mid-switch.

Did they somehow set up a listener for two buttons I’m pressing to take a screenshot and do a switcheroo at the last moment? I’m not an iOS developer, so I’m not sure what’s possible and what is not over there.

At this point I was mildly intrigued. Thankfully, I remembered that Bluesky app is open source (or at least the code is available to look at).

The answer was in the file literally called GrowthHack.tsx , introduced in January 2026 by mozzius. But it merely used a dependency, so to understand I looked into package expo-privacy-sensitive, also by them.

The package creates UITextField with isSecureTextEntry property set to true and renders the actual content (the button) into that field’s .layer. When I take the screenshot, iOS hides this UITextField by blanking the layer, allowing the Bluesky logo to flutter its wings through (it was here the whooole time). For other platforms it simply renders content as-is, without masking.

Why doesn’t it work when I switch between the apps? I suppose that iOS takes a snapshot itself at the start of the gesture (without triggering blanking), and when I do a screenshot, there is no live UITextField instance to react to that, only the inert snapshot. But once again, I’m not an iOS developer.

Nifty trick or an abuse of API meant for privacy? The people in the thread adding the behavior mostly didn’t like it, before the thread got locked. I think it’s cute.

I googled a bit, and the trick is well-known. Telegram implemented similar thing for its "secret" chats, as did Signal, so I don’t expect it to be patched by Apple any time soon.

联系我们 contact @ memedata.com