Free sample · The 4.3 Survival Report ($19)

The Experiment: Rate, Not Fingerprints

This is one chapter from the full report. If you've been hit by guideline 4.3(a)/(b) and the nine-question survey, the rest of the report covers the survey answers, appeal templates, and recovery timeline in the same level of detail.

Sample chapter — abridged from the full report. All data points intact.

The experiment: rate, not fingerprints

This is the most valuable section of the report, and the third row deserves to be read twice. During the incident window, three queues of submissions moved through review on the same account, at the same time, from the same person, with the same tooling:

QueueWindowOutcomeWhat it controls for
15 first-time submissions May – Sep, before the flag All passed clean Same shared scaffolding, same localization pipeline, same toolchain — before the rate tripwire
Version updates to 2 flagship apps During the flag Passed, one by one Same account, same templates, flag active — updates still flowed
1 brand-new app, unrelated category During the flag 4.3 + 4.2.6 + nine questions anyway 2,030 lines of code (largest in the account), zero code shared with the affected family, completely different category

Read row three again. A brand-new app with no code similarity to anything in the account — different category, biggest codebase, clean design — still got the batch rejection and the survey. Whatever the rejection text says about "similar apps," the trigger that selects who gets surveyed is account-level submission rate. Code inspection is the aftermath, not the trigger.

Corollary that saves you months of wrong work: refactoring your code to be "more different" does nothing for an active 4.3 flag. What changes outcomes during a flag is (1) time, (2) reply quality in Resolution Center, (3) not adding new submissions to the pile. Differentiation matters for never triggering it again — that's the storefront portrait, §"What the portrait looked like".

What "account-level" actually means

When a batch lands with minute-identical timestamps, you are not dealing with independent reviewers. Three things change on an account-level flag:

  1. Every new submission gets manual screening — including updates to previously-approved apps. Expect slower review on everything.
  2. Old submissions can be held hostage — two apps from Sep 19 sat in WAITING_FOR_REVIEW for a month while the flag burned. They were never explicitly rejected. They were just... held.
  3. The survey is the exit interview. The nine questions are not information gathering for its own sake — your answers get compared against each other across apps, and against what the reviewer can see on the storefront. Consistency is scored.

The nine questions: how to survive them

The 4.3(a) batch rejection attaches a survey. The questions ask about shared code, shared personnel, marketing relationships between apps, and why the apps exist. The temptation is to lawyer up and minimize everything. The failure mode is different: a wave of near-identical replies landing in Resolution Center is itself proof of a template operation — which is exactly what you're being accused of.

Question clusterSurvival play
Q1–Q3 · What does the app do / who is it forConcrete mechanisms, not marketing. "User taps X, system does Y, stored in Z." One screenshot reference per claim.
Q4 · Did you develop it yourself?Never lie here. Approval decisions get revisited during account investigations; a discovered lie converts a recoverable 4.3 into a termination risk. Independent developer: say so plainly.
Q7 · Code shared across apps?State exactly what is shared (a 210-line localization helper, standard scaffolding) and what is not (core logic per app). Precision reads as honesty; minimization reads as evasion.
Q8 · Third parties involved?Same rule as Q4. "No agency. Built by one person."
Q9 · Cross-promotion between apps?Disclose what exists, even if it's unflattering. An undisclosed mechanism found later costs more than the disclosure.

The rhythm that worked

  1. One app per 48 hours. Not five in a day. Batch-sending identical replies at machine speed is machine-speed evidence against you.
  2. Best app goes first. A clean approval on your strongest app raises the odds for every thread behind it — and gives you a citable precedent: "{App} passed review on {date}; the shared components in question are identical."
  3. Draft, read end-to-end, then send. Never send a first draft. Once it's in the thread, it's evidence.
  4. End every reply with one sentence: "If anything still reads as spam, please identify the specific triggering element." It converts silence into actionable signal, and reviewers do answer it.
  5. Freeze all new submissions while any 4.3 is unresolved. Every new submission during a flag is another file in the case file.
Full copy-paste reply skeletons for all twelve rejection types — including the nine questions question-by-question — are Field Guide #02 (12 Rejection Reply Templates).

The second strike (the section nobody else can write)

The first recovery worked. Apps cleared, the flag lifted, revenue resumed. And then — this is the confession part — the account went right back to burst submissions. Six more apps, fast, in mid-October.

The second strike was worse in every way that matters:

The meta-lesson, stated once: the dangerous phase is not the strike. It's the two weeks after recovery, when the pipeline is full, the muscle memory is hot, and the account feels immune because it just survived. Write the rate budget down during the incident, while the pain is load-bearing.

Extended Review = yellow card

Easy to miss: some apps got the older-format 4.3(a) rejection with this warning attached — resubmitting similar apps may extend review times, and repeated violations may result in account termination.

Translation: that app (and the account) is on a watchlist. The play that worked: do not rush a resubmit. Fix the real underlying issue (in this case: document the Accessibility API usage rather than remove it), write the fix into the Resolution Center thread so there's a paper trail, and let the cooldown run before touching the app again. Apps with 2+ rejections leave the pipeline world and enter the hand-crafted world — one at a time, with context in every reply.

The rate budget: rules with bodies on them

RuleWhat it means
5 / 8Rolling 14-day new-app submissions ≤ 5; rolling 30-day ≤ 8. Check your submission log before every new-app upload. Exceeding it isn't a risk — it's a coin flip with your account as the stake.
No name familiesZero rhyming-suffix or shared-pattern naming across a portfolio. Test: if a reviewer lines up your app names in search results, what conclusion do they reach in five seconds?
Pages are fingerprintsEvery support URL gets its own h1, its own structure, its own copy. A shared template across 24 apps is the loudest possible factory signal — and it's visible without installing anything.
Zero trademarksTitle, subtitle, keywords: no competitor names, no platform-adjacent brands. 4.1(c) Copycats hits updates to old apps too — a routine update got pulled back for a keyword added months earlier.
48h survey rhythmOne reply per 48h during batch rejections, strongest app first, freeze everything else until it clears.
Freeze on flagAny unresolved 4.3 on the account = no new submissions of any kind. Updates to clean apps are the only gray zone — treat even those as slow.
Read the rest of the playbook The full 4.3 Survival Report ($19) includes: the nine-question survey answer playbook currently being executed across the frozen apps (honest-first, one app per 48 hours — no batch replies), the appeal-letter templates for 4.3(a) vs 4.3(b), the relapse-prevention pacing calendar, and what Apple's resolution center actually responds to. Status updates land here as results come in — zero so far, documented in real time. Get the full report →