Plugin & IDE Compatibility#
Rainbow Brackets hooks deeply into IntelliJ Platform internals for bracket parsing, syntax highlighting, and editor rendering via CustomHighlighterRenderer. This tight coupling means behavior can silently break when either the plugin or the host IDE is updated, and problems typically only surface on a specific IDE build number β not just the version string.
How Compatibility Is Managed#
The plugin manually maintains since-build/until-build ranges: updateSinceUntilBuild = false in build.gradle.kts means these are not auto-generated.
The runPluginVerifier task is configured to fail only on COMPATIBILITY_PROBLEMS , providing a safety net for hard API breakage. The CHANGELOG.md explicitly tracks IDE compatibility per release (e.g., "Compatible with 2025.1 EAP", "Compatible with 2025.2 Release Candidate") β confirming that each major IDE release typically requires a dedicated plugin update.
The plugin supports: IntelliJ IDEA (Ultimate/Community/Educational), PhpStorm, WebStorm, PyCharm, RubyMine, CLion, Rider, Android Studio, HUAWEI DevEco Studio, and others.
IntelliJ Platform 2026.3: Read Lock Prohibition During Paint#
The highest-priority active compatibility issue is a platform-level threading restriction introduced in IntelliJ Platform 2026.3.
JetBrains is forbidding acquisition of the read lock during painting to prevent UI freezes. Rainbow Brackets acquires the read lock inside a CustomHighlighterRenderer implementation to access PSI trees β this now throws a PluginException at editor paint time:
Attempt to take read lock was reported
The Read/Write lock is disallowed during paint.
Consider using `PsiVersioningService.freezePsiVersion` for accessing PSI trees
[Plugin: izhangzhihao.rainbow.brackets]
This was first reported against RubyMine 2026.3 EAP (build RM-263.3889.66, plugin 2026.2.0) and raises on IDE launch.
Required migration: A JetBrains platform engineer (@knisht) filed issue #2896 describing the fix: replace ReadAction-based PSI access in the CustomHighlighterRenderer with the new experimental API com.intellij.psi.util.PsiVersioningService#freezePsiVersion, available since 2026.2.1.
- Before 2026.3:
freezePsiVersionis equivalent toReadAction.runBlocking(backward-compatible). - Since 2026.3 (or with
-Dide.allow.using.frozen.psi=true): routes to a new utility that accesses a consistent PSI snapshot without acquiring the read lock β safe to call during paint. - The YouTrack tracking issue is IJPL-250439.
Current status (as of 2026-09-08): The maintainer has acknowledged the issue but noted that several third-party dependencies used by Rainbow Brackets have not yet added 2026.3 support, so full 2026.3 compatibility is blocked pending upstream updates.
Other Common Compatibility Issue Patterns#
Regressions resolved by IDE update (not plugin update)#
Some bugs are caused by transient issues in a specific IDE patch build and resolve when the user upgrades the IDE β without any plugin change. A previous example: a user on IU-261.24374.151 with plugin 2025.3.12 reported JSON bracket color mismatches that the maintainer could not reproduce; the user later confirmed it resolved after an IntelliJ update.
Missing dependencies after plugin update#
A plugin update can expose a missing required dependency (e.g., com.intellij.marketplace) in some IDE variants like Android Studio. This reflects a mismatch between the plugin's declared dependency list and what that IDE variant bundles.
EAP / pre-release IDE instability#
Running Rainbow Brackets on EAP/RC IDE builds before the plugin has a matching compatibility release is a known source of transient breakage. Check the CHANGELOG for a "Compatible with X.Y EAP" entry before using EAP builds in any active workflow.
Past read-action threading fix#
Version 2025.3.5 already fixed a related threading issue: "fix Read access is allowed from inside read-action only" for compatibility with 2025.3 EAP 1. The 2026.3 issue is a stricter enforcement of the same underlying threading model.
Debugging & Reporting Guidance#
- Check the CHANGELOG for a "Compatible with X.Y" entry matching your IDE. If absent, a compatibility release may not yet exist.
- Try updating the IDE first β build-specific regressions sometimes resolve with the next IDE patch without any plugin change.
- Include the full environment dump in bug reports: plugin version, IDE version, IDE build number, OS, and non-bundled plugins list.
- Avoid EAP IDE builds in production unless the CHANGELOG confirms a matching compatibility update.
- For 2026.3+ installs: The plugin is known-incompatible until the
PsiVersioningServicemigration is complete and third-party dependencies ship 2026.3 support. There is no workaround short of staying on 2026.2.x.
Key References#
| Resource | Purpose |
|---|---|
| Issue #2895 | 2026.3 EAP incompatibility report (RubyMine, read lock during paint) |
| Issue #2896 | JetBrains platform engineer guidance on PsiVersioningService migration |
| IJPL-250439 | JetBrains YouTrack: PsiVersioningService#freezePsiVersion API tracking |
build.gradle.kts | IDE version target, verifier config, updateSinceUntilBuild |
CHANGELOG.md | Per-release compatibility notes |