DemoDocsPlaygroundGitHub

An extensible rich text editor framework built on Lexical. Ship faster with production-ready defaults and TypeScript-first APIs.

Documentation

IntroductionInstallation@lyfie/luthor-headless@lyfie/luthor

Resources

DemoFeaturesPlaygroundGitHubluthor @ npmluthor-headless @ npm

Support the Project

Buy me a coffeeStar on GitHub

Built with ❤️ by Lyfie.org

HomeDocsFeaturesDemodev.toMediumGitHubllms.txtllms-full.txt
  1. Home
  2. Docs
  3. Integrations
  4. Next.js Integration

Luthor Documentation

Start Here

  • Getting Started
  • Installation
  • Dependencies
  • Capabilities
  • Quickstart: @lyfie/luthor
  • Quickstart: @lyfie/luthor-headless
  • AI Agents and Vibe Coding

@lyfie/luthor (Presets)

  • @lyfie/luthor Overview
  • @lyfie/luthor Architecture
  • Feature Flags
  • Props Reference
  • Presets Catalog
  • Extensive Editor
  • Compose Editor
  • Simple Editor
  • Legacy Rich Editor
  • Markdown Editor
  • HTML Editor
  • Slash Editor
  • Headless Editor Preset
  • Commands Reference

@lyfie/luthor-headless (Runtime)

  • @lyfie/luthor-headless Overview
  • @lyfie/luthor-headless Architecture
  • Extensions and API
  • Metadata Comment System
  • Features
  • Typography and Text
  • Structure and Lists
  • Media and Embeds
  • Code and Devtools
  • Interaction and Productivity
  • Customization and Theming
  • Extensions Reference
  • Nodes and Bridges Reference

Integrations

  • React Integration
  • Next.js Integration
  • Astro Integration
  • Remix Integration
  • Vite Integration

Reference Indexes

  • Search Guide
  • Exports Map
  • Preset Selector

Contributing

  • Contributor Guide

Package: integrationsType: integrationSurface: tooling

Next.js Integration

Next.js works well when the editor is rendered in a client component.

What works

  • Client components with preset package CSS import.
  • Dynamic import when you need explicit client-only rendering boundaries.

Install

npm install @lyfie/luthor
tsx
'use client';

import '@lyfie/luthor/styles.css';
import { ExtensiveEditor } from '@lyfie/luthor';

export default function EditorClient() {
  return <ExtensiveEditor placeholder="Write here..." />;
}

Caveats

  • Keep editor components inside client boundaries.
  • For heavy routes, use dynamic(() => import(...), { ssr: false }) when needed.

Related docs

  • @lyfie/luthor Presets
  • @lyfie/luthor-headless Overview
Previous: React Integration
Next: Astro Integration

On this page

  • What works
  • Install
  • Caveats
  • Related docs