Hive Hive
Sign in

SwiftPM target bundle identifiers no longer get clobbered by package base settings

Metadata
Source
GitHub
Version
4.202.0-canary.25
Published
Jul 02, 2026 · 10:08 UTC
Repository
tuist/tuist
Update

Tuist no longer copies a package-wide PRODUCT_BUNDLE_IDENTIFIER onto every generated SwiftPM target. Each target’s sanitized bundleId is now the authoritative identifier, while a project’s own PRODUCT_BUNDLE_IDENTIFIER template still works as the fallback at the project level. All other package base settings (such as EXCLUDED_ARCHS) continue to propagate to targets as before.

This fixes a regression in 4.202.0-canary.23 where generated frameworks from underscores-prefixed modules (for example _RopeModule and _CollectionsUtilities from swift-collections, _NumericsShims from swift-numerics, or project-local _LottieStub) ended up with invalid CFBundleIdentifier values like com.example._RopeModule, causing Xcode to reject the embedded frameworks during build-for-testing.