Urgent.News

What's breaking now, across thousands of outlets.

Tech

Every rejection becomes a check

Every app we ship gets reviewed by someone else's QA. Two someones, actually — Apple and Google — each with its own rulebook, and each rulebook comes in two parts: the rules as written, and the rules as applied. The written part you can read. The applied part you learn the way case law is learned: one decision at a time. And here's the constraint that shapes everything downstream: you can't run…

Every app submitted to Apple or Google is subjected to a review process by two separate entities, each with their own set of rules. There is no way to run the review suite locally, making it impossible to know beforehand what the review will say. This leads to a discipline of turning every lesson learned from the rejection pattern or rule change into an explicit check before submitting the app to the store.

One common rejection is receiving an app that appears unfinished or has empty screens. To combat this, the product team created checklists that ensure the app is not submitted with any empty sections. What was once just advice has now become a mandatory feature that checks the app's readiness before submission. The rule is simple: if the advice can be verified mechanically, it should no longer be just advice.

In the second family of checks, the review not only looks at what the app does, but also cross-references it with what the app declares. Privacy declarations, permission requests, and data-safety forms are all claims that must match the binary of the app. If there is a mismatch, it is one of the most reliable ways to get rejected.

To avoid this, the declarations are deducted from the app's configuration rather than being filled in manually. The pre-submission check ensures that the declarations accurately describe the app being submitted today.

Not all rules can be automated, and some require the expertise of humans. Rules such as "no placeholder content" can be easily automated, but rules that may shift over time or depend on how a reviewer interprets a particular screen need to be verified by an expert before submission. The frontier between the machine and the eye is clearly drawn, with everything that can be verified mechanically handed to the builder as a guardrail inside the product, while the rest is left to the expert eye.

Of course, this system cannot guarantee that an app will never fail the review due to surprise factors. However, it does ensure that no app fails because of a known rule. The known rules are checked by machines, while the learned patterns are checked by people. Each new lesson learned only adds to the list, which means the list only grows in one direction. In the end, while you cannot run someone else's test suite, you can make sure yours fails first by following these checks.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Announcing the MailKite Server developer API: use the client against your own server

MailKite Server now has a developer API that can replace the hosted API for its core send-and-receive path. The practical result is small: point the MailKite client at your server with baseUrl , use…

  • MailKite Server introduces developer API for custom server integration
  • API allows MailKite client to point at own server with existing code
  • Supports sending, inspecting mail with Node.js server and SQLite storage

OpenCode Needs Memory, Not Another Background Pipeline

I kept explaining the same project facts to new OpenCode sessions. Not the durable rules that already belonged in AGENTS.md . Those were present.

  • OpenCode's new plugin memory aims to address agents forgetting valuable lessons across sessions.
  • The plugin introduces four memory tools: memoryadd, memoryupdate, memorydelete, and memoryread.

More from Thursday 27 August →