I don't like the schemes generated by Tuist

Tuist defaults to generating schemes for convenience of the project definition. However, at some point that default might not align with your needs for schemes. In that case, we recommend to use Project.options to disable the generation of schemes, and use Project.schemes and Workspace.schemes to define them.

Just wanted to chime in on this discussion to better understand how Tuist opts to generate it’s default schemes. Mainly to better understand if the structure of the project(s) could be improved to avoid the unnecessary scheme and need to manually manage schemes.

These screenshots were done with Tuist 4.43.2 / Xcode 16.2

Xcode “autogenerate” --------- Tuist

Xcode default with “autogenerate schemes”

Admittedly TuistDemoFramework_TuistDemoFramework here isn’t ideal, other projects I’ve created didn’t have that one.

Tuist default

Specifically curious about the Tuist {AppName}-Workspace scheme that is created here and why it exists.

Project used: GitHub - jonnyklemmer/TuistDemo: Project to highlight and test building iOS apps with Tuist

This scheme is there to group all targets in your project. Do you want to make sure all targets build? Build that scheme. Often, that target might be your app, but once you add example apps or other support targets that might not be shipped with the App binary, that’s where the -Workspace scheme comes in.

Note you can easily disable the scheme using this option.

1 Like

The disable option would resolve the issue. I re-added to the reference project in the commit 6d1cb72 in the repo linked above.

Unfortunately I see it still generates the -Workspace scheme. So maybe this is just a bug? Happy to open an issue in the GitHub assuming I’m using the option as expected.

I agree this is somewhat confusing, but to get rid of the -Workspace scheme, you need to disable it in a Workspace.swift file: Workspace.GenerationOptions · Project Description · References · Tuist

The reason for this is you can have multiple Project.swift files, so removing the -Workspace scheme from one of those wouldn’t be great either – even if in this case, you have just one.

Not also that having your schemes is not costly at all and through abstractions in your manifest files you can wrap the definition of schemes in factory functions.