Skip to content
C.W.K.
Stream
Lesson 05 of 06 · published

Apple's Law, Our House Rules

~15 min · platform-map, house-rules, developer-program, testflight

Level 0Bundle Opener
0 XP0/81 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete
"A rule you cannot trace to a reason is a habit. A habit you cannot price is a liability."

Two Kinds of Rule, Labelled Everywhere

Every lesson in this quest marks what it teaches with one of two labels. An apple-law callout is a rule the platform imposes on anyone who ships: break it and the app crashes, gets refused, or quietly loses its permissions, no matter whose app it is. A house-rule callout is a choice this family made. It comes with the reason it was made and what it costs, because a reader copying a house rule into a different situation deserves to know what they are buying.

The distinction matters most exactly where they look alike. "Turn off the App Sandbox" reads like a platform instruction; it is a house rule with a real cost, and it is wrong for an app you intend to put on the Mac App Store. "A new build number for every TestFlight upload" reads like a team convention; it is Apple's law, and App Store Connect enforces it.

The House Rules, With Their Prices

House ruleWhyWhat it costs
Mac apps build with SwiftPM and a script, no Xcode projectPlain text that diffs, reviews and runs from a terminal or an agent the same way every timeYou write the bundle, signing and install steps yourself
One self-signed code-signing identity for every Mac appA designated requirement that stays stable across rebuilds and Macs, so permission grants surviveGatekeeper does not trust it: the apps run on the family's own Macs, not on a stranger's
No notarization, hardened runtime off by default, no App Sandbox on the MacApps are never distributed publicly and need whole-disk and network-share pathsNo public distribution; safety rests on the machines being your own
project.yml (XcodeGen) is the source of every iOS projectA readable, regenerable project with the team baked into sourceRegenerate before you trust a test run
Swift 6 language modeData races become compile errors instead of crashes on a phoneMigration work and honest annotations
Apps are thin windows onto an engine at home, over a private networkOne writer owns the record; no public route, no second databaseNo private network, no app
TestFlight is the only delivery that counts for iPhone, iPad and Watch appsEvery device updates over the air with the same signing as a releaseApple's processing time, upload caps, and a paid membership

The One Condition: A Paid Membership

This quest assumes a paid Apple Developer Program membership — 99 US dollars a year, or the local price where you enrol. A free Apple ID can put an app on your own device from Xcode, with short-lived provisioning profiles and a restricted set of capabilities, and every serious feature in the later tracks (TestFlight, App Store Connect records, App Groups across extensions, push keys) sits behind the paid program. Dad set the rule for this quest in plain words:

"In my experience, developing on a free account is just digging holes. Build around TestFlight. If you'd dig holes to save 99 dollars, don't read this quest. Not because Apple is pretty — that much a year is worth it. You get so much for it." — Dad

Read it as an investment judgment, not loyalty. The membership is the cheapest tool in the whole toolchain for what it unlocks, and the hours a free-provisioning workaround eats are worth more than the fee.

Code

How to read a house rule before you copy it·text
HOUSE RULE   Mac apps are signed with one self-signed identity
WHY          permission grants follow a stable designated requirement
COST         Gatekeeper-untrusted; runs only where you installed the certificate
WRONG FOR    anything you plan to hand to people outside your own machines
TAUGHT IN    bundle-signing.self-signed-on-purpose

APPLE LAW    CFBundleVersion must increase for every TestFlight upload
ENFORCED BY  App Store Connect, at upload time
NO CHOICE    a reused build number is refused, whatever your team decided

External links

Exercise

Write the first two house rules for Spark in the card format from the code block: the build system you will use on the Mac, and how you will deliver the iPhone app. For each, fill in WHY, COST and WRONG FOR honestly. Then find one rule in a project you already work on that you have been treating as law, and decide which label it really deserves.
Hint
The test for apple-law is simple: if you broke it, would Apple's tooling, servers or runtime stop you regardless of what your team agreed? If only your team would object, it is a house rule — keep it, but price it.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.