Skip to main content
Tuist workspaces help you organize multiple projects into a cohesive development environment, enabling modular architecture and efficient team collaboration.

Understanding Workspaces

An Xcode workspace is a container that groups multiple projects, allowing them to work together while maintaining independence.

Without Workspace

Single project, all targets in one .xcodeproj

With Workspace

Multiple projects organized in one .xcworkspace

When to Use Workspaces

Use a single Project.swift when:
  • You have a simple app structure
  • All targets are closely related
  • Team is small (< 5 developers)
  • Build times are acceptable
Tuist automatically creates a workspace for single projects - no Workspace.swift needed!

Creating a Workspace

Define a workspace in Workspace.swift:

Workspace Structure Patterns

Organize by product features:
Workspace.swift

Cross-Project Dependencies

Link targets across projects in the workspace:
Avoid circular dependencies between projects. Tuist will detect and report these during generation.

Workspace Schemes

Create schemes that span multiple projects:
Workspace.swift

Additional Files

Include documentation and configuration files in the workspace:
Additional files appear in Xcode’s project navigator but aren’t built - perfect for documentation!

Workspace Generation Options

Customize workspace behavior:

Best Practices

Ensure dependencies flow in one direction:
Avoid:
Use protocols/interfaces to invert dependencies when needed:
Create team-specific workspaces:
Structure projects to minimize rebuilds:
  1. Small, focused projects - Changes affect fewer targets
  2. Static frameworks - Faster linking than dynamic
  3. Explicit dependencies - Avoid unnecessary rebuilds
Include architecture documentation in the workspace:

Visualizing Your Workspace

Tuist can generate a visual graph of your workspace:
Example output:

Migration Strategies

Gradually extract features from a monolithic app:
1

Start with Core

Extract shared utilities first:
2

Extract Features

Move features one at a time:
3

Continue Extraction

Gradually move all features:

Example: Real-World Workspace

Here’s a complete example of a production workspace:

Next Steps

Manifests

Deep dive into manifest file structure

Generated Projects

Understand project generation

Architecture

Learn about Tuist’s architecture

Dependencies

Managing external dependencies