A native macOS client for Hacker News, built with SwiftUI
A native macOS desktop client for Hacker News that goes beyond the website. Browse stories in a visual grid with article thumbnails, read articles side-by-side with comment threads, and use reader mode to focus on content. Built entirely with SwiftUI for a fast, native experience with full dark mode support, 15+ keyboard shortcuts, built-in ad blocking, and adjustable text scaling. Log in with your HN account to bookmark stories, hide items, and sync across sessions. Free and open-source.
Hey everyone! I built Hacker News for macOS because I wanted a better way to read HN than the browser tab I always had open.
The website is great for what it is, but I kept wanting things it doesn't offer — a visual grid with article thumbnails, side-by-side reading with comments, reader mode to strip away clutter, and proper keyboard shortcuts that don't conflict with my browser.
So I built it as a native SwiftUI app. Some highlights:
Browse smarter:
- Visual story grid with Open Graph thumbnails — scan headlines at a glance instead of a wall of text
- Filter by feed type (All, Ask HN, Show HN, Jobs), sort by Hot or Recent, and narrow by date range
- Full-text search powered by Algolia
Read better
- Split-pane view: article on the left, comments on the right — no more tab switching
- Built-in reader mode strips ads and clutter from articles
- Ad and pop-up blocking baked in
- Adjustable text scaling from 75% to 150%
Stay in flow
- 15+ keyboard shortcuts (Cmd+1/2/3 to switch views, Cmd+F to find, Cmd+Shift+R for reader mode)
- Find-in-page with match highlighting across articles and comments
- HN account login with bookmark sync and item hiding
- Automatic updates via Sparkle — always on the latest version
No compromises
- 100% native Swift + SwiftUI — not an Electron wrapper
- Dark mode, light mode, or match your system
- Free and open-source under MIT license
- No tracking, no analytics, no accounts required
I use this every day and wanted to share it with the community. Would love your feedback — feel free to open issues on GitHub!