Adapting Your JetBrains Plugin for Remote Development: A Step-by-Step Guide

By

Introduction

Remote development is reshaping how plugins are built for JetBrains IDEs. In this model, the IDE splits into a frontend client (where the user interacts) and a backend that can run on a remote server, Docker container, or cloud instance. This split mode enables powerful remote environments, enhanced security, and flexible workflows. For plugin developers, it is essential to consider not just what your plugin does, but where each part should execute. Some features—like UI and typing-related actions—may become slow or incorrect if not designed with a client-server architecture. This guide will walk you through making your plugin remote development-ready, ensuring it works seamlessly in both monolithic and split-mode IDEs.

Adapting Your JetBrains Plugin for Remote Development: A Step-by-Step Guide
Source: blog.jetbrains.com

What You Need

Before starting, gather the following materials and prerequisites:

Step-by-Step Instructions

Step 1: Understand Split Mode Architecture

Start by reviewing the provided video overview and documentation to grasp the split mode concept. Key points:

Step 2: Structure Your Plugin Modules

Use the plugin template as a reference. Create a multi-module project with a clear separation:

Update your build.gradle files to reflect this structure. Ensure the frontend module declares a dependency on the shared module, and the backend does the same. Avoid direct dependencies between frontend and backend modules.

Step 3: Move Code to the Appropriate Side

Identify every component in your existing plugin and decide where it belongs:

For typing-related features (e.g., auto-completion, inspections), move the heavy logic to the backend, and keep the frontend as a thin client that sends requests and displays results. If your plugin accesses the file system, ensure those operations run only on the backend.

Step 4: Connect Frontend and Backend

Implement a communication layer between the frontend and backend modules. JetBrains provides built-in mechanisms:

Adapting Your JetBrains Plugin for Remote Development: A Step-by-Step Guide
Source: blog.jetbrains.com

Wire these in your plugin’s startup code. For example, when a user triggers a frontend action, it should send a command to the backend, process it, and return the result to update the UI.

Step 5: Run and Debug in Split Mode

Test your plugin in an environment that simulates remote development. Follow the guide in the documentation:

Pay attention to any performance issues or incorrect UI updates. Adjust your code to ensure low-latency responses.

Step 6: Test for Monolithic Compatibility

Verify that your plugin still works in the traditional monolithic IDE (both frontend and backend running locally). The architecture should degrade gracefully: the same module structure works, but all processes run in one JVM. Run your unit tests and integration tests in both modes to ensure no regressions.

Step 7: Iterate and Refine

Use the JetBrains Platform Forum to ask questions and share your progress. Based on feedback and testing, refine your module boundaries, optimize network calls, and ensure data consistency. Document your architecture for future contributors.

Tips for Success

Tags:

Related Articles

Recommended

Discover More

GitHub Halts New Copilot Subscriptions, Tightens Limits Amid Soaring AI Compute Costs6 Key Takeaways from Wyandotte County’s Approval of a Massive Battery Storage ProjectKubernetes v1.36 Arrives: User Namespaces Finally Go GA for Enhanced Container SecuritySandboxing AI Agents: A Comparative Guide to Chroot and systemd-nspawnHow to Swap Bitcoin for USDC Without Losing Custody: A Step-by-Step Guide Using Boltz