jewel-compose-interop

Bridge Swing and Compose interop in Jewel-themed IntelliJ plugins.

Updated Apr 13, 2026
One-click install
npx skills add https://github.com/barsia/speqa --skill jewel-compose-interop
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: jewel-compose-interop
Source: https://github.com/barsia/speqa/tree/main/.agents/skills/jewel-compose-interop
Command: npx skills add https://github.com/barsia/speqa --skill jewel-compose-interop

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Bridge Swing/Compose interop across Jewel-themed IntelliJ plugins to coordinate state, theming, and editor panels, ensuring stable UI updates and correct mounting.

Core Features & Use Cases

  • Interop between Swing EDT, Compose runtime, and Jewel theming in IDE plugins.
  • Safe state bridging using MutableSharedFlow to avoid recomposition races.
  • Theming synchronization using UIManager/LafManager to trigger Compose recomposition.
  • Lazy mounting of Compose panels to avoid init-time costs and editor restoration issues.

Quick Start

Activate the jewel-compose-interop skill in your IDE and open an editor panel to observe interop behavior.

Frequently Asked Questions about jewel-compose-interop

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I bridge Swing and Compose state changes in IntelliJ plugins?

To bridge Swing and Compose state changes in IntelliJ plugins, use MutableSharedFlow for cross-thread communication. This ensures safe state bridging between the Swing EDT and Compose runtime without causing recomposition races.

How does Jewel theming trigger Compose recomposition in an IDE?

Jewel theming triggers Compose recomposition by synchronizing UIManager and LafManager updates. When the Look and Feel changes, LafManager initiates recomposition to ensure the Compose UI reflects the updated theme.

What is the best way to mount Compose panels inside Swing editor tabs?

The best way to mount Compose panels inside Swing editor tabs is lazy mounting. Deferring panel mounting avoids initialization-time costs and prevents editor restoration issues within IntelliJ plugin environments.

Why do I get recomposition races when mixing Swing EDT and Compose?

Recomposition races occur when mixing Swing EDT and Compose due to unsafe cross-thread state updates. Using MutableSharedFlow to bridge state changes provides a stable channel that prevents these synchronization conflicts.

Does Compose interop work with IntelliJ's UIManager for Look and Feel updates?

Yes, Compose interop works with UIManager for Look and Feel updates. The bridge uses UIManager-based theming combined with LafManager to actively trigger Compose recomposition when the IDE theme changes.