Show HN: A native macOS client for Hacker News, built with SwiftUI

Published: (February 20, 2026 at 09:02 AM EST)
3 min read

Source: Hacker News

Overview

A native macOS desktop client for Hacker News, built with SwiftUI and open‑sourced under the MIT license.

  • GitHub repository:
  • Download (signed & notarized DMG, macOS 14.0+):
  • Screenshots:

The app provides a macOS‑style experience with a sidebar for browsing stories, an integrated reader for articles, and comment threading—all in a single window.

Features

  • Split‑view layout – Stories in a left‑hand sidebar, articles and comments on the right using NavigationSplitView.
  • Built‑in ad blocking – A precompiled WKContentRuleList blocks 14 major ad networks (DoubleClick, Google Syndication, Criteo, Taboola, Outbrain, Amazon ads, etc.) at the WebKit layer. Toggleable in settings.
  • Pop‑up blocking – Suppresses window.open() calls; also toggleable.
  • Hacker News account login – Full authentication flow (login, account creation, password reset). Sessions are stored in the macOS Keychain, and cookies are injected into the WKWebView so you can upvote, comment, and submit stories while staying logged in.
  • Bookmarks – Save stories locally for offline access. Persisted with Codable serialization, searchable and filterable independently.
  • Search and filtering – Powered by the Algolia Hacker News API. Filter by content type (All, Ask, Show, Jobs, Comments), date range (Today, Past Week, Past Month, All Time), and sort by hot or recent.
  • Scroll progress indicator – A small orange bar at the top tracks reading progress via JavaScript‑to‑native messaging.
  • Auto‑updates – Implemented with Sparkle, using EdDSA‑signed updates served from GitHub Pages.
  • Dark mode – Respects system appearance via CSS and meta‑tag injection.

Technical Details

Architecture

  • Approximately 2,050 lines of Swift across 16 files.
  • Uses the modern @Observable macro (instead of the older ObservableObject/@Published pattern).
  • Structured concurrency with async/await and withThrowingTaskGroup for concurrent batch fetching.
  • Pure SwiftUI UI; the only AppKit bridge is a WKWebView wrapper via NSViewRepresentable.

Data Sources

  • Official Hacker News Firebase API – Retrieves individual items and user data.
  • Algolia Search API – Provides feeds, filtering, and full‑text search (date‑range filtering, pagination, etc.) that the Firebase API lacks.

CI/CD Pipeline

  • A single GitHub Actions workflow (~467 lines) handles the complete macOS distribution process:
    1. Build and archive the app.
    2. Code‑sign with a Developer ID.
    3. Notarize with Apple (includes a 5‑retry staple loop for ticket propagation delays).
    4. Create a custom DMG using AppleScript‑driven icon positioning.
    5. Sign and notarize the DMG.
    6. Generate an EdDSA Sparkle signature.
    7. Publish a GitHub Release.
    8. Deploy an updated appcast.xml to GitHub Pages.

Getting macOS code signing and notarization working in CI was the hardest part of the project. If you’re distributing a macOS app outside the App Store via GitHub Actions, feel free to ask questions—the workflow is fully open source.

Licensing

The entire project is released under the MIT License. Contributions via pull requests and issues are welcome.

Feedback & Future Ideas

I’m looking for feedback on features you’d like to see. Possible enhancements under consideration:

  • Keyboard‑driven navigation (e.g., j/k to move between stories).
  • Reader mode that strips articles down to plain text.
  • Notification support for replies to your comments.

You can join the discussion on Hacker News.

0 views
Back to Blog

Related posts

Read more »

UNIX99, a UNIX-like OS for the TI-99/4A

Article URL: https://forums.atariage.com/topic/380883-unix99-a-unix-like-os-for-the-ti-994a/ Comments URL: https://news.ycombinator.com/item?id=47127986 Points:...