Platform logo

JetBrains Platform

Plugin and extension development for JetBrains products.

IntelliJ IDEA IntelliJ Platform Remote Development

Major Architectural Update: Introducing the New Search Everywhere API (Built for Remote Development)

The Search Everywhere dialog is one of the most important entry points in the IntelliJ Platform. To future-proof this core feature and ensure its optimal performance in remote development, we have completely rewritten the underlying architecture, and we’re introducing a brand-new API for plugin developers.

This is a critical update for anyone contributing custom results to Search Everywhere, particularly for plugins that need to support remote environments.

Why the rewrite? The challenge of remote development

The need for a new API stemmed directly from our ongoing commitment to remote development.

The original SearchEverywhereContributor extension point was designed for the traditional, monolithic (local) IDE architecture. It coupled the search result data with the UI renderer responsible for displaying that data. This tight coupling became a significant blocker for our split-architecture remote solution:

  1. The backend/frontend problem: In remote development, search logic often runs on a powerful backend machine, but the results must be displayed on the lightweight frontend.
  2. Serialization issue: Because SearchEverywhereContributor coupled data and presentation, it was impossible to reliably serialize third-party search results – both the data and its appearance – and safely send them across the network from the backend process to the frontend client.

To solve this, we initiated a deep rewrite of Search Everywhere to separate data and logic from UI presentation, enabling seamless and performant remote execution for all plugins.

The new API: Separation of data and UI

Frontend components

These components primarily manage the user interface and presentation logic.

  • SeTab
    • An interface representing a single tab within the Search Everywhere dialog.
    • Lives on the frontend only.
  • SeTabFactory
    • A factory for creating SeTab instances.
    • Serves as an extension point for adding new tab types.

Core data and logic (backend/frontend)

These components are responsible for fetching and structuring the search results.

  • SeItemsProvider
    • The conceptual analog of the older SearchEverywhereContributor.
    • Can run on both the backend and frontend.
    • Returns search results that include a serializable presentation – a standardized way to describe the item’s appearance. By ensuring that the results returned by SeItemsProvider include a serializable presentation, we can transmit them over the network and reliably render the results on the client, regardless of which process generated them.
  • SeItemsProviderFactory
    • A factory for creating SeItemsProvider instances.
    • Serves as an extension point for adding new result sources.

Migration and compatibility

What this means for your plugin

We have implemented adapters for all existing legacy SearchEverywhereContributor implementations.

  • In a monolith (local) environment: Existing plugins should continue to work almost exactly as before, with no immediate changes required.
  • In a remote development environment (2025.2 onwards): The new Search Everywhere architecture is now enabled by default. Plugins supporting remote execution must either implement the new API or ensure their legacy results use a serializable presentation format that our adapters can manage. For a simpler, temporary presentation method, you can use SeLegacyItemPresentationProvider.

The path forward – Migration recommended

While the adapters provide a temporary bridge, we encourage all plugin developers to try the new API and provide feedback while it’s in the experimental phase. Once the new API has been refined based on the community’s input, we will start deprecating the old API.

Rollout plan

We are committed to a smooth transition and are rolling out the new Search Everywhere architecture gradually:

  1. 2025.2: The new Search Everywhere architecture is enabled by default in remote development.
  2. 2026.1 (planned): The new architecture is enabled by default in monolith environments.
  3. 2026.2 (tentative): The new API is no longer experimental, and the old API is deprecated

We understand that changing a core API is a significant step, but this rewrite is essential for the future of the IntelliJ Platform and your ability to serve users in modern, remote environments.

We are excited to see the improved performance and remote capabilities this change will bring to your plugins!

The IntelliJ Platform team

image description