Official CKEditor 5 rich text editor component for React.
See the "Rich text editor component for React" guide in the CKEditor 5 documentation to learn more:
Note
This project requires pnpm v10 or higher. You can check your version with pnpm --version and update if needed with npm install -g pnpm@latest.
After cloning this repository, install necessary dependencies:
pnpm installIf you need to run tests or demos with a commercial license, copy .env.example to .env and fill in the required CKEDITOR_* variables.
Keep .env local only. In CI, provide the same value via the CKEDITOR_LICENSE_KEY environment variable.
To manually test the editor integration with different versions of React, you can start the development server using one of the commands below:
pnpm run dev:16 # Open the demo projects using React 16.
pnpm run dev:17 # Open the demo projects using React 17.
pnpm run dev:18 # Open the demo projects using React 18.
pnpm run dev:19 # Open the demo projects using React 19.To run the full automated test suite, use:
pnpm run testTo run only the real-editor integration suite used by the CI version matrix, use:
pnpm exec vitest run --project integrationThis command runs the integration subset against the ckeditor5 and ckeditor5-premium-features versions currently installed in node_modules.
After a regular pnpm install, that means the default dependency versions from package.json, not the LTS version from the CI matrix.
To reproduce an LTS matrix run locally, install the matching lts-v* packages first and provide CKEDITOR_LICENSE_KEY, just like the CI job does:
pnpm add -D ckeditor5@lts-v* ckeditor5-premium-features@lts-v*
CKEDITOR_LICENSE_KEY=<your-key> pnpm exec vitest run --project integrationIf you want to run the tests in watch mode, use the following command:
pnpm run test:watchTo build the package that is ready to publish, use the following command:
pnpm run buildCircleCI automates the release process and can release both channels: stable (X.Y.Z) and pre-releases (X.Y.Z-alpha.X, etc.).
Before you start, you need to prepare the changelog entries.
- Make sure the
#masterbranch is up-to-date:git fetch && git checkout master && git pull. - Prepare a release branch:
git checkout -b release-[YYYYMMDD]whereYYYYMMDDis the current day. - Generate the changelog entries:
pnpm run release:prepare-changelog.- You can specify the release date by passing the
--dateoption, e.g.,--date=2025-06-11. - By passing the
--dry-runoption, you can check what the script will do without actually modifying the files. - Read all the entries, correct poor wording and other issues, wrap code names in backticks to format them, etc.
- Add the missing
the/aarticles,()to method names, "it's" -> "its", etc. - A newly introduced feature should have just one changelog entry – something like "The initial implementation of the FOO feature." with a description of what it does.
- You can specify the release date by passing the
- Commit all changes and prepare a new pull request targeting the
#masterbranch. - Ping the
@ckeditor/ckeditor-5-platformteam to review the pull request and trigger the release process.
Licensed under a dual-license model, this software is available under:
- the GNU General Public License Version 2 or later,
- or commercial license terms from CKSource Holding sp. z o.o.
For more information, see: https://ckeditor.com/legal/ckeditor-licensing-options.