Skip to content

build(ios): Make the bundle id prefix configurable via a project-level xcconfig - #701

Merged
ryanbr merged 1 commit into
ryanbr:mainfrom
jbergler:bundle-id-prefix
Jul 22, 2026
Merged

ryanbr merged 1 commit into
ryanbr:mainfrom
jbergler:bundle-id-prefix

Conversation

@jbergler

Copy link
Copy Markdown

What this PR does

Every target hardcoded identifiers under com.noopapp, so building under your own Apple ID meant hand-editing project.yml in six places to avoid colliding with an installed official/sideloaded copy.

This change introduces a BUNDLE_ID_PREFIX xcconfig variable that every target picks up automatically. Users can override this in a gitignored Config/BundleIdSecrets.xcconfig.

Update docs/IOS.md's "build from source" instructions to match.

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Documentation
  • CI / tooling

How it was tested

Built locally with + without the local config file.

Checklist

  • Swift package tests pass for any package I touched (swift test in Packages/<name>)
  • Android unit tests pass if I touched android/ (./gradlew testFullDebugUnitTest)
  • No new build warnings introduced
  • UI changes use only StrandDesign tokens — no hardcoded colors, fonts, or spacing
  • No hardcoded hex frame bytes; protocol facts live in the schema / decoders
  • Follows the conventions in docs/CONTRIBUTING.md
  • I did not commit generated output (Strand.xcodeproj/) or any secrets/keystores

Related issues

Every target hardcoded PRODUCT_BUNDLE_IDENTIFIER/APP_GROUP_ID/WKCompanionAppBundleIdentifier
under com.noopapp, so building under your own Apple ID meant hand-editing project.yml in six
places to avoid colliding with an installed official/sideloaded copy. Introduce a
BUNDLE_ID_PREFIX xcconfig variable (project.yml's new project-level configFiles, default
com.noopapp; override in a gitignored Config/BundleIdSecrets.xcconfig) that every target
picks up automatically, including targets that also carry their own separate xcconfig, since
Xcode layers project-level xcconfig beneath target-level xcconfig.

WatchScoreSnapshot.appGroupId (StrandDesign) now resolves the App Group dynamically from the
running bundle's AppGroupIdentifier Info.plist key, mirroring the existing WidgetSnapshot
pattern, so the phone-to-watch bridge follows the same prefix instead of always writing to
the upstream group. ScheduledDebugExport.bgTaskIdentifier derives from Bundle.main the same
way. Left StorePaths/LocalAccessCore's productionBundleID and RawHistoryArchive's directory
name untouched — those intentionally reference the official upstream id to detect/migrate an
existing official install, not this build's own identity.

Update docs/IOS.md's "build from source" instructions to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XdgqpvTAkAZvwAepyU3zjK
@ryanbr
ryanbr merged commit 163b6b8 into ryanbr:main Jul 22, 2026
DX23876 pushed a commit to DX23876/noop that referenced this pull request Jul 22, 2026
build(ios): Make the bundle id prefix configurable via a project-level xcconfig
@ryanbr ryanbr mentioned this pull request Jul 22, 2026
simoncad7 pushed a commit to simoncad7/noop that referenced this pull request Aug 17, 2026
build(ios): Make the bundle id prefix configurable via a project-level xcconfig
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants