- Node.js 20+
- npm 9+
- JDK 21 (for IntelliJ plugin development)
# Clone the repository
git clone https://github.com/blazejkustra/react-compiler-marker.git
cd react-compiler-marker
# Install dependencies
npm installpackages/
server/ # LSP server (TypeScript)
vscode-client/ # VS Code extension (TypeScript)
intellij-client/ # WebStorm/IntelliJ plugin (Kotlin)
The LSP server is shared by all clients. It handles React Compiler analysis and provides language server protocol support.
cd packages/server
npm run build
npm run watchcd packages/vscode-client
# Build extension
npm run compile
# Watch mode
npm run watch
# Run tests
npm run test
# Package for distribution
npm run packageTo debug the extension:
- Open the project in VS Code
- Press F5 to launch Extension Development Host
cd packages/intellij-client
# Build plugin
./gradlew buildPlugin
# Run in development IDE
./gradlew runIde
# The built plugin is at build/distributions/react-compiler-marker-*.zip- TypeScript: ESLint + Prettier (run
npm run prettierfrom root) - Kotlin: Default IntelliJ formatter
# From root - shared checks
npm run typecheck
npm run lint
npm run prettier
# From packages/vscode-client - extension tests
cd packages/vscode-client
npm run testEach client has its own version:
| Package | Version Location |
|---|---|
| VS Code Client | packages/vscode-client/package.json |
| IntelliJ Client | packages/intellij-client/gradle.properties |
| Server | packages/server/package.json |
- Create a GitHub release with tag
vscode-v{version}(e.g.,vscode-v1.3.5) - Add release notes in the release body - these will be added to CHANGELOG.md
- CI will automatically update
package.jsonversion and publish to VS Code Marketplace and Open VSX
- Create a GitHub release with tag
intellij-v{version}(e.g.,intellij-v1.0.0) - Add release notes in the release body - these will be added to CHANGELOG.md
- CI will automatically update
gradle.propertiesversion, build the plugin, and attach it to the release
To add support for a new IDE:
- Create a new package in
packages/(e.g.,packages/neovim-client/) - Use the LSP server via stdio mode:
node server.bundle.js --stdio - Implement the client-side UI for displaying inlay hints
- Add documentation to your client's README
- Update the release workflow if needed
Open an issue on GitHub.