Major Features
Test Insights
Build times have long been the bottleneck that teams optimize for. But there’s another dimension to developer productivity that often goes unmeasured: test performance. We’ve seen teams struggle with slow test suites, unclear performance trends, and the cognitive overhead of not knowing where time is being spent. The feedback loop between writing code and validating it shouldn’t be a black box.
This cycle, we shipped Test Insights - expanding our existing build analytics to capture and analyze test data. The Tests page now gives teams visibility into test performance across multiple dimensions: by suite, by module, and down to individual test cases. You can see how test durations trend over time, identify which tests are consistently slow, and understand how test performance correlates with specific builds. We’ve connected tests to builds so teams can see compilation optimizations alongside test results - because these two dimensions of developer experience are fundamentally intertwined.
This is just the beginning. We’re laying the groundwork for deeper insights - flakiness detection, reliability scoring, and smarter test prioritization are all on our radar.
Related PRs:
- Tests page in the dashboard
- Test cases detail page
- Link tests to builds
- Track CI run ID for test insights
- Add filtering to test runs page
To get started, check out the Test Insights documentation.
Open Registry
When we launched the Tuist Registry earlier this year, we required authentication. It made sense at the time - we needed to understand usage patterns and ensure reliability before scaling. But as the registry grew to serve almost 10,000 packages and over 160,000 releases, something became clear: the friction of authentication was at odds with how developers expect to consume open source dependencies.
npm doesn’t require login to install packages. We were asking developers to change their mental model for no compelling reason.
This cycle, we removed that barrier. The registry is now open to everyone - no account, no authentication, no friction. The same security guarantees remain: packages are sourced directly from their original repositories, and the Swift CLI verifies checksums on every download. We’ve simply removed the unnecessary step that stood between developers and faster dependency resolution.
Related PRs:
- Open registry for unauthenticated access
- Update registry docs for optional authentication
- Migrate Tuist’s Package.swift to the registry
- Increase registry rate limits
Read more in our blog post Opening up the Tuist Registry and the Registry documentation.
Xcode Cache Improvements
Caching is one of those features where the difference between “good” and “great” is measured in seconds - seconds that compound across every developer, every build, every day. We’ve been running our Xcode cache infrastructure for a while now, but this cycle we asked ourselves: what would it take to make it noticeably faster?
The answer starts with acknowledging a fundamental constraint: physics. There’s an irreducible latency between where developers work and where cache servers live. Rather than accept this as a fixed limitation, we’re evolving our architecture to bring the cache closer to where the action happens. This cycle, we took the first step: instead of routing every request through Cloudflare’s load balancer, the CLI now connects directly to cache endpoints. The result is a 3-10% improvement in download times - and this is just the beginning. Stay tuned for more on this front.
We also invested heavily in observability. Cache hit rates, latency tracking, throughput analytics - the kind of data that helps teams understand not just that caching works, but how well it’s working for their specific codebase. Because optimization without measurement is just guesswork.
Related PRs:
- Direct connection to cache endpoints
- Xcode cache overview analytics
- Cache hit rate widget
- Filters for Compilation Optimizations tab
- Track cache key read/write latency
Learn more in our blog post Speed up your builds with the remote Tuist cache for Xcode and the Xcode cache documentation.
Regional Storage
Data residency isn’t just a compliance checkbox - for many organizations, it’s a hard requirement that determines which tools they can adopt. We’ve heard from teams who wanted to use Tuist but couldn’t because their compiled binaries needed to stay within specific geographic boundaries.
This cycle, we added support for regional storage. Teams can now specify where their artifacts are stored - Europe, United States, or distributed across all regions. For enterprise customers with specific infrastructure requirements, we also added the ability to configure custom S3 storage per account. The goal is simple: Tuist should fit into your existing constraints, not force you to work around ours.
Related PRs:
OAuth Username Selection
A small change, but one that reflects how we think about user experience: when signing up with OAuth providers like GitHub or Google, you can now choose your own username instead of having one automatically generated. It’s the kind of detail that doesn’t show up in feature announcements but makes the product feel more intentional.
Related PRs:
CLI Improvements
- Report module cache subhashes - Better debugging for cache misses
- Skip warning Swift flags when hashing - Prevent cache invalidation from warning flags
- Skip Xcode version in cache hashing - More stable cache keys across Xcode updates
- Better error messages for implicit imports - Clearer guidance when
tuist inspect implicit-importsfinds issues - Fix token refresh race condition - More reliable authentication
- Skip tuist install when CI cache hits - Faster CI runs
Server & Dashboard Improvements
- Manage organization members in the dashboard - Add and remove members directly
- Percentile values for build duration - p50/p90/p99 metrics in the builds widget
- Improved percentile dropdown interaction - Larger tappable area
- Neutral widgets for dashboard - Better visual hierarchy
- Skip email confirmation for self-hosted - Smoother onboarding for on-premise installations
- S3 CA certificate configuration - Support for air-gapped environments
Bug Fixes
High Priority
- Respect XCFramework linking status - Fixed crashes with macOS release builds
- Preserve targeted external dependencies as source - Fixed
tuist generate App ExternalDependencybehavior - Remove duplicated XCFrameworks in embed phase - Fixed duplicate framework warnings
- Extended string delimiter in Plist templates - Fixed string escaping issues
- Validate OAuth state parameter length - Security hardening
CLI
- Fix uiTests implicit import false positive - Accurate implicit import detection
- Handle skipped tests from failed builds - Better test result reporting
- Respect cache profile “none” with target focus - Correct cache behavior when focusing targets
- Remove CLANG_CXX_LIBRARY build setting - Cleaner generated projects
Server
- Graceful S3/Tigris 404 handling - More resilient storage operations
- Handle invalid repository URLs in registry - Better error handling
- Centralize Connection: close header - Consistent error responses
- Fix session expiration error - Smoother re-authentication
Blog Posts
We published 6 blog posts this cycle:
| Date | Title | Author |
|---|---|---|
| Oct 22 | Speed up your builds with the remote Tuist cache for Xcode | @marekfort |
| Oct 31 | Organize your targets with metadata tags | @pepicrft |
| Nov 03 | Designing the new marketing site | @asmit |
| Nov 17 | Build Smart Before You Build Fast | @pepicrft |
| Nov 26 | Opening up the Tuist Registry | @marekfort |
| Nov 27 | Teaching AI to Read Xcode Builds | @pepicrft |
Documentation Updates
New & Reorganized Docs
- Self-hosting documentation reorganized with Docker Compose configuration - Reorganize self-hosting docs
- Registry documentation updated for optional authentication - Update registry docs
- Test Insights documentation added - Add test insights
- Cache profiles documentation for fine-tuning cached binary replacement - Add cache profiles
- Xcode cache documentation - Document Xcode cache
Localization
- Enable Chinese for docs and marketing
- Enable Korean for marketing site
- Enable Russian for marketing site
Other Updates
- Public project showcase on homepage
- S3 CA certificate configuration docs
- GitHub Action CI integration guide
- Document .tuistignore file
- Tuist + TCA integration details
Releases
During this cycle we shipped:
- CLI: 4.107.0 through 4.111.1 (13 releases)
- Server: 1.35.3 through 1.48.1 (33 releases)
Community Contributions
A big thank you to our community contributors this cycle: