---
title: Frequently Asked Questions
description: Frequently asked questions about Turborepo.
---

import { Callout } from '../../../components/Callout'
import { Tabs, Tab } from '../../../components/Tabs'

# 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:

  <Tabs items={['npm', 'yarn', 'pnpm']} storageKey="selected-pkg-manager">
    <Tab>
      ```bash
      npm uninstall turbo --global
      ```
    </Tab>
    <Tab>
      ```bash
      yarn global remove turbo
      ```
    </Tab>
    <Tab>
      ```bash
      pnpm uninstall turbo --global
      ```
    </Tab>
  </Tabs>

## Do I have to use Remote Caching to use Turborepo?

No. [Remote Caching](/repo/docs/core-concepts/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](/repo/docs/core-concepts/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](/repo/docs/core-concepts/remote-caching) 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](/privacy).

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

When [Remote Caching](/repo/docs/core-concepts/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](/privacy) and [Vercel's Privacy Policy](https://vercel.com/legal/privacy-policy). 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](https://nextjs.org/docs/basic-features/fast-refresh) 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](https://github.com/vercel/turbo/tree/main/examples/basic) which is set up to handle Fast Refresh.

<Callout type="info">If you are using a Next.js version below 13, you will want to use [`next-transpile-modules`](https://www.npmjs.com/package/next-transpile-modules) for the same Fast Refresh behavior.</Callout>

## 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.

- [Report a bug with an experimental feature](https://github.com/vercel/turbo/issues/new?labels=experimental,kind:+bug,area:+turborepo,needs:+triage&template=0-turborepo-bug-report.yml&title=%5Bturborepo%5D+)
- [Provide feedback on an experimental feature](https://github.com/vercel/turbo/issues/new?labels=experimental,story,needs:+triage&template=2-feature-request.yml&title=%5Bturborepo%5D+)

## 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.
