React components for Monaco Editor, powered by @willbooster/monaco-loader.
This package is a maintained fork of suren-atoyan/monaco-react published as @willbooster/monaco-react.
yarn add @willbooster/monaco-reactreact and react-dom are peer dependencies. monaco-editor is a direct dependency for Monaco type resolution. This package supports React 19.x, Node.js 24 or newer, and is tested with Next.js 16.
TypeScript consumers need a moduleResolution of bundler, node16, or nodenext. monaco-editor 0.56.0 exposes its types only through its exports map — its legacy typings field points at a file that is not in the published tarball — so the legacy node10 resolution cannot find them.
'use client';importEditorfrom'@willbooster/monaco-react';exportdefaultfunctionPage(){return<Editorheight="90vh"defaultLanguage="typescript"defaultValue="const answer = 42;"/>;}Editor, DiffEditor, and useMonaco use React client-side hooks. In Next.js App Router projects, import and render them from a Client Component.
importEditor,{DiffEditor,loader,useMonaco}from'@willbooster/monaco-react';Editor: Monaco standalone code editor component.DiffEditor: Monaco standalone diff editor component.useMonaco: React hook returning the initialized Monaco instance after hydration. Wrap components that call it inSuspense.loader: the@willbooster/monaco-loaderinstance used by the components.
<Editorheight="90vh"defaultLanguage="javascript"defaultValue="// hello"onMount={(editor,monaco)=>{editor.focus();monaco.editor.setTheme('vs-dark');}}onChange={(value)=>{console.log(value);}}/><DiffEditorheight="90vh"language="typescript"original="const value = 1;"modified="const value = 2;"/>By default Monaco is loaded from the CDN configured by @willbooster/monaco-loader. You can provide your own Monaco instance or loader paths before rendering an editor.
import*asmonacofrom'monaco-editor';import{loader}from'@willbooster/monaco-react';loader.config({ monaco });yarn install
yarn check-for-ai
yarn testyarn test runs unit tests, builds the library, builds the Next.js e2e app, and runs Playwright against it.