In the landscape
Quiet by design.
Lanai is one Bluesky client among many. The official client is a fine place to start — it’s shipping today, it covers the network surface, and most people will be happy there. This page is for the readers who keep wanting a slower version, and for anyone curious where Lanai sits in the landscape.
Where Lanai does something the official client doesn’t, the cell is set in accent type with a small note. Where the official client does something Lanai doesn’t — or doesn’t yet — we say so plainly, further down.
- v1.0 — firm for the first release
- v1.x — planned, not v1.0
- Not in scope — intentionally absent
- Partial — present but basic
Reading.
How the timeline reads on the page.
- Chronological Following feed Yes v1.0
- Algorithmic re-ranking of the feed Yes Not in scope
Lanai keeps Following chronological, by design. Variety shuffle (v1.x) reorders, never selects.
- Custom feeds Yes v1.0
- Reading Mode — single-post editorial view — v1.0
A surface where one post is set with editorial typography — hanging punctuation, optical alignment, generous leading, proper hyphenation.
- Editorial typesetting at the render layer — v1.0
Hanging punctuation, optical margin alignment, pull quotes on selection, justified text with proper hyphenation, widow control. Cleanup never touches the post record.
- Curly quotes, real em dashes, ellipses — v1.0
Display-only cleanup. Long-press any post to see the original character for character.
- Tabular numerals on timestamps — v1.0
Postcard Mode.
A slower way to read.
- A slow-browse alternative to the feed — v1.0
Postcard Mode renders each post as a tactile card — pick it up, turn it over, put it down.
- Three card formats (postcard, folded letter, Polaroid) — v1.0
Format is chosen deterministically by length and image content. Reduce Motion respected throughout.
- Long-press to flip card (engagement on the back) — v1.0
Compose.
What it feels like to write a post.
- Single-post composer Yes v1.0
- Thread builder Yes v1.0
Lanai's thread builder previews each post in Reading Mode before it ships.
- Alt-text input as a primary field Partial v1.0
Not buried in a sub-sheet. The keyboard arrives at the alt-text field by default for images.
- Post-post alt-text helper — v1.0
A gentle one-tap-to-add prompt after posting an image without a description. Never blocking.
- On-device alt-text suggestion — v1.0
Vision runs on your device. The suggestion appears; you accept, edit, or reject. Never auto-fills.
- Porch pause — opt-in delay before send — v1.0
A 3-second, 30-second, or 2-minute delay between hitting post and the post leaving. For the moments you'd rather read it back once.
- Reading-Mode preview from composer — v1.0
Long-press the post button to see how your draft will read in the editorial surface.
Curation.
How you control what shows up.
- Lists Yes v1.0
- Mute lists Yes v1.0
- Subscribe to public mute lists Yes v1.0
- Temporary mutes (24h / 7d / 30d) Partial v1.0
Explicit time-bucket mutes for the days that need them. Auto-expires.
- In-app browse-feeds directory Yes v1.0
- Labelers Yes v1.0
- Threadgates Yes v1.0
Image export.
Sharing a post as a picture.
- Share a post as a designed image — v1.0
Six templates — Magazine, Quiet, Late, Native, Miami, Sticker — plus a Postcard render that takes the metaphor into the share artifact.
- Editorial typography in the export — v1.0
Hanging punctuation, optical margin alignment, hair-space adjustments around em dashes, proper hyphenation. The post looks the same in someone else's Story as it does in your feed.
- Smart face-aware crop per image — v1.0
On-device focus analysis (face detection → saliency → 9-position alignment) decides per image whether to fill or fit.
Intelligence.
What the AI does, and what it never does.
- For-You algorithmic feed Yes Not in scope
Lanai uses on-device intelligence to deepen your relationship with content you chose — never to choose for you.
- On-device only AI (no cloud) — v1.0
Stricter than Apple's own apps. No Private Cloud Compute. If a feature can only run in the cloud, it doesn't ship.
- Opt-in by default for every AI feature — v1.0
A user who never enables a single AI feature has a fully functional Lanai. AI is never required.
- Quiet content overlay (additive, never silent filter) Partial v1.x
Lanai adds a tap-to-view friction for distressing imagery; it never silently filters. The user is the moderator of last resort.
- Inline translation Partial v1.x
Apple's on-device translation, invoked per post. Detects language; offers when it differs from yours. Never auto-translates.
- Topic clustering in saved posts — v1.x
Group your saves by inferred topic, on device, after the save event. Always one tap back to chronological.
Accessibility.
How Lanai is built for the readers other apps forgot.
- Full Dynamic Type (12 sizes through AX5) Yes v1.0
- AX1 as the design baseline (not the accommodation) — v1.0
Every layout is designed at large type first and verified at default. The inverse of how most apps do it.
- 44pt touch targets at default, 56pt at AX3+ Partial v1.0
- APCA Lc≥75 verified across body text — v1.0
Body text reaches Lc≥90 in High Contrast surfaces — better than WCAG 2.1 AA in the places it matters.
- Atkinson Hyperlegible toggle — v1.0
- OS-driven High Contrast surface Partial v1.0
Appears the moment your OS asks for Increased Contrast — not buried in a settings menu.
Platform.
Where Lanai lives, and where it doesn't.
- iPhone Yes v1.0
- iPad — three-column NavigationSplitView Partial v1.0
A proper iPad layout, not a phone window stretched to fit a tablet.
- Mac — native (not Catalyst, not web) — v1.0
A single multiplatform target builds for iOS, iPadOS, and macOS. ~80% of the code is identical.
- Mac split-view compose with live preview — v1.0
A separate compose window via Cmd-N, Reading Mode preview alongside, real menus, real Settings.
- Reeder-style J/K keyboard navigation — v1.0
- Tabbed Mac windows — v1.0
- Web client Yes Not in scope
- Android Yes Not in scope
- Vision Pro — v1.x
Privacy.
What the app does with your attention.
- No third-party analytics Partial v1.0
No tracking, no fingerprinting, no engagement metrics phoning home. The app respects your attention because it doesn't measure it.
- Local-first storage Partial v1.0
- On-device only AI (architectural) — v1.0
Enforced by the package layer — feature code can't import VisionKit or NaturalLanguage directly.
- No "you haven't posted in N days" notification Partial v1.0
No streaks. Ever. Lanai is for reading, and reading doesn't have a streak.
What Lanai doesn’t do
The honest gaps.
Naming what Lanai isn’t is part of saying what it is. These are the places where the official client is the better choice today — or always will be.
-
Web client.
Lanai is Apple-native by design. The platform isn't a runtime; it's a craft collaborator.
-
Android.
Same reason. Lanai's thesis — typography, on-device AI, Apple-platform integration — depends on a stack other platforms don't share.
-
Currently shipping.
Lanai is pre-alpha. Bluesky's official client is in the App Store today. v1.0 is the considered launch, not the minimum-viable release.
-
Live updates over the firehose.
Pull-to-refresh in v1.0; opt-in Jetstream live updates in v1.x. The WebSocket lifecycle work deserves its own focus.
-
A "For You" feed.
Not in scope. If you want algorithmic curation, the official client is the right choice — that's a feature, not a flaw.