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 BuildintellijPlatform {
intellijIdea("253.27864.23") // specific EAP build
}
### Snapshot Builddependencies {
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/)