---
title: Turborepo 1.12
date: 2024/01/30
description: Turborepo 1.12 adds popular community-requested features and feedback improvements.
tag: 'web development'
---

<h1 className="text-center">Turborepo 1.12</h1>

import { Authors } from '#components/authors';
import { Date } from '#components/blog/date';
import { ThemeAwareImage } from '#components/theme-aware-image';

<Date>Tuesday, January 30th, 2024</Date>

<Authors authors={['mehulkar', 'tomknickman', 'gregsoltis']} />

Turborepo 1.12 adds popular community-requested features and feedback improvements, including:

- [**Colors in task logs**](#colors-in-task-logs): Colors from original shell logs used by default
- [**Errors overhaul**](#errors-overhaul): Improved error messages for misconfigurations
- [**Improved `inputs` ergonomics**](#improved-inputs-ergonomics): Use Turborepo's defaults with your input customizations
- [**Telemetry**](#telemetry): Help us focus on what matters most to Turborepo users

We're also done cleaning up our migration to Rust in this release by removing the `--go-fallback` flag and shrinking the `turbo` binary by 58% compared to 1.11.

Update today by running `npx @turbo/codemod migrate` or get started with `npx create-turbo@latest`.

## Colors in task logs

Color is a great way to quickly surface important information in user interfaces. It's common for developer tooling to highlight success in green, warnings in yellow, or errors in red.

<ThemeAwareImage
  className="my-4 flex justify-center"
  light={{
    alt: 'A screenshot of a terminal running a `turbo` task with colors from the underlying shell logs.',
    src: '/images/blog/turbo-1-12-0/log-colors-light.png',
    props: {
      width: 625,
      height: 1000,
      className: 'dark:hidden block rounded-xl',
    },
  }}
  dark={{
    alt: 'A screenshot of a terminal running a `turbo` task with colors from the underlying shell logs.',
    src: '/images/blog/turbo-1-12-0/log-colors-dark.png',
    props: {
      width: 625,
      height: 1000,
      className: 'hidden dark:block rounded-xl',
    },
  }}
/>

In this release, we're now showing the colors from your underlying tasks in your local environment by default. This has been a popular request from the community and we're excited to ship support for macOS and Linux today. We will be following up with Windows support in a future release.

## Errors overhaul

An important part of developer experience is ensuring that, when things go wrong, it's clear how to get back to the happy path. In this release, we've improved the error messages that come from Turborepo misconfigurations.

<ThemeAwareImage
  className="my-4 flex justify-center"
  light={{
    alt: 'A screenshot of a terminal attempting to run a `turbo` task but receiving an informative error that an unknown key `output`, was found in the `turbo.json` file.',
    src: '/images/blog/turbo-1-12-0/light-errors-overhaul.png',
    props: {
      width: 682,
      height: 746.5,
      className: 'dark:hidden block rounded-xl',
    },
  }}
  dark={{
    alt: 'A screenshot of a terminal attempting to run a `turbo` task but receiving an informative error that an unknown key `output`, was found in the `turbo.json` file.',
    src: '/images/blog/turbo-1-12-0/errors-overhaul-dark.png',
    props: {
      width: 682,
      height: 746.5,
      className: 'hidden dark:block rounded-xl',
    },
  }}
/>

In this enhanced UI, we are:

- Showing you the errorful code
- Improving the help text in your terminal for each type of error
- Providing a link to documentation when it can provide you with useful context

## Improved `inputs` ergonomics

Turborepo intelligently understands the inputs to your tasks by default. But there are also situations where you may want to include or exclude specific files or directories from your task inputs.

Importantly, using the `inputs` key on a task opts you out of all of the default inputs for a task, like omitting gitignored files from your inputs. Until today, you had to manually bring back these defaults by creating glob patterns for them yourself.

Today, we're adding `$TURBO_DEFAULT$` as a special value when used in the `inputs` array.

```json title="turbo.json"
{
  "pipeline": {
    "build": {
      "inputs": ["$TURBO_DEFAULT$", "!README.md", "!**.test.**"]
    }
  }
}
```

This microsyntax allows you to use the Turborepo defaults you're used to while adding in your own custom globs to fine tune the default input behavior.

[Check out the `inputs` documentation](/docs/reference/configuration#inputs) for more information.

## Telemetry

Turborepo was released almost two years ago, and `turbo` has developed considerably over the past two years. As the community has grown, the value of your feedback is immeasurable in helping us stay focused on what matters most to Turborepo users.

Until now, our feedback gathering process has been manual, slow, and error prone. While we will always highly appreciate users who file [GitHub Issues](https://github.com/vercel/turbo/issues), speak to us in [GitHub Discussions](https://github.com/vercel/turbo/discussions), and chat with the community in [Discord](https://turborepo.com/discord), this feedback only captures the sentiment of a small corner of the Turboverse.

Today, we're introducing a **completely anonymous**, automated approach to feedback to learn more about the ways that the community is using Turborepo. As we continue to iterate on `turbo`, this information will help us ensure performance, confirm stability, design new features, and drive the project's direction.

We're creating the build system of the future and this information will be highly valuable to guide us in that effort. For more information, visit [turborepo.com/docs/telemetry](https://turborepo.com/docs/telemetry).

If you'd like to opt out of telemetry, run:

```bash title="Terminal"
turbo telemetry disable
```

You may also opt-out by setting an environment variable:

- `TURBO_TELEMETRY_DISABLED=1`
- `DO_NOT_TRACK=1` (per the [Console Do Not Track (DNT)](https://consoledonottrack.com/) specification)

## Other Improvements

- **[Feature]**: Enable pty usage [(PR)](https://github.com/vercel/turbo/pull/7128)
- **[Feature]**: Support `$TURBO_DEFAULT$` in inputs [(PR)](https://github.com/vercel/turbo/pull/7113)
- **[Feature]**: Support Yarn 4 patches [(PR)](https://github.com/vercel/turbo/pull/6974)
- **[Feature]**: Enable telemetry [(PR)](https://github.com/vercel/turbo/pull/7122)
- **[Improvement]**: Treat empty environment variables as unset [(PR)](https://github.com/vercel/turbo/pull/6929)
- **[Improvement]**: Error out if dependent flags are provided without their parent [(PR)](https://github.com/vercel/turbo/pull/6780)
- **[Improvement]**: Make sure that our concurrency check ignore packages without tasks [(PR)](https://github.com/vercel/turbo/pull/6790)
- **[Improvement]**: Avoid panic on invalid directory filters [(PR)](https://github.com/vercel/turbo/pull/6955)
- **[Improvement]**: Ignore permission errors during globbing [(PR)](https://github.com/vercel/turbo/pull/6957)
- **[Improvement]**: Avoid retry panic [(PR)](https://github.com/vercel/turbo/pull/6926)
- **[Improvement]**: Rewrite prefix after carriage return [(PR)](https://github.com/vercel/turbo/pull/6989)
- **[Improvement]**: Validate graph extension [(PR)](https://github.com/vercel/turbo/pull/6995)
- **[Improvement]**: Truncate metadata file when writing [(PR)](https://github.com/vercel/turbo/pull/7016)
- **[Improvement]**: Correctly create symlinks to directories [(PR)](https://github.com/vercel/turbo/pull/6983)
- **[Improvement]**: Make sure cookie dir exists before writing cookie [(PR)](https://github.com/vercel/turbo/pull/7015)
- **[Improvement]**: Examples turbo.json outputs key [(PR)](https://github.com/vercel/turbo/pull/7071)
- **[Improvement]**: Filter package.json files that are subfolders of other packages [(PR)](https://github.com/vercel/turbo/pull/7025)
- **[Improvement]**: Sort dependents and dependencies during normalization [(PR)](https://github.com/vercel/turbo/pull/7018)
- **[Improvement]**: Swap fallback logs to debug [(PR)](https://github.com/vercel/turbo/pull/7102)
- **[Improvement]**: Include gitignored files in fallback [(PR)](https://github.com/vercel/turbo/pull/7105)
- **[Improvement]**: Include default files in fallback [(PR)](https://github.com/vercel/turbo/pull/7106)

## Community

Since releasing [Turborepo 1.11](/blog/turbo-1-11-0) we've seen incredible adoption and community growth:

- [24.0k+ GitHub Stars](https://github.com/vercel/turbo)
- [1.9M+ weekly NPM downloads](https://www.npmjs.com/package/turbo)
- 238 years of compute time saved using [Vercel Remote Cache](https://vercel.com/docs/concepts/monorepos/remote-caching)

Turborepo is the result of the combined work of all of its contributors, including our core team.

Thank you for your continued support, feedback, and collaboration to make Turborepo your build tool of choice.
