React Installation
@editor42/editor42-react is a thin wrapper around Editor42 that makes it a React component. There is no account, no sign-up and no key of any kind.
Install
npm install @editor42/editor42-react
or for Yarn users:
yarn add @editor42/editor42-react
React 16.7 and newer are supported, up to React 19.
Basic Setup
import { Editor } from '@editor42/editor42-react';
export default function App() {
return (
<Editor
initialValue="<p>Hello from Editor42</p>"
init={{ height: 400 }}
/>
);
}
With no extra props the editor script is loaded from https://cdn.editor42.com on the latest channel. That pointer only ever moves for security and bug-fix releases, because the Editor42 major version is fixed forever.
Reading and Writing the Content
Pass value and onEditorChange to control the editor from your own state:
import { useState } from 'react';
import { Editor } from '@editor42/editor42-react';
export default function App() {
const [content, setContent] = useState('<p>Hello from Editor42</p>');
return (
<Editor
value={content}
onEditorChange={(newContent) => setContent(newContent)}
init={{ height: 400, plugins: 'lists link', toolbar: 'bold italic | bullist link' }}
/>
);
}
Use initialValue instead when you only need a starting point and will read the content later.
Self-Hosting
Point the component at your own copy of the script, using the full file URL:
<Editor editor42ScriptSrc="/js/editor42/editor42.min.js" />
An array is accepted for loading the editor plus separate bundles, and array items may set integrity and crossOrigin for CSP-hardened deployments. Passing an empty array opts out of script loading entirely, for pages that load the editor themselves.
Pinning a Version
<Editor channel="42.0.0" />
channel accepts latest, a latest-N alias, or an exact version.
Editor Options
Everything else is an Editor42 option, passed through init:
<Editor init={{ height: 400, menubar: false, plugins: 'lists link' }} />
See the Configuration Options for the full list.
Migrating from @tinymce/tinymce-react
npm uninstall @tinymce/tinymce-react
npm install @editor42/editor42-react
Change the import to @editor42/editor42-react and you are done. Prop, event and component names are unchanged, and the old tinymceScriptSrc and cloudChannel props keep working as deprecated aliases of editor42ScriptSrc and channel.
All API-key and licence-key handling has been removed. The corresponding props are still accepted so existing code compiles, but they do nothing: no key is read, stored or sent anywhere, and no request ever reaches a vendor cloud.
The component also drives a stock TinyMCE if that is what is already loaded on the page, which keeps the switch reversible.
See the migration guide for the editor side of the move.
Live Demo
See it running, with its full source: the React demo.
Links
- NPM:
@editor42/editor42-react - GitHub: editor42com/editor42-react