Run VS Code extensions in coc.nvim without source forks.
Browse available extensions →
:CocInstall coc-vscode-loader
:CocCommand loader.openBrowse, install, and manage extensions through the TUI — or define them in your config:
" .vimrc
let g:coc_loader_global_extensions = ['vscode-pyright', 'vscode-eslint']VS Code extensions consist of a thin API client and often a language server (LSP). Instead of patching source code by hand, coc-vscode-loader intercepts VS Code API calls at install time and rewrites them to coc.nvim equivalents. The extension runs unmodified.
The converter pipeline: git clone → AST transforms → LanguageClient injection → npm install → esbuild → register to coc.
5 step generators handle different plugin types (language-client, source, bridge, snippets, mark-unsupported), and 6 AST transforms handle API mapping (import-mapping, class-to-factory, provider-register, enum-offset, language-client, strip-volar).
What works: language servers (completion, diagnostics, formatting, hover, go-to-definition), direct-API plugins, snippets.
Not yet supported: extensions depending on VS Code-specific UI (webviews, panels, custom editors).
- coc-vscode-loader — Converter CLI + Plugin TUI. Converts VS Code extensions to coc.nvim plugins at install time, with a Mason-style package manager. Supports binary server download, Go/Rust source compilation, pip packages, and VSIX prebuilt extraction. Daily CI monitors 134 upstream repos for API-breaking changes.
- coc-vscode-registry — Extension registry + browseable website. Each entry specifies source, plugin type, server kind, conversion steps, and system dependencies. See the live site.
Converted VS Code extensions maintained under this organization:
Language servers — coc-nix · coc-mlir · coc-meson · coc-bitbake · coc-awk · coc-graphviz · coc-alex · coc-write-good
Utilities — coc-variables · coc-nerdfont · coc-emoji-shortcodes · coc-license
The registry is community-driven. To add a new extension:
- Check if the converter can handle it (most LSP-based extensions work out of the box)
- Fork
coc-vscode-registry, add an entry toregistry.json - Run
npm run test:smoketo validate the conversion - Open a PR
The registry update checker runs daily — if the upstream extension changes, an automated PR is created with the updated output.