Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/MobileNativeFoundation/rules_xcodeproj/llms.txt

Use this file to discover all available pages before exploring further.

This changelog tracks changes to rules_xcodeproj. It follows keepachangelog.com conventions — only user-facing changes are listed; internal refactors and cleanups are generally omitted. Breaking changes are marked with ⚠️. For a full list of releases and download links, see the GitHub Releases page.

New

  • Added support for pre- and post-actions on autogenerated schemes, including explicit build post-action failure handling: #3307
  • Added run_build_post_actions_on_failure to custom scheme xcschemes.run(...) configuration for explicit build post-action failure handling: #3307

Adjusted

  • bazel_env is now resolved earlier to reduce analysis cache invalidation when environment values are resolved dynamically: #3305
  • Integrated Samba rsync from BCR so that users no longer need to install it via Homebrew: #3265

Fixed

  • Fixed “Make” variable expansion for test rules under Bazel 9: #3297
Breaking changes in this release:
  • Removed WORKSPACE support. WORKSPACE is gone in Bazel 9, and was formally deprecated in Bazel 8: #3289

New

  • Added --@rules_xcodeproj//xcodeproj:suppress_code_coverage flag option to bypass building for Coverage even if it’s configured in the scheme: #3285

Adjusted

  • Added support for Bazel 9: #3286

Fixed

  • Fixed conflicting environment variables among test targets in custom schemes: #3284

New

  • Added support for enabling Code Coverage for all targets in scheme test action: #3111
  • Enabled code coverage in Xcode: #3250, #3257

Adjusted

  • Additional mixed_language_library output files are now collected: #3261

Fixed

  • xcdatamodel files are now collected correctly for mixed_language_library targets: #3268
  • Fixed mixed_language_library resource propagation: #3277

New

  • Support Code Coverage in Xcode schemes: #3111
  • Display inline Code Coverage in the Xcode Source Editor: #3250
Code Coverage in Xcode requires apple_support 2.0.0 or later and rules_swift 3.4.1 or later.

Fixed

New

  • Added --@rules_xcodeproj//xcodeproj:separate_index_build_output_base flag to configure the generator to use a separate output base for index builds: #3243
  • Added support for viewing and editing .xcmappingmodel files: #3242
  • Added support for StoreKit configuration files to xcschemes.run, for use with StoreKit Testing: #3245

Fixed

  • Fixed potential stale --xcode_version in runner.sh: #3232
Breaking changes in this release:
  • Renamed compile_only_aspect.bzl to xcodeproj_cache_warm_aspect.bzl: #3238

Adjusted

  • Moved generator path inside main output base: #3234
  • Now sets --remote_download_outputs=toplevel on the rules_xcodeproj config: #3239

Fixed

  • Fixed incompatible output base causing startup options change: #3229, #3233

New

  • Added xcodeproj_extra_files aspect hint: #3150

Adjusted

  • Improved compile_only_aspect: #3222, #3223
    • Now collects CppCompile action outputs
    • Has a new resources output group to collect generated and processed resources

Fixed

  • Added workaround for “Extract app intents metadata” failure: #3225

Fixed

  • Fixed typo in previous fix: #3218

Fixed

  • Fixed improper capitalization of build diagnostics: #3217

Adjusted

  • Added SIGINT handler for process_bazel_build_log.py: #3200
  • Now uses --@rules_swift//swift:copt instead of --swiftcopt: #3206
  • Removed --experimental_action_cache_store_output_metadata: #3207
  • Optimized out an extra regular expression substitution: #3208

Fixed

  • Fixed build log parsing for fatal error: diagnostics: #3204
  • Fixed incorrect sha256 for rules_swift: #3210
  • Added Testing.framework to testing frameworks: #3211
  • Added support for new convention for WMO module deps artifacts naming in Xcode 26 beta 3: #3212
  • Fixed Metal toolchains in Xcode 26 betas: #3213
Breaking changes in this release:
  • Removed the legacy generator mode and other related deprecated items: #3192, #3193
  • rules_swift 3.0+ is now required: #3187

New

  • Public APIs are now in their own files, deprecating defs.bzl: #3194

Adjusted

  • Added support for rules_swift 3.0: #3187

Fixed

  • Fixed _allow_remote_write_target_build_settings typo: #3191

Adjusted

  • Now uses BCR for kylef/PathKit and tuist/xcodeproj deps: #3153
  • Now skips targets without compiles output group in compile_only aspect: #3172

Fixed

  • Fixed more rsync permission issues: #3175
  • Fixed argument length error for WriteSwiftDebugSettings: #3173
  • Adopted latest index-import version (v6.1.0.1) to fix issue with libzstd.1.dylib: #3174

Fixed

  • Fixed index-import to work on all Xcode 16.x versions: #3162

New

  • Added compile_only aspect: #3156

Fixed

  • Fixed rsync on macOS 15.4: #3157
  • Fixed comm on macOS 15.4: #3161

Adjusted

  • Now defaults LANG to en_US.UTF-8 in project generation: #3143
  • Indexstore .filelist creation has been simplified: #3144
  • WriteTargetBuildSettings can now optionally use remote cache or RBE: #3149
  • Now uses --action_env=TOOLCHAINS= instead of --define=SWIFT_CUSTOM_TOOLCHAIN=: #3123
  • Changed instances of --experimental_remote_download_regex to --remote_download_regex: #3125

Fixed

  • Now uses md5sum when not on macOS: #3145
  • xcode-select or DEVELOPER_DIR are no longer required to generate a project: #3147
  • Fixed incremental_installer.sh when running on Linux: #3148
  • swift_compiler_plugin sources are now added to the generated project: #3142
  • Removed duplicate post/pre actions: #3122
Breaking changes in this release:
  • “Make” variables are now expanded as values in the env dictionary on test rules: #3088
  • Upgraded rules_apple to 3.16.1, which drops support for Bazel 6: #3114

New

  • Added ExtensionKit support: #3109

Fixed

  • Fixed support for Bazel 8 and 9: #3117
Breaking changes in this release:
  • Changed the default value for xcodeproj.generation_mode from legacy to incremental: #2986
  • Removed some deprecated attributes: #2988

New

  • Environment variables are now resolved in bazel_env: #2983
  • additional_*_inputs are now collected as extra files in incremental generation mode: #2972
  • swiftc_inputs are now collected as extra files in incremental generation mode: #2971

Adjusted

  • Reduced work that incremental generation mode installer does for generated directories: #2956, #2965
  • The adjusted Info.plist is now used for extension_infoplists in incremental generation mode: #2966
  • exec configuration targets are no longer processed in incremental generation mode: #2968

Fixed

  • Indentation-related project_options are now applied in incremental generation mode: #2959
  • Uncategorized files are no longer collected for unfocused targets in incremental generation mode: #2960, #2982
  • The Swift generated header is now excluded from the project in incremental generation mode: #2961
  • Fixed build_mode to be set to bazel when passed None or "": #2987
This page shows a selection of notable releases. For the complete release history — including all versions back to 0.1.0 — see the CHANGELOG.md on GitHub or browse the GitHub Releases page.

Build docs developers (and LLMs) love