{"id":705613,"date":"2026-05-07T13:00:15","date_gmt":"2026-05-07T12:00:15","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=platform&#038;p=705613"},"modified":"2026-05-07T14:23:16","modified_gmt":"2026-05-07T13:23:16","slug":"make-your-plugin-remote-development-ready","status":"publish","type":"platform","link":"https:\/\/blog.jetbrains.com\/en\/platform\/2026\/05\/make-your-plugin-remote-development-ready","title":{"rendered":"Make Your Plugin Remote Development-Ready"},"content":{"rendered":"\n<p>Remote development is changing how plugins should be built for JetBrains IDEs. The IDE is no longer a single local process: users interact with a frontend client, while the backend can run on another machine, in Docker, or in the cloud. This model is becoming increasingly important because it supports powerful remote environments, better security, and more flexible development workflows. In the case of JetBrains IDEs running backend and frontend processes simultaneously, we say they are operating in <strong>split mode<\/strong>.<\/p>\n\n\n\n<p>For plugin developers, it is therefore not only crucial that they consider <strong>how<\/strong> their plugin works, but also <strong>where<\/strong> each part of it should run. Some extensions continue to work as they are, but UI, typing-related features, and anything sensitive to latency can become slow or behave incorrectly if they are not designed with client-server architecture in mind.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1983\" height=\"1150\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/05\/wide.arch_-1.png\" alt=\"\" class=\"wp-image-705794\" \/><\/figure>\n\n\n\n<p>The new recommended approach is to think in terms of frontend, backend, and shared functionality, and make sure each part of the plugin runs on the side it belongs. The suggested plugin architecture works in both client-server IDE and monolithic IDE, so plugin authors don\u2019t need to implement support twice.<\/p>\n\n\n\n<p>To help with that, we now provide guidance for building split-mode-aware plugins in JetBrains IDEs. It explains the terminology, motivation, architecture, and how to run, debug, and test in split mode. It walks through the practical steps as well: structuring plugin modules, moving code to the appropriate side, and connecting the frontend and backend to each other.<\/p>\n\n\n\n<p>To help you put your best foot forward in this brave new \u201csplit mode\u201d world, we\u2019ve prepared the following materials:<\/p>\n\n\n\n<ul>\n<li>A high-level <a href=\"https:\/\/www.youtube.com\/watch?v=T2VvY6kgALY\" target=\"_blank\" rel=\"noopener\">video overview<\/a>.<\/li>\n\n\n\n<li>A plugin <a href=\"https:\/\/github.com\/JetBrains\/intellij-platform-modular-plugin-template\" target=\"_blank\" rel=\"noopener\">template<\/a> featuring proper module structures and demo feature implementation to use as a reference.<\/li>\n\n\n\n<li><a href=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/split-mode-and-remote-development.html\" data-type=\"link\" data-id=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/split-mode-and-remote-development.html\" target=\"_blank\" rel=\"noopener\">Documentation articles<\/a> covering the most important aspects of plugin development, as well as a step-by-step guide on how to approach the splitting process<\/li>\n\n\n\n<li>A link to the <a href=\"https:\/\/platform.jetbrains.com\/c\/intellij-platform\" target=\"_blank\" rel=\"noopener\">JetBrains Platform forum<\/a>, where you can ask any questions regarding the development process and browse existing answers..&nbsp;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Making an IntelliJ Plugin Remote Development-friendly\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/T2VvY6kgALY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"author":1649,"featured_media":705726,"comment_status":"open","ping_status":"closed","template":"","categories":[],"tags":[3233,1038,9113],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/platform\/705613"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/platform"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/platform"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/1649"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=705613"}],"version-history":[{"count":8,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/platform\/705613\/revisions"}],"predecessor-version":[{"id":705805,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/platform\/705613\/revisions\/705805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/705726"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=705613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=705613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=705613"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=705613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}