The canonical agent instructions for this project live in AGENTS.md. Read that first; it is the shared, agent-neutral guide (architecture, critical files, task patterns, conventions, security rules, gotchas). Keep it as the single source of truth and update it there, not here.
@AGENTS.md
These build/release specifics are not in AGENTS.md.
Builds are made locally in Xcode and uploaded to App Store Connect under the
owner's personal Apple account. EAS is not used (free Expo account, queue too
long) — ignore the eas build/eas submit flow in eas.json. ios/ is
gitignored and regenerated by prebuild, so app.json is the single source of
version truth (the old "bump 4 places" checklist no longer applies).
git pull, thenpnpm install. Use pnpm 9, nevercorepack pnpm— v11 ignores.npmrc'snode-linker=hoistedand the bundler then can't resolvebabel-preset-expo. (package.jsonpinspnpm@9.7.1viapackageManager.)- Bump
expo.ios.buildNumberinapp.json(must be unique per upload). pnpm prebuild:ios— clean-prebuilds iOS (adds the SkateSpots widget target via@bacons/apple-targets) and runsscripts/sync-widget-version.js, which copies the build number onto the widget target. apple-targets resets the widget'sCURRENT_PROJECT_VERSIONto 1, and App Store Connect rejects an extension whose build number ≠ the app's.- Open
ios/SkateHive.xcworkspace, set destination to Any iOS Device, then Product → Archive (not Build) → Organizer → Distribute App → App Store Connect → Upload.
- iOS App Store ID:
6751173076 - iOS bundle:
com.bgrana.skatehive· widgetcom.bgrana.skatehive.widget - App Group:
group.com.bgrana.skatehive· Apple Team ID:JBJ68VAF83 - Android package:
com.skatehive.app