For indie developers and small studios

App Review Rescue

Your build is done, then App Review sends it back. My own apps have been rejected under 2.1(a), 2.1(b), 3.1.2, 4.2.1, 4.3(b) and 5.1.1(iv), and I worked out what Apple actually wanted each time. Start with the free decoder, or hand it to me.

Rejection Decoder

Live

Free

A plain-English lookup of the most common rejections: what the guideline means, the usual causes and a fix checklist.

  • 18 common rejections, by guideline number
  • Usual causes and a fix checklist for each
  • What to write in your Resolution Center reply
  • Real cases from my own apps
Open the decoder

Indie Ship Kit

Not on sale yet

£49 to £79

The checklists and templates I use before every submission, so the first review is the last one.

  • Pre-submission checklist mapped to guideline numbers
  • Subscription paywall checklist: price, period, renewal terms, Terms of Use (EULA) and Privacy links, restore
  • Review notes templates: demo account, where to find the in-app purchase, feature walkthrough
  • Resolution Center reply templates for the common rejections
  • App Privacy label worksheet: map each SDK to the data it collects
  • Permission pre-prompt copy and purpose strings that pass 5.1.1
  • StoreKit sandbox testing runbook, including the originalAppVersion trap
  • First in-app purchase submission walkthrough for App Store Connect
  • Screenshot spec sheet: sizes and what not to show
Ask for early access

Done-for-you rescue or launch

Taking enquiries

£300 to £1,500

I diagnose the rejection, fix what needs fixing, and handle the resubmission and reply. Fixed quote before any work starts.

  • Single rejection rescue, from £300
  • Full launch pass before first submission, up to £1,500
  • Code, metadata, paywall, privacy labels and review notes
  • Resolution Center reply written for you
  • I stay with it until the review result comes back
Send me your rejection

Rejections from my own apps

Not theory. These came back from App Review on apps I build and ship myself, and each one changed how I prepare a submission.

2.1(b)Strata

In-app purchase not visible to the reviewer: the sandbox originalAppVersion trap

Strata went from paid to free with optional map packs, and original buyers keep every pack. Version 1.1.0 came back under 2.1(b): the reviewer was "unable to get the confirmation of the purchase or to access the acquired item". The most likely cause: the legacy-buyer check read originalApplicationVersion as a number, and the sandbox reports "1.0" for everyone, so the reviewer looked like an original buyer. The fix only counts a purely numeric build of 3 or below, and never a first purchase after the free release. The resubmitted build went through.

See the fix checklist →
2.1(a)Crystal Index

In-app purchase "didn't show properly": empty paywall or a teaser in the way

Rejected twice for the same purchase path. First the paywall's product list was never wired in, so it showed "Subscriptions are not configured yet" on the reviewer's iPad. Then Upgrade still opened a blurred teaser with no prices before the real store. The fix sent Upgrade straight to the native subscription screen, and Crystal Index went live.

See the fix checklist →
3.1.2Ceres

Subscription terms missing: EULA link and renewal details

The rejection cited a missing Terms of Use link in the store metadata, and the paywall itself only had a Restore button. The fix added the renewal terms plus Terms of Use and Privacy Policy links on the paywall, and the link in the listing. The paywall is web UI inside a Capacitor shell, so the in-app part shipped without a new build.

See the fix checklist →
5.1.1(iv)PostReady

Pre-permission screen with a button labelled "Allow"

PostReady 1.0.0 was rejected for a custom message before the permission request with an "Allow" button. Those onboarding rows call the system camera, microphone and photos prompts directly, so the fix was relabelling each one "Continue".

See the fix checklist →
4.2.1PostReady

Seen as a thin AR app (ARKit), or an AR feature the reviewer couldn't reach

PostReady is a teleprompter and recording app. Its beauty retouch runs on MediaPipe everywhere and uses ARKit face tracking only on TrueDepth devices. The reviewer's iPad had no TrueDepth camera, and the rejection cited 4.2.1 and 2.5.1 alongside 5.1.1(iv). The listing now opens with what the app is, and the review notes say it isn't an AR app and when ARKit runs.

See the fix checklist →
4.3(b)Lunary

Saturated category: dating, flashlight, wallpaper, timers, fortune telling

The native iOS build of Lunary came back under 4.3(b) five times with the same boilerplate about astrology, horoscopes and fortune telling, and an App Review Board appeal was denied. A journaling-first dashboard and a category change didn't move it. The lesson: rearranging the app doesn't answer a category verdict; only changing what the reviewed binary is about can.

See the fix checklist →

How a rescue works

  1. 01

    Send the rejection

    Paste the full message from App Store Connect, the guideline number and a TestFlight or App Store link.

  2. 02

    Diagnosis and quote

    Within one working day you get what Apple is actually asking for, the fix plan and a fixed price.

  3. 03

    Fix and resubmit

    I make the changes in code, metadata or review notes, then write the reply to the reviewer.

  4. 04

    Through to a result

    I stay on it through the next review and any follow-up questions from Apple.

Apple makes the final decision, so nobody can promise an approval. What I can promise is a clear diagnosis, a fix plan, and a resubmission that answers what the reviewer asked. Not affiliated with Apple.

Rejected right now?

Send the full rejection message. You'll get a diagnosis and a fixed quote within one working day.