Tuesday, December 5th, 2023
Turborepo 1.11 completes our migration to Rust and ships several developer experience improvements:
- Our new Rust-based foundation: We've finished the port from Go to lay the groundwork for better performance, improved stability, and new features.
- Group logs for improved readability: You can now specify
--log-order=groupedto organize your logs into distinct sections separated by tasks.
- Updated examples: Start with an example for Next.js, Svelte, Remix, Nuxt, and more.
Update today by running
npx @turbo/codemod migrate.
As we wrote about in our blog post about the migration (opens in a new tab), we're excited to start seeing the benefits of our porting effort for Turborepo users. Rust has allowed us to surface more complexity in our code so we're able to create a better experience in your codebase in several ways:
- We've noticed a slight performance improvement right away for some use cases, even without doing much performance tuning in our code yet. We look forward to diving deeper into making
turboeven faster soon.
- We were able to move incidental behaviors of globbing, paths, and encoding support to tested and supported behavior, giving us better confidence that we're handling your configuration as expected. Going forward, we'll be able to build features like validation and automatic bug-fixing codemods into Turborepo for better stability.
- We've quickly iterated on enhancing error messages in your monorepo as a feature for next release, giving you critical information for find the source of misconfigurations.
- We've been able to catch possible platform-related bugs much sooner, as Rust forces us to think about the differences between platforms and environments much more closely than Go. This deepened reliability removes an entire category of possible bugs from your repository.
If you find any problems that you believe are related to the new Rust codepath, you can opt back to the Go codepath using the
--go-fallback flag and report an issue on GitHub (opens in a new tab).
To make it easier to review your task logs, we've introduced the
--log-order flag to output all logs from a task after it finishes rather than as it writes. This results in logs that are separated per-task, improving readability on a specific task's logs.
Enable this behavior using
--log-order=grouped. Check out the documentation to learn more
Our repository contains
an examples directory (opens in a new tab) with starter monorepos for your projects.
To get started with an example, run:
# Two Next.js applications
# Next.js and Remix
npx create-turbo@latest -e kitchen-sink
# Vue and Nuxt
npx create-turbo@latest -e with-vue-nuxt
We're putting a renewed effort towards ensuring our examples are kept up-to-date. Additionally, we've re-architected our examples to advocate for best practices in monorepos. For example:
- In-editor go-to-definition across packages
- Dependencies updated to latest versions
- Tooling like ESLint, Prettier, jest, and vitest pre-configured
- Hot-reloading across packages
Since releasing Turborepo 1.10 we've seen incredible adoption and community growth:
- 23.6k+ GitHub Stars (opens in a new tab)
- 1.8M+ weekly NPM downloads (opens in a new tab)
- 206 years of compute time saved through Remote Caching on Vercel (opens in a new tab)
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.