Hi @Miiha! I’m Dosu and I’m helping the tuist team.
The difference you’re seeing between focusing on a target by name (App FeatureC) and by tag (App tag:c) with --binary-cache comes from how Tuist resolves queries internally. When you specify a target directly, Tuist treats it as a “focus target” and always builds it from sources, using binaries only for dependencies. When you use a tag, Tuist resolves all targets matching that tag, but the logic for which targets are treated as “focused” can diverge—sometimes resulting in those targets being replaced by binaries if the query resolution doesn’t mark them as focused in the same way as direct target names. This difference is rooted in the query parsing and graph traversal logic, not in the cache itself.
The documentation doesn’t explicitly call out this behavior, and it can be confusing because both approaches look similar on the surface docs. If you want to guarantee a target is built from sources, specifying it directly by name is the safest approach. If you need tag-based focus to behave identically, you may need to adjust your workflow or raise this as a feature request for more consistent handling.
Let me know if you want a deeper dive into the relevant code paths or have questions about workarounds!
To reply, just mention @dosu.
Share context across your team and agents. Try Dosu.