App store pain

—

by

in
Line-drawn cartoon of a long-nosed man at a desk holding a wide fan of identical blank rectangles, with more of the same rectangles stacked on the floor and chair around him.

Our app was submitted to Google and Apple on 12 October. It is still in review. I refresh it forty times a day; it does not move.

Other people’s problems

Drift was rejected five times in eight weeks, each time with the same unannotated line. Halide, a camera app, was rejected for not explaining why a camera needs the camera; Apple later rang to say it was a mistake. Just Player was suspended from Play when automation read its .ASS subtitle support as something else. Nextcloud’s Files app, 800,000+ users, was rejected over All files access, a feature it had shipped since 2016.

Apple says at least 50% of submissions are reviewed in under 24 hours, 90% in under 48. Google says some accounts wait up to seven days, longer in exceptional cases. Apple rejected almost a million first-time submissions in 2020. New personal Google accounts must first run a closed test with 12 testers opted in continuously for 14 days.

The paperwork

Both stores require a privacy policy; Google requires one even when the app collects nothing. Does anyone read it? Bakos and colleagues tracked 48,154 monthly visitors across 90 software companies and found that one or two in every thousand open the licence agreement, most reading a fragment. The policy exists so a form can hold a link.

Permissions are the same shape. Apple wants a purpose string in Info.plist that a reviewer can rule insufficient. Google wants a declaration for sensitive access. Neither asks whether the code works.

The artwork

Apple wants one to ten screenshots per device size, including a Dynamic Island iPhone and, if iPadOS is supported, a 13-inch iPad, at 1179×2556 and 2064×2752. Google wants up to eight per device type, across up to seven types. None of it can be generated from one design.

Apple wants one square 1024×1024 icon, unrounded, because the system masks it, in six appearances. Android wants 108×108dp layers with a 66dp safe zone, 18dp per side reserved for the manufacturer’s mask. Play wants a 512×512.

The cutouts: iOS safe areas and the Dynamic Island, Android display cutout modes, with targetSdk 35 on Android 15 laying content into the cutout by default. Tested on hardware I do not own.

Three jobs that are not apps:

  • A screenshot set for every device type I have never held.
  • Six icon appearances I cannot preview.
  • A privacy policy that took forty minutes and will be opened by almost nobody.

The hair is going, steadily, in the order checklists arrive.

The app is still in review. I cannot see the queue, so I refresh the page. It is the only part I control.

Line-drawn cartoon of a bald long-nosed man with one tuft of hair standing on end, staring up at an enormous blank phone-shaped monolith on a bare floor.