Version
4.201.0-canary.15
Published
Jun 19, 2026 · 09:32 UTC
Features
- Module cache now caches static and dynamic library products as binary XCFrameworks, including Swift module and public header handling, so mixed framework/library graphs can reuse cached binaries.
- CLI releases are now organized into canary, release candidate, and stable channels, giving you a slower-moving recommended install while keeping per-commit builds available for early adopters.
Bug fixes
- Tuist now treats
.proto files as sources, placing them in Xcode’s Sources build phase so protobuf plugins can see them.
- SwiftPM static library artifact bundles and binary target handling are now supported.
- Test sharding with suite granularity now correctly selects Swift Testing suites via
-only-testing instead of relying on an xctestrun key that only works for XCTest.
- Suite shard destination resolution now carries the requested test plan through the entire resolution path, fixing concrete iOS simulator destination lookup when multiple test plans are present.
- Graph traversal is now iterative for deep dependency graphs, preventing stack overflow crashes during generation on large projects.
tuist inspect dependencies now detects implicit imports of modules from SwiftPM binary targets backed by XCFrameworks.
- Bazel credential-helper tokens are refreshed proactively within a 60 second safety margin, preventing mid-build UNAUTHENTICATED errors during long remote-cache builds.
- SwiftPM’s newer warning control settings are now decoded and mapped into generated Xcode build settings.
- Cache warming no longer parses Xcode activity logs for unused per-target build duration metadata, removing a potential failure point.
- SwifterPM has been updated to strip
__MACOSX shadow bundles from extracted archives, stream SwiftPM resolve output, and use SwiftPM’s artifact scratch path for restores.