IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
Introducing the New Bazel Plugin EAP for IntelliJ IDEA
We are pleased to announce the public Early Access Program (EAP) of the new Bazel plugin for IntelliJ IDEA. It is available on JetBrains Marketplace for IntelliJ IDEA 2024.3. This initial release supports Bazel projects focusing exclusively on Java and Kotlin. Support for more languages including Python, Go, and Scala is coming soon, while C++ is a bit further down the road.
Bazel has become a popular build tool among large organizations struggling with the sheer size of their code repositories, which often consist of hundreds of thousands of files and are sometimes even too large to load on a single laptop. Bazel is one of the few tools capable of working on this level efficiently. Other key features include the ability to build artifacts in a fully reproducible way and work with codebases using multiple languages.
For these reasons we are investing in bringing great Bazel support to IntelliJ IDEA and our other IDEs. So far, we have done this by supporting the development and maintenance of the original Bazel plugin by Google. This release is the first step in delivering several fundamental improvements that would have been hard to implement in the scope of the original plugin. While it is not at parity yet with the original plugin in all features, we are aiming to provide the full functionality in 2025.
Like the original plugin, the new plugin is free and open-source. We welcome contributions on our GitHub repository. As the plugin matures, we may decide to make some advanced features available only to IntelliJ IDEA Ultimate customers, but all essential functionality will remain open.
Check out the Getting Started with the JetBrains Bazel Plugin post to learn about first steps, or read up on the main features on our documentation page.
A look back
Two years ago, we identified a trend towards monorepos and Bazel among our enterprise users. Bazel support for IntelliJ IDEA was already available through the original Bazel plugin by Google. While it is stable, it did not address many use cases for users outside of Google, and some of them would have required major incompatible changes to the codebase. We chose to maintain the original plugin while trying new approaches in our new plugin.
What’s different
Under the hood, we implemented a nearly 1:1 mapping of Bazel targets to IntelliJ modules. In the process of implementation, we prepared the IntelliJ Platform and language features for performing at the scale of typical Bazel projects – commonly hundreds of thousands of source files and targets. The fine-grained mapping allows an accurate representation of the project structure in the IDE, eliminating problems caused by conflicting dependency paths or completions outside the actual import scope in the original Bazel plugin.
On the user-visible side, we streamlined the import flow. Instead of stepping through an import wizard to select the working set, you simply choose a directory, BUILD file, or project view of your monorepo to import. The IDE will load only the chosen subset of the repository. Additionally, we support the project view mechanism introduced in the original plugin, which lets you define the exact project subset to work on in terms of targets or directories.
The target tree lets you easily search, build, run, or test individual Bazel targets.
Looking forward
As the new plugin reaches stability and feature parity, we plan to gradually transition to maintaining only the new plugin. Rest assured, we are committed to ensuring a smooth and seamless transition without disrupting your current workflows.
As we reach predefined quality gates, we will begin to phase out support for the original Bazel plugin. The phase-out will depend on the maturity of the new plugin implementation for each supported ecosystem individually: JVM, Go, Python, C++, and Android.
Timeline
We will provide regular compatibility updates for the original plugin throughout 2025, including critical fixes and support for new IntelliJ IDEA versions.
At the moment, we plan to have stable IDE integration in the new plugin for JVM, Go, and Python before Q3 2025 (July). When the quality gates are passed, we will begin phasing out our support involvement over a period of six months. After the phase-out period, we may stop providing updates.
We expect CLion support to take longer and are targeting the end of 2025. Until then, the original plugin for CLion will continue to receive full support, and then, in early 2026, we will begin a six-month phase-out period.
Even after we phase out our support, the original plugin will still be available on the JetBrains Marketplace but will not receive further updates.
Quality gates
We defined the following necessary quality gates to pass before beginning the phase-out. We are working closely with several customers to ensure that they are met:
- The new plugin covers essential use cases of 3-5 pilot customer teams or companies
- Pilot users don’t experience degradations in usability in comparison to the original plugin, in any supported OS (MacOS, Linux, Windows)
- Benchmarks against real codebases show stable and adequate performance in sync times
- Automated end-to-end tests and regular manual tests ensure a reliable release process
Roadmap
By Q2 2025 (April), we plan to deliver stable support for the JVM ecosystem, including Scala. Other languages, including Go, Python, and Android will be available for early testing. Experimental features will include support for C++ and CLion, and phased sync (also known as “query sync”), which lets you start working on code faster. The plugin will also work on Windows.
Beyond that, we will continue to focus on
- Performance improvements, especially for project sync and indexes
- Improving Starlark language support
- Supporting more languages and providing better integration with other JetBrains IDEs, including GoLand, PyCharm, CLion, and others.
For an up-to-date overview of our plans, see the continually updated roadmap document.We are looking forward to your feedback on the new plugin! Feel free to use YouTrack to report any issues you encounter, or get in touch with us on the #intellij channel on the Bazel Slack.