Visually distinguish Server Components and Client Components in React / Next.js projects directly in your editor.
In Next.js App Router and React Server Components, the boundary between server and client execution is critical for performance and bundle size. But JSX like <MyComponent /> gives no visual cue about where it runs.
React Component Lens solves this by coloring component tags based on whether the imported file contains "use client".
The extension uses the shared Rust analysis core from the React Component Lens workspace. packages/core is the single implementation; packages/core-wasm builds it with wasm-pack --target nodejs so VS Code can load the same analyzer as WebAssembly. Zed consumes the same core natively through the rcl-lsp binary.
- Loads the bundled Rust WASM core (
core_wasm.jsandcore_wasm_bg.wasm) - Parses the active
.tsx/.jsxfile for JSX tags - Resolves each import to its source file (supports relative paths,
tsconfigpath aliases, and barrel re-exports) - Detects
"use client"at the top of the resolved file - Colors the tag shell (
<Component,>,/>,</Component>) — props are left untouched
Components without "use client" are treated as Server Components.
| Setting | Default | Description |
|---|---|---|
reactComponentLens.enabled |
true |
Enable or disable decorations |
reactComponentLens.debounceMs |
200 |
Delay before recomputing after changes (0 – 2000 ms) |
reactComponentLens.scope.element |
true |
Highlight JSX element tags (<Component />, </Component>) |
reactComponentLens.scope.declaration |
true |
Highlight component declaration names (function, class, variable) |
reactComponentLens.scope.export |
true |
Highlight component names in export declarations |
reactComponentLens.scope.import |
true |
Highlight component names in import declarations |
reactComponentLens.scope.type |
true |
Highlight TypeScript interface and type alias declaration names |
reactComponentLens.highlightColors.clientComponent |
#14b8a6 |
Text color for Client Component tags |
reactComponentLens.highlightColors.serverComponent |
#f59e0b |
Text color for Server Component tags |
Colors can be any valid CSS color string. The VS Code Settings UI shows a color picker for these fields.
| Command | Description |
|---|---|
React Component Lens: Refresh Decorations |
Clear caches and reapply decorations |
- VS Code 1.14.0 or later
- A project with
.tsxor.jsxfiles
No additional runtime, build step, or Next.js installation is required.
MIT
