{
  "id": 5187202,
  "title": "Four Weeks of Building Buildhorn for Shipaton 2026",
  "url": "https://urgent.news/2026/09/02/four-weeks-of-building-buildhorn-for-shipaton-2026",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-02T16:45:35.000Z",
  "source": {
    "name": "HackerNoon",
    "slug": "hackernoon",
    "url": "https://hackernoon.com/four-weeks-of-building-buildhorn-for-shipaton-2026?source=rss"
  },
  "original_language": "en",
  "account": "It has been four weeks since the work on the Shipaton app began, and the reporter shares an update on the progress. The app, called Buildhorn, aims to deliver CI build failures directly to users' phones. The reporter works with Kotlin Multiplatform (KMP), iOS App (SwiftUI), and Firebase Backend technologies.\n\nDuring the past week, the reporter focused on testing the RevenueCat paywall and integrating Firebase Crashlytics for crash reporting. These tasks require careful attention to detail and are crucial for ensuring the app's production-readiness.\n\nThe reporter made minimal code changes, mostly focusing on refactoring to minimize the chance of bugs slipping through or requiring last-minute tweaks. The reporter recommends this approach for any app's initial release to ensure the best possible outcome.\n\nIn this update, the reporter details the following changes:\n\n1. Configured Subscriptions in App Store Connect and imported them into RevenueCat.\n2. Updated TestFlight builds to use the RevenueCat Apple API key for end-to-end sandbox testing for subscriptions.\n3. Set up Firebase Crashlytics for crash reporting, including tracking when exceptions occur in the KMP layer.\n4. Cleaned up Koin DI modules for better logical grouping.\n\nThe reporter then delves deeper into each part of the application and how these changes contribute to the overall development of Buildhorn.",
  "summary": "Buildhorn’s fourth Shipaton update covers RevenueCat subscription testing, Firebase Crashlytics, and Koin cleanup before App Store submission.",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}