Ember: A Native and Accessible Hacker News Reader for iOS
Ember provides a native, accessible reading experience for Hacker News across Apple platforms
Ember is a native Hacker News reader built with SwiftUI for iPhone, iPad, and Mac. It focuses on providing a calm, fast experience where accessibility is treated as a core feature rather than an afterthought. The application is open-source and developed without any third-party dependencies, utilizing a single codebase that adapts its layout based on the device—ranging from a tab bar on iPhone to a three-pane layout on Mac and iPad.
Comprehensive Accessibility Integration
Ember implements accessibility as a first-class citizen, with a specific focus on color vision and system-level integration.
Non-reliance on Color
To ensure usability for color-blind users, Ember never uses color as the sole indicator of status. Every status change is accompanied by an icon, shape, or text. For example:
- Points and comment counts are paired with SF Symbols.
- Read states are indicated by a checkmark.
- Selection states are marked with rings and checkmarks.
System-Level Adaptations
The app includes a dedicated setting for color-blind friendly cues, which is automatically enabled if the system "Differentiate Without Color" setting is active. Other accessibility features include:
- VoiceOver Support: Story rows and controls use meaningful labels, hints, and custom actions to ensure each story is read as a coherent element.
- Dynamic Type: Typography and layouts, including comment indentation, scale according to system text size.
- Reduce Motion: Animations and loading shimmers are minimized when the system's Reduce Motion setting is enabled.
- Underlined Links: Links in comments can be underlined to remain identifiable without relying on color.
Smart Onboarding
Upon first launch, Ember detects system settings for VoiceOver, Reduce Motion, Differentiate Without Color, Bold Text, and large text. It automatically configures the app to match these settings and informs the user of the changes made.
Core Features and User Experience
Ember includes a full suite of Hacker News reading tools designed for efficiency and offline capability.
Feed and Content Management
- Feed Access: Users can switch between Top, New, Best, Ask HN, Show HN, and Jobs via a pinned filter bar.
- Native Comment Threads: Rather than using web views, Ember parses Hacker News HTML into native text with support for italics, block quotes, and code blocks. Threads are collapsible with depth indicators and load in a single request.
- Search: Full-text search across Hacker News is available, sortable by relevance or recency.
- Read Tracking: Visited stories are dimmed to help users track their progress.
Offline Capabilities and Persistence
- Saved Stories: Bookmarks are stored on-device and available offline.
- Disk Caching: Feeds, stories, and comment threads are cached to disk via a bounded JSON disk cache (
DiskCacheactor). The app automatically falls back to this cache when the network is unavailable.
Desktop Integration
Using Mac Catalyst, Ember provides a native three-pane layout for Mac and large iPads, featuring a source-list sidebar, a story list, and a discussion view side-by-side.
Technical Architecture
Ember is built using a pure SwiftUI stack targeting iOS 18.
Technology Stack
- UI Framework: SwiftUI with a
TabViewfor iPhone andNavigationSplitViewfor desktop/iPad. - State Management: The Observation framework (
@Observable) for view models and stores. - Concurrency:
async/awaitnetworking withTaskGroupfor concurrent feed page fetching. - Persistence:
UserDefaultsfor settings and read state, and JSON files for saved stories and disk caching. - Typography: The bundled Inter variable font for reading text and system fonts for metadata.
Data Sources
Ember utilizes two primary APIs:
- Hacker News Firebase API: Used for feeds, items, and user profiles.
- Algolia HN Search API: Used for search and fetching full comment trees in a single request.
Community Feedback and Development
Community discussion on Hacker News highlights the appreciation for the accessibility focus, particularly from color-blind developers.
"As a colour blind person (and iOS developer) I am thrilled anytime an app doesn’t rely on colour cues alone."
Users have expressed interest in the app's availability on the App Store and the addition of login and posting support. Some contributors have already begun submitting pull requests to implement HN login, comments, and replies to move the app beyond a read-only experience.