Tuist

A Swifty toolchain for productive Apple app development

Effortlessly build, test, and deploy your apps with Tuist's revolutionary automation and project management features.

Proudly sponsored by


import ProjectDescription

let project = Project(
    name: "Tuist",
    targets: [
        Target(
            name: "Tuist",
            platform: .iOS,
            product: .app,
            bundleId: "io.tuist.Tuist",
            sources: ["Sources/**"]
        ),
        Target(
            name: "TuistTests",
            platform: .iOS,
            product: .unitTests,
            bundleId: "io.tuist.TuistTests",
            sources: ["Tests/**"],
            dependencies: [.target(name: "Tuist")]
        )
    ]
)

import ProjectDescription

let workspace = Workspace(
    name: "TuistWorkspace",
    projects: [
        "Projects/**",
    ]
)
Tuist powers impactful organizations building game-changing apps
Tuist Projects

A Swifty DSL for your projects

Feedback

Users ❤️ Tuist

Hear what our users have to say about Tuist

Shahzad Majeed ― Senior Lead Software Engineer at DraftKings

Tuist has revolutionized our iOS development workflow at DraftKings. Its automation capabilities have streamlined project generation, build settings, and dependency management. With modularization, we maximize code sharing across apps, reducing duplication.
Tuist Server

Growth without the growing pains

Extend Tuist with paid server-side features to address large-scale challenges such as slow build times and the lack of insights to make informed decisions.

Get started
  • Tuist Cache

    We skip compilation steps by reliably reusing compilation artifacts from previous builds in local and remote environments.
  • Tuist Tests

    Running all the tests for every commit is slow. We only run the tests of the files that have changed and its upstream dependencies.
  • Tuist Analytics

    Making the right decisions when evolving projects requires data that Xcode doesn't provide. We do and make it actionable for you.

It's about time...and 💰

Organizations face expenses due to developer inefficiencies. Advanced paid features such as Tuist Cache or Tuist Tests help you reduce these costs by making your workflows faster and more efficient.

How many developers are on the project?

How long does the project take (minutes) to build?

Per build.

What is the cost to the company?

On CI (e.g. GitHub Actions, CircleCI...)

Per developer and day

Per developer and day

Annual Developer and CI Hours Saved
14k h/year
Annual R&D Cost Recapture
$5.7m
Save $5.7m
Plans

Choose the plan that fits your needs

Air — $0 per month + usage

Great for side projects, or projects with a small team.

  • No minimum commitment
  • $0.5 per generation with a remote cache hit
Get Started

Pro — $249 per month + usage

Priority support for teams with complex Tuist needs.

  • $249 /mo usage included
  • Priority GitHub support
  • Email and Slack support
  • $0.5 per generation with a remote cache hit
$249 / month

Enterprise — Custom

A custom option for organizations at scale.

  • Custom usage included
  • Okta single sign-on (SSO)
  • On-premise version
  • Emergency support
  • Custom terms
Contact sales
open source program

Free for open source projects

Do you have an open source project? Tuist Cloud is free for you. We believe in giving back to the community that has helped us grow.

Sign up
FAQs

You ask, we answer

Some of the most frequently asked questions about Tuist.

Tuist

While we offer tools to assist in the migration process, automating it reliably can be challenging due to Xcode projects' implicit configurations resolved at build-time. Therefore, we recommend a manual approach, which presents a valuable opportunity to clean up your project and achieve greater consistency.

Unlike other project generation tools, Tuist goes beyond simply generating projects. We view project generation as a means to an end, leveraging the project information to validate, optimize, and automate workflows. With our Swift-based solution, teams are spared the burden of building and maintaining their own tooling upon project generation, ensuring a streamlined and efficient development process.

It's weak. The generated projects don't include any references to Tuist. If you ever decide to move away from Tuist or if we discontinue maintaining the tool, you can simply add the generated Xcode project to your Git repository, and you're good to go. Making it easier for users to transition away from Tuist is a design principle we adhere to.
Tuist Server

To enable caching, you'll need to define your projects with Tuist and ensure that the configuration is explicit. If there are any implicit configurations that Tuist is not aware of, such as build-time linking, the build artifacts won't be cached. Additionally, there may be certain project scenarios that are not handled seamlessly. However, we are more than willing to collaborate with you to iterate and find solutions to make them work effectively.

The process involves generating a fingerprint for each target in the project targets graph, which takes into account their metadata, dependencies on files and other targets. This fingerprint serves as an indicator of whether any changes have occurred and if the target needs to be recompiled. During the generation phase, we check the cache for targets using their fingerprint. If pre-existing binaries are found, we utilize them instead of generating new targets with the corresponding source files.

Absolutely! To achieve this, you'll require a server that adheres to a predefined contract. You have the option to devise your own solution or leverage Tuist server, which not only enables cache sharing but also offers additional useful features for building apps at scale.

Tuist

Need help migrating? Let us help you with that

l