Luthor is a performant, type-safe and Lexical Based node package built for modern JS frameworks like ReactNext.js and Astro.
Crafted with ❤️ by developers for developers who want control without chaos. Zero fluff. No paywalls. No nonsense.
Fully open source. Fully free. Ready for your next project.
AI ActionsAppsChatBlogEmailTeams
Loading editor runtime...
Luthor vs Luthor Headless
Pick the package that matches how quickly you want to ship and how much UI control you need.
Luthor Headless
Full Control
@lyfie/luthor-headless
Composable primitives for teams that want total UI freedom.
Build your exact editor UX
Extensive Customization API
Fine-grained command control
Bring your own design system
Perfect for product-specific flows
Zero dependencies within package for maximum flexibility
Luthor
Full Control + Ready To Ship
@lyfie/luthor
Prebuilt editor presets with extensive customizability
One-liner editor configuration
Single package for all your editor needs
Polished toolbar and extensions
Type-safe framework integration
Built for production speed
Includes Luthor Headless for maximum flexibility
Why Luthor?
Built for teams that need control, reliability, and speed in production editors.
Lightning Performance
Fast typing, stable selection handling, and responsive editor interactions.
Type-Safe Commands
Command APIs are typed so behavior stays predictable as your codebase grows.
Extensible
Add nodes, commands, and product-specific behavior without fighting the editor core.
React-First Design
Built to fit naturally into modern React apps and component workflows.
Production Ready
Designed for real shipping use-cases, not demo-only editor surfaces.
Developer Experience
Clear APIs and practical defaults help teams move faster with less friction.
TypeScript Support Integrated
Strong TypeScript support is built in across editor primitives and utilities.
JSON Data Read
Structured editor state can be consumed and processed cleanly as JSON data.
Features
This is where it gets fun, click through to see the full list of features and how they can help you build your next editor experience.
Loading feature previews...
Frequently asked questions.
Which package should I start with?+
Start with @lyfie/luthor for the fastest setup. Use @lyfie/luthor-headless when you need full custom UI control.
How customizable is the all-inclusive @lyfie/luthor package?+
yes.
Can I ship this in a commercial app?+
Yes. It is MIT licensed and free for commercial use.
How fast can I get an editor on screen?+
Usually in minutes. Install @lyfie/luthor, import styles, and render ExtensiveEditor.
Do I need Lexical setup for @lyfie/luthor?+
@lyfie/luthor comes with everything you need out of the box. No extra setup is needed. However, @lyfie/luthor-headless is where you manage Lexical-level package composition.
Can I switch from preset to headless later?+
Yes. Start with @lyfie/luthor and move to @lyfie/luthor-headless as your product needs deeper customization. Since @lyfie/luthor exports all the headless primitives as well, you can incrementally replace preset components with headless ones without a full rewrite.
What data format should I persist?+
Use JSON for reliable round trips and database-friendly storage. But you can also export HTML or Markdown if that suits your use case better.
Is TypeScript support first-class?+
Yes. The API surface is TypeScript-first for safer integrations and extension work.
Built On Modern. Built For Modern.
Current npm package telemetry plus compatibility targets for modern JavaScript applications.