IntelliJ Platform 2025.3: What Plugin Developers Need to Know | JetBrains Platform Blog

# IntelliJ IDEA 2025.3 Plugin Development Guide

As we approach the release of **IntelliJ IDEA 2025.3**, here’s everything plugin developers need to know.  
This guide covers **key changes**, **migration tips**, and **best practices** to maintain compatibility with the evolving IntelliJ Platform.

---

## ✅ Compatibility Overview

- **No immediate update required** if your plugin was built against IntelliJ Platform **2025.2** or earlier.
- Backward compatibility between minor versions remains strong.
- You can test locally with the [verifyPlugin](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#verifyPlugin) Gradle task — identical to marketplace checks.

---

## 🔄 What’s Changing in 2025.3?

### Unified IntelliJ IDEA Distribution
- **Community** and **Ultimate** editions become a **single unified platform**.  
  Full announcement: [Unified Distribution Plan](https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/).
- PyCharm transitioned in **2025.1** — see [PyCharm Unified blog post](https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025-1/).

### Key Implications
- **Community Edition artifacts discontinued**:
  - `IC-2025.3`, `IC-253.x.y` → ❌ will fail.
  - Use `intellijIdea(version)` instead.
- PyCharm:
  - `pycharmCommunity()` / `pycharmProfessional()` → ❌  
  - Use `pycharm(version)` from **2025.1** onwards.
- Unified IU product code — **feature availability** depends on licensing.
- **LSP** API available to all users in unified distribution.

---

## ⚙ Depending on Paid Functionality

If your plugin requires Ultimate-only features:  
Add `com.intellij.modules.ultimate` dependency in `plugin.xml`.

Example:

com.intellij.modules.platform

com.intellij.modules.ultimate


When a user lacks an active subscription, both this module and dependent plugins will be disabled.

---

## 👥 Impact on Users

- Users upgrading from **Community 2025.2** move seamlessly to unified **2025.3**.
- All existing plugins compatible with 2025.2 will continue to work.

### Free-tier gains:
- Basic database tools
- Spring Boot / Ktor project wizards
- Syntax highlighting for various frameworks
- LSP integration (previously Ultimate-only)

---

## 📦 Gradle Requirements & Dependency Syntax

Update IntelliJ Platform Gradle Plugin to **2.10.4**:

plugins {

id("org.jetbrains.intellij.platform") version "2.10.4"

}


### Targeting IntelliJ IDEA

**2025.2 and earlier**:

dependencies {

intellijPlatform {

intellijIdeaCommunity("2025.2")

// or intellijIdeaUltimate("2025.2")

bundledPlugin("com.intellij.java")

}

}


**2025.3 and later**:

dependencies {

intellijPlatform {

intellijIdea("2025.3")

bundledPlugin("com.intellij.java")

}

}


### Targeting PyCharm  
2025.2 and earlier:

dependencies {

intellijPlatform {

pycharmCommunity("2024.3")

// or pycharmProfessional("2024.3")

}

}

2025.3 and later:

dependencies {

intellijPlatform {

pycharm("2025.3")

}

}


---

## 📜 Module Extraction Changes

Several modules moved to separate classloaders — declare them explicitly when needed:

bundledModule("intellij.platform.vcs.dvcs")

bundledModule("intellij.platform.vcs.log")


Extracted modules include:
- `intellij.platform.collaborationTools.auth.base`
- `intellij.platform.scriptDebugger.backend`
- `intellij.platform.vcs.log.graph`
…and others.

---

## 🔍 IntelliLang Module Change

If depending on `org.intellij.intelliLang`:
- **Pre‑2025.3**: `bundledPlugin("org.intellij.intelliLang")`  
- **2025.3+**: `bundledModule("intellij.platform.langInjection")`

---

## 📑 Storage Annotation Restriction

`@Storage` must be **inside** `@State.storages` now:

@Service

@State(name = "MySettings", storages = [Storage("MySettings.xml")])

class MySettings : PersistentStateComponent { ... }


---

## 📖 Gradle vs plugin.xml Dependencies

**Gradle** → compile-time  
**plugin.xml** → runtime

If plugin uses bundled modules, switch to **plugin model v2** format:

com.intellij.java

intellij.platform.vcs.dvcs


---

## 🛠 Testing Against Pre-release Builds

### EAP Build

intellijPlatform {

intellijIdea("253.27864.23") // specific EAP build

}


### Snapshot Build

dependencies {

intellijPlatform {

intellijIdea("253-EAP-SNAPSHOT") {

useInstaller = false

}

}

}


---

## ❓ FAQ

**Q:** Must I immediately update for 2025.3?  
**A:** No. Plugins built for 2025.2+ still work.

**Q:** Build fails with "idea:ideaIC:253.x.x not found"?  
**A:** Update Gradle plugin to 2.10.4+, switch to `intellijIdea()`.

**Q:** Can one build support both 2025.2 and 2025.3?  
**A:** Yes, if `plugin.xml` defines ranges appropriately.

---

## 📢 Publishing & Automation Tip

For teams managing plugins **and** related educational content, **multi-platform distribution** can be streamlined.  
An example: [AiToEarn官网](https://aitoearn.ai) — an open-source AI content monetization system that can:
- Generate and publish content to Douyin, Kwai, WeChat, Bilibili, Xiaohongshu, Facebook, Instagram, LinkedIn, Threads, YouTube, Pinterest, X (Twitter).
- Automate plugin release notes, documentation updates.
- Provide analytics & AI model ranking ([AI模型排名](https://rank.aitoearn.ai)).

---

## 📬 Need Help?
Ask on the [JetBrains Platform Forum](https://platform.jetbrains.com).

---

**Previous Post:** [IntelliJ IDEA 2025.2.4 Is Out!](https://blog.jetbrains.com/idea/2025/10/intellij-idea-2025-2-4/)

Read more