Hive Hive
Sign in

tuist cache builds macCatalyst destination for iOS apps

GitHub issue · Open

Metadata
Source
tuist/tuist #6107
Updated
Jun 11, 2026
Domains
Cache
Details

What happened?

When creating a project that has targets specifying .iOS as destination, I would expect the tuist cache command to generate xcframeworks for iOS simulator and device. What I observed is that the Mac Catalyst variant gets built as well.

How do we reproduce it?

  1. Download the sample project: ios_app_with_spm_dependencies.zip

  2. Run tuist install

  3. Run tuist cache --external-only

Error log

Building scheme Binaries-Cache-iOS for the simulator
[...]
Archive Succeeded
Building scheme Binaries-Cache-iOS for Mac Catalyst
[...]
Archive Succeeded
Building scheme Binaries-Cache-iOS for device
[...]
Archive Succeeded
Creating XCFrameworks
[...]
Storing binaries to speed up workflows

macOS version

14.3.1

Tuist version

4.7.0

Xcode version

15.3

Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments
P
pepicrft Mar 25, 2024

Thanks @erudel 🙏🏼. I added it to this week’s backlog to look into it.

E
erudel Mar 25, 2024

Thank you!

I just want to clarify that this is not breaking anything in my flow so it isn’t really urgent, but it was unexpected and I am not sure it is the intended behavior.

DL
daniel-l2 May 7, 2024

Any updates on this issue? Our app manages lots of external dependencies with Tuist and it would be really nice if we can build only iphoneos and iphonesimulator framework for an iOS app. Building macOS & macCatalyst frameworks takes some time.

T
timbaev Jul 11, 2025

Faced the same issue: sometimes Tuist starts building the SPM dependency for Mac Catalyst, even though our project only supports iPhone and iPad.

Tuist version 4.49.1

O
oct0f1sh Oct 3, 2025

Any idea if there’s any workaround for having to build for MacCatalyst? One of our SPM dependencies uses an API that isn’t available on Catalyst and is preventing us from being able to use tuist cache

P
pepicrft Oct 4, 2025

Hey @oct0f1sh 👋🏼 I’m looking into this

P
pepicrft Oct 4, 2025

@oct0f1sh could you include a reproducible project. I just tried @erudel’s project with the latest Tuist version, 4.81.1, and it works fine. Note that you can override the destination of a particular external dependency product by doing the following in your Package.swift

import PackageDescription
#if TUIST
import ProjectDescription
let packageSettings = PackageSettings(
productDestinations: ["Foo": [.iPhone]]
)
#endif

Could you try the above and let me know if it works?

O
oct0f1sh Oct 6, 2025

Thanks for the response @pepicrft! I tried setting the productDestination for that one dependency as [.iPhone] as you have shown, but I’m still running into the issue when running tuist cache. I even went and checked in the generated workspace and can see that the supported destinations for that one package target still shows catalyst as well as a couple others that should not be there.

I’ve included here a sample project that has the same issue I’m running into. I’m able to run tuist build just fine, as well as run on the simulator, but when I run tuist cache it keeps trying to build for Mac Catalyst and fails because of an API that’s not available in a dependency. I’ve left out your suggested fix in my example code as adding it in yields the same result.

CatalystIssueSample.zip

O
oct0f1sh Oct 29, 2025

Just a heads up but I was able to get around this by just modifying the SPM package to not use that API if the target environment is Mac Catalyst. If we didn’t have ownership of the package though I think it would be a much bigger headache.