Frequently Asked Questions

Should I install Turborepo globally?

You have two options when working with Turborepo:

  1. Install it globally, via npm install --global turbo
  2. Install a local version in your project

We recommend installing the turbo CLI globally. This gives you a smooth, ergonomic experience for running tasks. If your project also has turbo as a dependency in package.json, the global turbo will invoke the local one to ensure that intended version is used in the project.

Why isn't my global turbo working as expected?

It's possible to end up with multiple versions of global turbo on your machine if you install with different package managers. This can cause unexpected behavior if you're accidentally executing an older version of turbo.

You can quickly check which package manager's version you are using with:

  • macOS and Linux: which turbo
  • Windows: where turbo

The easiest way to ensure stability is to run the uninstall commands for your non-preferred package managers:

npm uninstall turbo --global

Do I have to use Remote Caching to use Turborepo?

No. Remote Caching is optional. However, you'll find it very useful to speed up development on a team, speed up builds inside of Docker, and also save space on your own machine.

Does Turborepo / Remote Caching store my source code?

No. Turborepo does not store source code. Without Remote Caching, no code ever leaves your machine—it will only cache artifacts to local disk.

With Turborepo's Remote Caching, you are responsible for configuring cache behavior and should only set up Turborepo to cache compiled artifacts. Please be aware that Turborepo treats all logs as artifacts and so these will be stored along with other cache artifacts.

Do I have to use Vercel to use Turborepo?

No. Turborepo is an open-source project and is not tied to any specific hosting provider or Remote Cache provider. The default Remote Cache provider is Vercel, should you opt-in to enable it. However, you can use any other provider you like if they support the same API. Several open-source community Remote Caches are compatible with Turborepo.

Can I use Turborepo with a different Remote Cache provider other than Vercel?

Yes. As long as the Remote Cache provider you choose supports the same API, you can use Turborepo with it.

Does Turborepo collect any personally identifiable information?

Due to the nature of Turborepo's functionality, no personal information is gathered when the open source binary is run locally. All cached artifacts are stored on your machine by default. Further, no log in information or contact details are collected by the turbo CLI, so Turborepo will never have access to any personally identifiable information. Thus, for any data privacy questions and concerns please refer to Turborepo's Privacy Policy.

Does Turborepo collect any personally identifiable information when using Remote Caching?

When Remote Caching is enabled, by default Turborepo will utilize your Vercel account to cache artifacts in the cloud. Thus, for any data privacy questions and concerns, please refer to Turborepo's Privacy Policy and Vercel's Privacy Policy (opens in a new tab). If you use a different Remote Cache provider, please refer to the provider's privacy policy.

How can I retain Fast Refresh in my Turborepo when using multiple Next.js applications?

Fast Refresh (opens in a new tab) gives you instantaneous feedback on edits made to your React components in Next.js applications.

If your Turborepo has multiple Next.js applications, you can use transpilePackages inside next.config.js to ensure that imports across workspaces will work with Fast Refresh when changes are made. Turborepo will effectively watch for any edits and the rebuild when saving. You can get started from this example (opens in a new tab) which is set up to handle Fast Refresh.

If you are using a Next.js version below 13, you will want to use next-transpile-modules (opens in a new tab) for the same Fast Refresh behavior.

What does "experimental" mean?

Some new features are marked as "experimental" in Turborepo. This means that the feature is not yet ready for production use, and may change in the future. We encourage you to try out these features and provide feedback, but please be aware that they may change in the future.

Can I use Turborepo with a monorepo that non-JS code?

Your monorepo can include subdirectories with any kind of code (a Django app, Rust crates, Ruby CLIs, etc). Turborepo will largely ignore these directories. However, if you want Turborepo to do anything with those parts of your codebase, you will need to:

  • Include these subdirectories in your workspaces declaration (e.g. pnpm-workspace.yaml or the workspaces key in package.json.
  • Add a package.json file to this directory the name and scripts fields populated.

Turborepo use Node.js conventions to find workspaces and execute tasks, but it doesn't care what those tasks are.