Inspiration
The inspiration came from one of my other apps, Trendly, which is also for Apple developers to track their app sales, downloads, and subscriptions through the App Store Connect API. So, from that, I already had some experience with the App Store Connect API and knew what else the API had to offer. When I started working on the app, I had some goals/key features that I wanted to integrate:
- Ability to read and respond to customer reviews
- Access to reviews for app from other developers through the iTunes API
- Support for templates in multiple languages, since a lot of developers are at least bilingual (usually their native language + english)
- Translation of reviews, which luckily is super easy with iOS 18 / macOS Sequoia
- AI assistance in drafting responses to reviews
- Widgets
- Saving favorite reviews
What it Does
To get started, you’ll need to add your App Store Connect API Key. Once that’s done, Astra can load your apps and their reviews. You can translate reviews, share beautiful screenshots of them on social media, save them for later, and, of course, respond to them.
How I Built It
The app is built with SwiftUI as a multi-platform app (iOS & macOS). Astra communicates with the App Store Connect API using the App Store Connect Swift SDK.
Challenges I Ran Into
One of the major challenges involved loading app ratings. Unfortunately, the App Store Connect API doesn't provide any ratings. Instead, one can use the iTunes API, but this only gives an average and not the full distribution of the ratings (how many 1 stars, 2 stars…). However, just like the App Store website, you can get the distribution if you set the right headers in the fetch request.
Another problem is the iTunes API itself. This API, which doesn’t require any API key and thus can be used to fetch reviews of apps from other developers, is rate-limited. Unfortunately, it neither communicates this limit (usually in the header of the request) nor is it properly documented anywhere. On top of that, the API doesn’t return all reviews for an app. You have to make one request per country, which can quickly exhaust the rate limit.
Accomplishments I’m Proud Of
I’m proud that Astra can load the full ratings distribution—it took a lot of effort, but it’s a very useful feature.
I also like that you can add any app to Astra through a share extension, allowing you to quickly add apps directly from the app store or via any URL that points to the App Store page (shorten URLs).
The ability to save favorite reviews is important to me. Negative reviews, such as 1-star ratings for trivial reasons (“the app costs money”), can be frustrating. However, it’s essential to remember that many users appreciate the apps we build. By saving favorite reviews, I hope to help developers focus on positive feedback and maintain perspective.
I’m also excited about the Indie Apps feature. Astra includes a list of indie developers’ apps, and anyone can submit their app to be featured.
What I Learned
One of the key lessons I’ve learned is the importance of shipping quickly or at least sharing a TestFlight link early in development. Seeing others use the app and receiving feedback early on can significantly boost productivity.
What’s Next for Astra
In the future, I’d like to add notifications. However, I want to avoid server-side solutions to ensure API keys remain on the device or in the iCloud keychain. I plan to explore using Background Modes for this, but I need to work out how to track which reviews are new and which ones the user has already seen.
Other future features include a menu bar app, app clips, keyword extraction from reviews, variables in templates, and AI-generated summaries of reviews to identify common issues and strengths more easily.
Built With
- appstoreconnect
- appstoreconnect-swift-sdk
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.