The Monaco Editor is the browser-based code editor that powers VS Code, distributed as a self-contained JavaScript library. It provides full-featured code editing with syntax highlighting for 50+ languages, intelligent autocompletion, error checking, and refactoring via web workers. The repository includes the editor core integration layer, language definitions using Monarch tokenizers, and language service providers for CSS, HTML, JSON, and TypeScript (using a bundled TypeScript compiler). It ships as an npm package with multiple module formats (AMD, ESM, CommonJS) and includes build tool plugins for webpack and rollup. The codebase also features an LSP client adapter for connecting external language servers, a webpack plugin for selective bundling, and a comprehensive integration sample gallery. Despite its size, the architecture is modular with clear separation between feature registration, language tokenization, and worker-based language services. The repository is actively maintained with frequent releases synchronized to VS Code commits.
This is the `@monaco-editor/react` npm library, a React wrapper for the Monaco Editor (the editor that powers VS Code). The library provides two main components: `Editor` and `DiffEditor`, both fully typed with TypeScript. It handles the asynchronous loading of the Monaco Editor via the `@monaco-editor/loader` package, supports multi-model editing (with path-based model identification and view state persistence), and exposes hooks like `useMonaco` to access the monaco instance outside of the component lifecycle. The internal architecture is clean: a container component manages layout and loading state, custom hooks (`useMount`, `useUpdate`, `usePrevious`) control editor lifecycle and prop changes, and utility functions (`getOrCreateModel`) abstract model management. The build system uses tsup for generating CJS and ESM bundles, and tests are written with vitest and jsdom. The library is actively maintained, supports React 16-19, and has no security vulnerabilities flagged by Dependabot.