@remirror/core
The extension and manager system that powers Remirror, a ProseMirror-based toolkit for building rich text editors.
Repository Health
Technical Analysis
@remirror/core is the foundation package of Remirror, a React toolkit for building cross-platform rich text editors on top of ProseMirror. It defines the Extension, RemirrorManager, and Framework abstractions that every other Remirror package (bold, italic, mentions, markdown, and dozens more) is built from, along with the built-in presets that wire ProseMirror plugins, keymaps, input rules, and node views into a coherent editor instance.
Rather than exposing ProseMirror’s low-level schema and plugin APIs directly, @remirror/core wraps them in a declarative extension model: each editor feature is authored as a self-contained PlainExtension, NodeExtension, or MarkExtension class with its own options, commands, helpers, and lifecycle hooks, and the RemirrorManager composes an arbitrary set of these extensions into a single ProseMirror EditorState and EditorView. This package is framework-agnostic at its core (the Framework base class is subclassed separately for React and DOM bindings), making it the layer application developers extend when they need editor behavior beyond what a pre-built extension already covers.
What You Get
Extension,PlainExtension,NodeExtension, andMarkExtensionbase classes for declaring editor behavior as self-contained, composable unitsRemirrorManagerfor composing an arbitrary set of extensions into a single ProseMirror schema, state, and view- A built-in preset (
builtinPreset) that wires up commands, keymaps, input rules, paste rules, decorations, node views, and plugin registration automatically - A framework-agnostic
Frameworkbase class that React, DOM, and other UI bindings subclass to connect the manager to a rendering layer - Typed extension lifecycle hooks (
onCreate,onView,onStateUpdate,onDestroy) for hooking into the ProseMirror state lifecycle - Re-exported helpers, constants, and type utilities from
@remirror/core-helpers,@remirror/core-types,@remirror/core-utils, and@remirror/core-constants
Common Use Cases
- Authoring a brand-new Remirror extension for a formatting mark, node type, or editor behavior not covered by an existing package
- Composing a custom editor by assembling only the specific set of Remirror extensions an application needs, rather than pulling in the full
remirrorpreset package - Building a new framework binding (beyond the existing React/DOM support) by subclassing
Frameworkand driving it from the manager’s public API - Reading or writing editor commands and helpers programmatically, e.g. toggling a mark or querying whether a command is currently enabled
Under The Hood
Architecture
The package is organized around three cooperating abstractions: extension/ defines the Extension class hierarchy (extension.ts, base-class.ts) where each extension declares static and dynamic options, commands, helpers, and lifecycle hooks; manager/remirror-manager.ts implements RemirrorManager, which takes a list of extension instances, resolves their declared schema contributions (nodes, marks, plugins) via remirror-manager-helpers.ts, and produces a single ProseMirror EditorState; and framework/framework.ts provides an abstract Framework base class that UI bindings extend to keep the manager in sync with a rendered EditorView. The builtins/ directory supplies a default preset (commands, keymap, input-rules, paste-rules, decorations, node-views, suggest, tags, plugins extensions) that every manager includes unless explicitly excluded, so most editors only need to add feature-specific extensions on top. Changing the core Extension or RemirrorManager contracts would ripple into essentially every other package in the monorepo, since they all subclass these base types.
Tech Stack
Written entirely in TypeScript with nanoevents for a minimal internal event emitter and tiny-warning for dev-mode warnings, with @remirror/pm (a re-packaged ProseMirror) as the underlying editing engine. The package builds via the monorepo’s preconstruct/remirror-cli pipeline (Turborepo-orchestrated) into dual ESM/CJS output with generated .d.ts types, and depends on sibling workspace packages (@remirror/core-constants, -helpers, -types, -utils, @remirror/icons, @remirror/messages) for shared primitives rather than duplicating them.
Code Quality
The package has an extensive __tests__/ directory with dedicated spec files for nearly every built-in extension (commands, keymap, input-rules, paste-rules, node-views, decorations, tags, plugins, and more), run through the monorepo’s Jest configuration with jest-prosemirror/jest-remirror helper packages built specifically for testing ProseMirror-based editors. The codebase is fully typed with extensive use of TypeScript generics to make extension options and command signatures type-safe across the manager composition, uses invariant calls for explicit runtime error handling instead of silent failures, and is enforced by a repo-wide ESLint + Prettier configuration and a CI workflow (ci.yml) that runs lint, typecheck, and test on every change.
What Makes It Unique
Unlike editor toolkits that expose ProseMirror’s schema and plugin system directly, @remirror/core’s extension model lets each editor feature declare its schema contributions, commands, and lifecycle behavior together as one class, and lets the manager resolve priority-ordered composition automatically — including a documented ExtensionPriority system for resolving conflicts when multiple extensions touch the same schema area. This declarative composition, combined with a framework-agnostic core that multiple UI bindings share, is a distinguishing design choice compared to editors that couple their extension API directly to a single rendering framework.
Used by 9 apps in this directory
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.
Meetily
Productivity · AI Assistants
Privacy-first AI meeting assistant that transcribes and summarizes your meetings entirely on your local machine — no cloud, no data leakage.