← Back to archive

Repo of the Day

fatemehkarimi/theodore: Emoji-friendly content editable editor 🤪🥰👌

Published: Sep 2, 2026

Open repository ↗

Emoji-friendly content editable editor 🤪🥰👌

Summary

Theodore is a React component that wraps a content-editable text input and focuses on consistent emoji rendering across browsers. It also provides inline suggestions and undo support for both text and emoji edits, and is distributed as the npm package theodore-js under an MIT license.

What it is useful for

The library targets web interfaces that need a text input where emoji behavior does not break across browsers. Native contenteditable elements and <textarea> fields tend to render emoji inconsistently between Chrome, Safari, Firefox, and Edge, so Theodore is useful when an engineer needs predictable appearance without manually styling each platform's emoji font.

It is also useful when the product wants features beyond plain text entry: inline suggestions for an autocomplete-like experience inside the input, and undo that covers emoji edits as well as text edits. The README also lists "custom emoji assets and renderers" as a feature, which makes it applicable when a team wants to substitute its own emoji set or renderer instead of relying on the host operating system.

How engineers can use it

The project is published to npm under the name theodore-js, based on the npm version badge in the README. The README itself does not include explicit installation commands or code snippets beyond that badge, so the canonical setup, component props, and examples live on the documentation site linked from the README (https://theodore-js.dev/docs) and the playground at https://theodore-js.dev.

Once installed, the typical flow implied by the documented feature set is:

  • Render the component as a content-editable input inside a React application.
  • Configure inline suggestions by wiring a suggestion source into the component, following the API in the docs.
  • Optionally supply custom emoji assets and a renderer to replace the default behavior.
  • Rely on the built-in undo behavior for both text and emoji edits rather than implementing it manually.

The README does not state browser version requirements, minimum React version, bundle size, accessibility behavior, or known limitations, so those details should be confirmed in the documentation before adopting the library in production.