Open Capacitor project in Xcode, sign it with your team, archive and upload
The iOS half of Anticode's app download is a standard Capacitor Xcode project. On a Mac, install the dependencies, run npx cap sync, then npx cap open ios. In Xcode, choose your own team under Signing & Capabilities, run it in a simulator, and when it's right, use Product, Archive and Distribute App to upload it to App Store Connect. Anticode signs nothing for you.
What you need first
- A Mac with a recent Xcode. Capacitor's iOS guide states the Xcode version it currently requires; check it before you start. A cloud Mac or a build service also works.
- Node.js 20 or later, for the two set-up commands.
- The zip from Anticode's App stores section, downloaded after you set your own app ID and the name under the icon.
- An Apple Developer Program membership to upload. Running in the simulator works without one.
Open the project
- Unzip the download and open a terminal in its folder.
- Run
npm install. This fetches Capacitor and its two plugins. - Run
npx cap sync. The zip deliberately leaves out files Capacitor generates, and this step creates them, linking the iOS project to Capacitor's packages and copying thewww/folder and the config across. - Run
npx cap open ios. Xcode opens the project inios/, which uses Swift Package Manager, so Xcode resolves the packages the first time it opens.
If you skip the sync step, Xcode complains about missing packages or files. Run it again whenever you change capacitor.config.json or anything in www/.
Sign it with your team
Select the App target and open Signing & Capabilities. Choose your team. Xcode then creates the certificates and profiles it needs; Apple's documentation describes Xcode managing cloud-based signing certificates for most common workflows. The bundle identifier already matches the app ID you set in Anticode. Leave it alone: it has to match the app record you create in App Store Connect, and it can never change once the app is in the store.
Pick an iPhone simulator and press Run. The app opens your live site full screen. Try the corner share button, and if your site has a booking form, send a test booking for a slot more than an hour away to see the reminder offer. Turn off the Mac's network to see the offline screen.
Archive and upload
Apple's guide to distributing your app covers the screens in detail. The sequence:
- Create the app in App Store Connect first, using the same bundle ID. Apple's upload guide says builds are uploaded after the app has been added to your account.
- In Xcode, choose a device destination rather than a simulator, then Product > Archive.
- When the Organizer opens (or via Window > Organizer, Archives), select the archive. Optionally choose Validate App to catch problems before uploading.
- Choose Distribute App, pick the App Store Connect or TestFlight and App Store option, then Upload.
- Leave Automatically manage signing selected unless you manage certificates yourself, then Distribute.
- Wait for App Store Connect to finish processing; Apple emails you, and the build then appears for TestFlight and for review.
For every later upload, raise MARKETING_VERSION (the version people see) and CURRENT_PROJECT_VERSION (the build number) in Xcode first, as the project's README reminds you.
Settings already made for you
- Display name set to the name under the icon you chose.
- Export compliance:
ITSAppUsesNonExemptEncryptionis set toNO, because the app only uses the HTTPS built into iOS. Change it if you add your own encryption. - An opaque 1024×1024 icon, since App Store Connect rejects icons with transparency, and a launch image in your site's colours.
- The share and reminder features, added by a small view-controller subclass inside
SceneDelegate.swift, so the project needs no extra files.
Limits
- iPad is on. The template supports iPad, so App Store Connect will want iPad screenshots; turn iPad off in the target's settings if you don't want to support it.
- Anticode doesn't compile, sign or upload, and never sees your Apple credentials.
- Approval is Apple's call. Anticode's checklist warns that Apple often rejects apps that are mainly a website; see App Store requirements.
Troubleshooting
- Missing package or file errors on open
- Run
npm installandnpx cap syncin the project folder, then reopen. - Signing fails with no team
- Add your Apple account in Xcode's settings, then choose the team again.
- Upload rejected for a duplicate build
- Raise
CURRENT_PROJECT_VERSIONand archive again. - No matching app in App Store Connect
- Create the app record with exactly the bundle ID shown in Xcode.
The rest of the download is described on the Capacitor project page; the Android half is covered in Android Studio.
Questions people ask
Can I build the iOS app on Windows?
Not with Xcode, which runs on macOS. A cloud Mac or a build service is the usual alternative.
Do I need to write Swift?
No. Choosing a team, archiving and uploading are all menus. Swift only comes in if you add native features.
Will a site change need a new upload?
No, content changes appear because the app loads your live site. A new name, icon or app setting does need a new build.