"An empty list plus an invitation to create one reads as 'it does not exist', which is exactly wrong."
The Archive Registers, the Record Chooses
A new iOS app needs an App ID in the team (the bundle identifier Apple knows about), and an App Store Connect record that builds upload into. The intuitive order is to create the identifier first on the developer website, then the record, then build. The family's order is the reverse, because xcodebuild archive -allowProvisioningUpdates with automatic signing registers what the project needs on its way past: the app's identifier, the share extension's, and the App Group they share. By the time anyone opens App Store Connect, the identifier already exists, and the New App screen's Bundle ID field is a dropdown to choose from.
The team itself is written into project.yml as DEVELOPMENT_TEAM, never picked in Xcode's Signing pane, because a team chosen in the UI lives in the generated project and disappears at the next xcodegen generate. Export compliance is answered in source too (ITSAppUsesNonExemptEncryption), so a build never stalls waiting for someone to answer it in a browser.
One Afternoon, Three Apps, One Wrong Turn
On one afternoon three family apps reached the record step. Each session told the owner to create a record for its bundle id. He opened the New App screen and found the Bundle ID dropdown empty, with a link beneath it offering to register a new bundle ID. An empty list plus that invitation read as "it does not exist", so he followed the link, and the developer website refused the identifier as already existing, with no reason given. That refusal reads exactly like a collision with someone else's app, so he invented a second identifier with an extra word in it and built the records against those. One session then changed its app's real bundle ids to match the workaround.
Two facts were stacked. The dropdown reflects new registrations only after a delay of minutes. And the archive had registered the identifier, so creating it by hand was never a step. The handling of an empty dropdown is to wait and reload, never to create. Recovery was cheap: a record's Bundle ID stays editable until the first build is uploaded against it, so repointing it at the real identifier fixed one app with its source untouched. After a first upload it is frozen, and the record must be deleted and made again.
How to Tell an Entry Is Yours
An identifier registered by Xcode carries Xcode's default description: the letters XC followed by the bundle id with its dots replaced by spaces. The record's Name names the record only; the name under the icon on the home screen is CFBundleDisplayName from the app's own source, and the two may differ. An extension ships inside the host app and needs no record of its own.