A React framework for building customizable rich text editors with an immutable model.
Draft.js is a JavaScript rich text editor framework built for React and backed by an immutable model. It provides the building blocks for creating customizable rich text composition experiences, from basic text styles to embedded media, abstracting away the complexities of rendering, selection, and input behavior.
React developers building applications that require rich text editing features, such as content management systems, comment inputs, note-taking apps, or messaging platforms.
Developers choose Draft.js for its seamless integration with React, declarative API, and extensible architecture that allows deep customization while leveraging immutable data structures for performance and predictable state management.
A React framework for building text editors.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Draft.js uses a declarative API that abstracts rendering and input behavior, fitting naturally into React applications as shown in the hook-based example in the README.
It provides building blocks for diverse experiences, from basic text styles to embedded media, allowing deep customization as emphasized in the key features.
Built on Immutable.js, it offers functional state updates and scalable memory usage, which is highlighted for performance and predictable data handling.
Used in production on Facebook for status inputs, Notes, and messenger.com, adding credibility and real-world testing.
The project is in maintenance mode with no feature updates, only critical security patches, and will be archived soon, making it unsuitable for new projects needing future support.
Known problems with IE/Edge for IME inputs and incomplete mobile browser support, especially on Android, as documented in the browser support table.
Requires manual CSS styling and wrapper divs for basic visuals, as seen in the examples where minimum height and borders are set externally.
Recent API changes for Entity storage require migration efforts, adding complexity for existing users as noted in the API notice section.