After months of building, my app hit 80 ratings. Here is what actually worked to get reviews without being annoying
▲ 107 r/iOSProgramming+1 crossposts

After months of building, my app hit 80 ratings. Here is what actually worked to get reviews without being annoying

Hey everyone!

One of my most popular apps just crossed 80 ratings on the App Store with a 4.8 average. Small win, but I'm really excited to hit the 100 milestone soon!

For context, it's a educational app.

Wanted to share what actually helped me get reviews, because the first 20 were the hardest.

What worked:

  • Stopped asking for a review on launch. Now I ask only after the user completes a key action 3 times and is clearly having a good experience.
  • Added a soft pre-prompt: "Enjoying the app?" -> Yes -> then I trigger the native Apple rating prompt. If No -> I send them to feedback form.
  • Replying to every single review in App Store Connect. It really helps. People update 3-star to 5-star after that.

What didn't work:

  • Generic pop-up on first session. 0% conversion and annoying.
  • Asking friends for 5 stars.

I'm now focused on getting to 100. If you have a minute, I'd love honest feedback on what would make you leave a review for an app.

Also curious is there any differences for an app from ASO prospective once it hit 100 ratings?

u/Successful_Stop_3751 — 7 days ago

ASO and ASA still rocks for me

That's how my app business subscription plans doing so far. Just couple things which I've improved for this year:

  • Localize app screenshots and metadata to more languages:
  • Translate content of my apps to these languages
  • Pay a bit $ for app marketing on AppStore

Looking forward to see how it will be for second half of the year

u/Successful_Stop_3751 — 9 days ago

Managing App Store metadata in 10+ languages was a nightmare. So I made a native Mac app to automate it: StoreSync

As an indie developer managing apps in multiple localizations, StoreSync: Metadata Manager has completely transformed my workflow. Dealing with the App Store Connect web interface was always slow, clunky, and tedious. StoreSync solves two massive problems at once:

  • Metadata management
  • ASO optimization.

If you manage more than 2-3 localizations or submit regular updates, this app is an absolute must-have. Worth every penny!

Download from Mac App Store

u/Successful_Stop_3751 — 9 days ago

[App Saturday] AppScreen Studio v4.0 – Direct App Store Connect Uploads, Bulk AI Translations & Screenshot Import

Hey everyone! 👋

If you’ve ever had to prepare screenshots for an app translated into 10+ languages across multiple device sizes, you know how painful, tedious, and time-consuming the process is with standard tools.

Over the last few months, I’ve been working on a major overhaul of AppScreen Studio (a native macOS app designed to build, frame, and localize App Store screenshots). Today, I'm excited to share version 4.0 (and 4.0.1)!

The goal of this update was to solve the #1 bottleneck developers face: manual uploading and tedious localization management.


Key Highlights

1. Direct App Store Connect Sync

You can now connect your App Store Connect account via API Key (.p8) and push your rendered screenshots directly to Media Manager in 1 click.

  • Selective Sync: Choose specific languages, display sizes, or individual panels to upload.
  • Smart Replace: Option to automatically clear old screenshots from App Store Connect slots before uploading.
  • Instead of manually adding languages one-by-one from dropdowns, you can now paste a comma-separated list of locale codes (e.g., en-US, ar-SA, de-DE, es-ES, fr-FR, ja, zh-Hans). The app automatically creates localizations, translates all text layers, and provides real-time progress tracking.

2. Bulk App Store Import

Redesigning an existing app or updating old listings? You can now inspect live or draft App Store Connect builds and bulk-import existing screenshots directly onto your workspace panels in seconds.

3. Per-Locale Layer Isolation & Smarter Localization

  • Isolated Layers: Layers and text added in a specific target language stay strictly isolated to that locale without leaking into your Original (Base) layout or other translations.
  • 15+ New Languages: Expanded translation support to help you launch globally.

4. Panel Reordering

Rearrange screenshot panels on the canvas using simple arrow controls ( / ). You can also choose whether reordering in Original (Base) automatically updates panel order across all other display sizes and languages.

New "Our Apps" Section in Settings

We also added a new "Our Apps" section in Settings featuring our developer tools:

  • StoreSync: Metadata & ASO Manager
  • CoreData Studio: SQLite/SwiftData Debugger & Inspector
  • PriceLocus: Global App Store Price Localization & PPP Calculator

Tech Stack

  • Platform & OS: macOS (macOS 13.0+)
  • Language: Swift 5 / Swift 6
  • UI Framework: SwiftUI + AppKit (NSViewRepresentable, NSBitmapImageRep, NSFontManager, NSTextView)
  • Database & Persistence: Core Data (NSPersistentContainer, manual migration mapping, NSOrderedSet relationships)
  • Networking & Security: URLSession, CryptoKit (ES256 JWT generation for App Store Connect API authentication)
  • In-App Purchases: StoreKit 2 (Transaction, Product.SubscriptionInfo)
  • Localization & External APIs: Google Cloud Translation API (for automated screenshot text translation)

Development Challenge & Solution

The Challenge: Direct Upload & Sync to App Store Connect Media Manager. Uploading screenshot assets via the App Store Connect REST API is a multi-step protocol:

  1. Generating a signed ES256 JWT using CryptoKit (P256 private keys).
  2. Reserving a screenshot slot in the target appScreenshotSet.
  3. Calculating byte offsets and uploading binary image chunks to Apple's BlobStore.
  4. Computing an MD5 checksum and issuing a commit PATCH.

Doing this in batch for 40+ localizations and 5+ display sizes (100+ high-res @3x images) caused massive RAM spikes and UI freezes due to simultaneous rendering of heavy bitmaps.

The Solution: I refactored the rendering and uploading engine to use Task.detached worker threads wrapped in explicit autoreleasepool blocks. Images are rendered on-the-fly, converted to compressed PNG data, uploaded chunk-by-chunk via URLSession.upload, and immediately released from memory. Progress is reported back to the @MainActor through a dedicated LocalExportManager and MediaManagerSync state machine, keeping RAM usage below 250 MB and the UI running at a smooth 60 FPS during long batch uploads.


AI Disclosure

  • Development: AI-assisted. The core app architecture, Core Data persistence layer, SwiftUI views, and App Store Connect API client were hand-coded. LLM AI tools (Claude / ChatGPT) were used as an assistant for debugging complex AppKit/SwiftUI bridging edge cases, optimizing Core Data migration models, and drafting localized app strings.
  • In-App Features: The app integrates the Google Cloud Translation API to provide AI-assisted batch translation of user screenshot copy across 40+ languages.

Quick Links

Happy releasing! 🎉

u/Successful_Stop_3751 — 11 days ago

Best rodent bait options safe for birds/other wildlife? Using bait stations

Hey everyone,

Dealing with a mouse problem in/around my house and want to handle it responsibly. I'm planning to use tamper-resistant bait stations - the plastic locking boxes - to keep non-target animals out.
But I'm stuck on what bait to actually put inside.
My priority is avoiding secondary poisoning. I have a lot of owls, hawks, and other wildlife in the area, and the last thing I want is for a poisoned mouse to harm birds of prey or neighborhood cats/dogs if they catch it.

  1. What active ingredients are considered lowest risk for secondary poisoning? I've heard about first-gen vs second-gen anticoagulants, and cholecalciferol. Which do pros actually recommend for this situation?
  2. Are there non-anticoagulant baits that work well in stations?
  3. Any specific brand/formulation you'd suggest for residential use?

Traps alone aren't cutting it with the numbers I'm seeing, so I need something for the bait stations. But I want to do this the right way.

Thanks for any advice.

reddit.com
u/Successful_Stop_3751 — 3 months ago