<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh" -->

---
title: How Bluesky draws its logo on screenshots | daily.dev
description: An investigation into how the Bluesky iOS app makes its logo appear only in screenshots, not in the live app. The trick uses a UITextField with...
canonical: https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How Bluesky draws its logo on screenshots | daily.dev
og:description: An investigation into how the Bluesky iOS app makes its logo appear only in screenshots, not in the live app. The trick uses a UITextField with...
og:url: https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh
og:image: https://api.daily.dev/og/posts/qAsVzPQdH.png
og:image:alt: How Bluesky draws its logo on screenshots
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How Bluesky draws its logo on screenshots

**[Lobsters](https://daily.dev/sources/lobsters)** · 3 min read · 0 upvotes · 0 comments

## Summary

An investigation into how the Bluesky iOS app makes its logo appear only in screenshots, not in the live app. The trick uses a UITextField with isSecureTextEntry set to true, rendering the actual button content into the field's layer so iOS blanks it during screen switching but the logo 'leaks through' when a real screenshot is taken. The technique originates from an expo-privacy-sensitive package by developer mozzius, and similar approaches are used by Telegram and Signal for their secret/disappearing chat screenshot protections.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://timmarinin.net/2026/bluesky-screenshots>

## Questions this post answers

### How does the Bluesky iOS app make its logo appear only in screenshots but not in the live app?

It renders the logo button's content into the .layer of a UITextField with isSecureTextEntry set to true. iOS automatically blanks secure text fields during app-switching snapshots, but when an actual screenshot is captured the layer briefly renders its real content, revealing the logo. The code lives in GrowthHack.tsx, added by developer mozzius using a package called expo-privacy-sensitive. On non-iOS platforms the content just renders normally without masking.

_Developers curious about clever UIKit privacy hacks can dig into similar iOS internals writeups on daily.dev._

### Why does a UITextField secure entry screenshot trick fail when switching between apps on iOS instead of taking a screenshot?

Switching apps triggers a snapshot taken by iOS itself at the start of the gesture without invoking the secure field's blanking behavior, so the rendered content stays visible in that snapshot. A real screenshot instead relies on a live UITextField instance reacting and blanking its layer, which does not happen with the inert app-switcher snapshot, letting hidden content differ between the two capture types.

_Anyone debugging platform-specific screenshot behavior can compare notes on iOS quirks like this via daily.dev._

### Do other messaging apps like Telegram or Signal use the same UITextField trick to block or alter screenshots on iOS?

Yes, both Telegram and Signal implement similar techniques for their secret or disappearing chats on iOS, using secure text field layers to control what appears in screenshots versus the live interface. The approach is a known workaround exploiting a privacy API meant for secure text entry rather than screenshot control, and it has not been patched by Apple.

_Teams weighing screenshot-security approaches for chat features can track prior art like this on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 393 comments across lobsters, hackernews (as of 2026-08-18).

**TL;DR:** Most commenters find the screenshot-hiding trick clever from an engineering standpoint but object strongly to the underlying platform capability it exploits, arguing users should control what their own screenshots capture rather than apps or the OS deciding for them.

**Sentiment:** 10% positive · 25% mixed · 65% skeptical

**The case for**

- A few see the specific Bluesky implementation as tasteful compared to intrusive alternatives like forced share popups.
- Some argue the underlying screenshot-exclusion mechanism has legitimate uses, like hiding password manager fields or protecting sensitive chat content.
- Several note this can deter casual leaking of confidential info (e.g. disappearing messages, corporate data) even if not foolproof.

**The pushback**

- Many feel apps/OS should never alter or interfere with what a screenshot actually captures, calling it user-hostile.
- Several cite frustrating real-world examples (Amazon Pharmacy blanking prescriptions, Spotify/ChatGPT forcing share popups, banking apps blocking screenshots) as evidence this pattern is routinely abused.
- Some argue there's no real security benefit since screenshots can trivially be bypassed with another camera or screen recording.
- Multiple commenters want an OS-level permission or toggle so users, not developers, decide whether sensitive content is hidden.

**By community**

- hackernews (heated): Discussion splits between people impressed by the clever technique and a larger, more vocal group angry that apps/OS can manipulate screenshot contents at all, citing many real-world annoyances.

**Hottest debate:** Whether apps and the OS should ever be allowed to alter or hide content from a user's own screenshot versus this being a reasonable, sometimes tasteful, privacy feature.

**Open questions**

- Should users get an OS-level opt-out or 'include secrets' control when taking screenshots?
- Why does iOS notify apps after a screenshot is taken at all, and what legitimate purposes does that serve beyond enabling share prompts?
- Is there a way to distinguish tasteful uses (hiding a follow button) from abusive ones (blocking prescription info or forcing share sheets)?

**Highlights**

> No, it’s not a reasonable feature. If I take a screenshot, I want the image to include what is displayed on my fucking screen, period. What is so difficult about this?
> — [Analemma\_ on hackernews](https://news.ycombinator.com/item?id=49338828)

> Why is this feature bad? As someone who develops apps for confidential conversations, making it harder for people to screenshot the confidential stuff is a feature the sending party wants, that is why they send in your app as opposed to others. It doesn’t make things impossible, just hard enough that 95% of people won’t bother to take a copy. Same for example with disappearing audio messages on whatsapp What I don’t like is the app being informed that I took a screenshot. The OS can hide things in screenshots without this.
> — [EGreg on hackernews · 4 comments](https://news.ycombinator.com/item?id=49340259)

> Spotify uses this and it annoys me all the time. If you screenshot what you are listening to, after the screenshot is taken spotify will open a full-screen popup to "share" the song you are listening to. This is quite dumb, especially since if you wanted to share a song via the screenshot, you can do so in the OS-level screenshot UI, and then you would close it and see Spotify's own similar version of the same UI. Spotify just really wants you to use their own share button so that they can track you.
> — [snailmailman on hackernews · 2 comments](https://news.ycombinator.com/item?id=49339954)

> Today I noticed that Amazon Pharmacy decided to blank out my prescription info that I was screenshotting to send to my doctor. WTF.
> — [umeshunni on hackernews · 4 comments](https://news.ycombinator.com/item?id=49338746)

> This viewpoint represents such a dramatic disconnect between the desires of the mainstream user and the highly technical user who views this as malware. It’s very obvious why this feature of the OS is useful and desired by many stakeholders. People who send each other risqué photos want them to disappear and not be screenshotted. Your employee doesn’t want you to screenshot your company confidential info or save it to your personal device. A password manager company is desperately trying to save your uncle from his own bad habits. We can lament the lack of control of our devices but every consumer device has to save people from themselves at some point and draw a line somewhere. Perhaps we can’t assume that Uncle Larry screenshotting his password manager will be a minor consequence and a valuable learning experience. Your microwave won’t let you turn it on with the door open. Your super modern push button transmission car won’t let you open the door with the car in drive. The GFCI outlet in your kitchen won’t let you shock yourself. In your opinion that’s malware, in my opinion it’s a pretty useful feature. It’s totally fine that you feel this way and I am not saying you shouldn’t, but it’s worth considering the idea that a lot of people find this feature helpful.
> — [Grombobulous on hackernews · 1 comments](https://news.ycombinator.com/item?id=49340028)

**Source threads**

- [lobsters](https://lobste.rs/s/05ocit/how_bluesky_draws_its_logo_on_screenshots) · 1 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=49338459) · 227 points · 393 comments

## Similar posts on daily.dev

- [Bluesky rolls out cashtags and LIVE badges amid a boost in app installs](https://daily.dev/posts/bluesky-rolls-out-cashtags-and-live-badges-amid-a-boost-in-app-installs-hcm66mmmq) · TechCrunch · 0 upvotes · 0 comments
- [All Blur: Instantly blur your screen for privacy or content creation](https://daily.dev/posts/all-blur-instantly-blur-your-screen-for-privacy-or-content-creation-cldwiepic) · Product Hunt · 12 upvotes · 1 comments
- [Create your keyboard for App theme: Customizing Keyboard in SwiftUI](https://daily.dev/posts/create-your-keyboard-for-app-theme-customizing-keyboard-in-swiftui-9x2zf2yf5) · Medium · 0 upvotes · 0 comments
- [John Graham-Cumming's blog: If you care about security you might want to move the iPhone Camera app](https://daily.dev/posts/john-graham-cumming-s-blog-if-you-care-about-security-you-might-want-to-move-the-iphone-camera-app-s2yasviwg) · Hacker News · 0 upvotes · 0 comments

---

Tags: [#ios](https://daily.dev/tags/ios), [#privacy](https://daily.dev/tags/privacy), [#reverse-engineering](https://daily.dev/tags/reverse-engineering)

[View this post on daily.dev](https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How Bluesky draws its logo on screenshots","url":"https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh"},"datePublished":"2026-08-18T01:58:46.701Z","dateModified":"2026-08-18T04:30:06.632Z","description":"An investigation into how the Bluesky iOS app makes its logo appear only in screenshots, not in the live app. The trick uses a UITextField with...","image":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","thumbnailUrl":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ios,privacy,reverse-engineering","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"How Bluesky draws its logo on screenshots"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-bluesky-draws-its-logo-on-screenshots-qasvzpqdh#faq","mainEntity":[{"@type":"Question","name":"How does the Bluesky iOS app make its logo appear only in screenshots but not in the live app?","acceptedAnswer":{"@type":"Answer","text":"It renders the logo button's content into the .layer of a UITextField with isSecureTextEntry set to true. iOS automatically blanks secure text fields during app-switching snapshots, but when an actual screenshot is captured the layer briefly renders its real content, revealing the logo. The code lives in GrowthHack.tsx, added by developer mozzius using a package called expo-privacy-sensitive. On non-iOS platforms the content just renders normally without masking. Developers curious about clever UIKit privacy hacks can dig into similar iOS internals writeups on daily.dev."}},{"@type":"Question","name":"Why does a UITextField secure entry screenshot trick fail when switching between apps on iOS instead of taking a screenshot?","acceptedAnswer":{"@type":"Answer","text":"Switching apps triggers a snapshot taken by iOS itself at the start of the gesture without invoking the secure field's blanking behavior, so the rendered content stays visible in that snapshot. A real screenshot instead relies on a live UITextField instance reacting and blanking its layer, which does not happen with the inert app-switcher snapshot, letting hidden content differ between the two capture types. Anyone debugging platform-specific screenshot behavior can compare notes on iOS quirks like this via daily.dev."}},{"@type":"Question","name":"Do other messaging apps like Telegram or Signal use the same UITextField trick to block or alter screenshots on iOS?","acceptedAnswer":{"@type":"Answer","text":"Yes, both Telegram and Signal implement similar techniques for their secret or disappearing chats on iOS, using secure text field layers to control what appears in screenshots versus the live interface. The approach is a known workaround exploiting a privacy API meant for secure text entry rather than screenshot control, and it has not been patched by Apple. Teams weighing screenshot-security approaches for chat features can track prior art like this on daily.dev."}}]}
```

