Build Tools & Bundlers

Build Tools & Bundlers

Want to propose a change, disagree with a placement, or add an interesting new technology? Please reach out to @Damian Szafranek. This Tech Radar is a living document - we keep it useful by updating it together as our projects, tools, and experiences evolve.

Scope

The tools that process, bundle and optimise our applications for development and production. Covers frontend bundlers and JVM build tools alike, since the job is the same one and splitting them by language would put two answers to the same question on separate pages.

Overview

ADOPT

Proven technologies we have high confidence in; our default choices.


Vite

Webpack

Gradle

Turbopack

TRIAL

Promising technologies to explore and evaluate for adoption.


Gradle Kotlin DSL

ASSESS

Interesting technologies requiring investigation.


 

HOLD

Not recommended for new work; plan migration from existing uses.


Create React App (CRA)

Maven

Technologies Breakdown

Vite ADOPT

The strongly recommended build tool and development server for all new React, Vue, and other framework-based applications. Use its ecosystem plugins for specific needs.

Offers significantly faster development server startup and Hot Module Replacement (HMR) compared to Webpack/CRA by leveraging native ES modules. Provides optimized production builds using Rollup under the hood. Excellent developer experience, strong community support, and rapidly growing ecosystem. Adopted as the modern standard.


Webpack ADOPT

Maintain existing applications built with Webpack. May still be considered for new projects with extremely complex or specific build requirements not easily met by Vite's plugin ecosystem, but requires strong justification. Generally, prefer Vite for new development.

Highly mature, flexible, and powerful bundler with a vast ecosystem. It has been the standard for years and powers many existing applications and tools (like older CRA versions). While still capable, its development server performance and configuration complexity are generally surpassed by Vite for typical application development.


Gradle ADOPT

Gradle is our standard and recommended build tool for all new projects. Its superior performance, flexibility with plugins, and advanced dependency management capabilities make it our strategic choice for build automation.


Turbopack ADOPT

The default choice for Next.js work, which in practice means there is no decision to make: Turbopack has been the stable default for both dev and production builds since Next.js 16.

We adopt Next.js, and since Next.js 16 that means we are running Turbopack in production whether or not we chose it. It is markedly faster than the Webpack pipeline it replaced, particularly on dev startup and incremental rebuilds. The one migration cost worth knowing is that a project carrying custom Webpack configuration will fail the build rather than fall back, so those need reworking before upgrading. Webpack stays on the radar for everything that is not a Next.js application.


Gradle Kotlin DSL TRIAL

We are actively trialing the Gradle Kotlin DSL, primarily on our Kotlin-based mobile projects. The benefits of type safety and enhanced IDE support are promising, and we are evaluating it as a potential future standard for all Gradle build scripts, replacing the traditional Groovy DSL.


Create React App (CRA) HOLD

Avoid for all new React projects. Maintain existing CRA applications, but consider migrating to Vite or Next.js when significant feature work or refactoring occurs.

Historically significant for bootstrapping React applications, CRA hides its Webpack configuration, making customization difficult without 'ejecting'. Its development speed and build performance have been significantly surpassed by modern tools like Vite. The React team now recommends framework-based solutions (like Next.js, Remix) or Vite for new projects.


Maven HOLD

While Maven is used in several legacy and client-driven projects, it is not our strategic choice for new development. We are putting it on hold to encourage standardization on Gradle. Existing Maven projects should be considered for migration when undergoing major updates.