Portable Text Editor Monorepo

July 6, 2026 · View on GitHub

Portable Text Logo

Portable Text Editor Monorepo

Portable Text is an open specification for structured block content. Rich text, images, code blocks, and any custom type you define, stored as JSON and renderable anywhere.

This monorepo contains @portabletext/editor, the officially supported editor for working with Portable Text content. It's a headless, schema-driven block content editor for React: you bring the UI, the editor handles the editing. The other packages in this repository support editor work, including schema definition, toolbar hooks, plugins, conversion to and from HTML and Markdown, and testing utilities.

Looking to render Portable Text? The renderers (@portabletext/react, @portabletext/to-html, and friends) live in separate repositories. See Render Portable Text for the full picture.

For documentation and guides, visit portabletext.org. To try the editor, head to the Portable Text Playground.

Portable Text Playground

Core

PackageDescription
@portabletext/editorThe official editor for editing Portable Text
@portabletext/schemaDefine and compile Portable Text schemas with full type safety
@portabletext/toolbarReact hooks for building toolbars and related UI components

Editor plugins

PackageDescription
@portabletext/plugin-character-pair-decoratorAutomatically match a pair of characters and decorate the text in between
@portabletext/plugin-dndTrack the drop position during drag and drop for custom drop indicators
@portabletext/plugin-emoji-pickerEasily configure an Emoji Picker for the Portable Text Editor
@portabletext/plugin-input-ruleEasily configure Input Rules in the Portable Text Editor
@portabletext/plugin-list-indexCompute the list index of each list item for custom list rendering
@portabletext/plugin-markdown-shortcutsAdd helpful Markdown shortcuts to the editor
@portabletext/plugin-one-lineRestrict the Portable Text Editor to a single line
@portabletext/plugin-paste-linkAllow pasting links in the Portable Text Editor
@portabletext/plugin-sdk-valueConnect a Portable Text Editor with a Sanity document using the SDK
@portabletext/plugin-tableTables as real Portable Text, edited with spreadsheet-grade selection
@portabletext/plugin-typeahead-pickerBuild typeahead pickers (emoji, mentions, slash commands)
@portabletext/plugin-typographyAutomatically transform text to typographic variants

Other libraries

PackageDescription
@portabletext/htmlConvert HTML to Portable Text
@portabletext/block-toolsSanity-flavored HTML to Portable Text (wraps @portabletext/html)
@portabletext/markdownConvert Portable Text to Markdown and back again
@portabletext/keyboard-shortcutsPlatform-aware keyboard shortcuts
@portabletext/sanity-bridgeConvert between Sanity schemas and Portable Text schemas
@portabletext/patchesApply Sanity patches to a value
@portabletext/testTesting utilities for the Portable Text Editor
racejarA testing framework agnostic Gherkin driver

Contributing

This is a pnpm and Turborepo monorepo.

pnpm install   # install dependencies
pnpm build     # build every package

Run pnpm test for the test suites and pnpm check:types, pnpm check:lint, and pnpm check:format for the checks CI runs.

License

MIT © Sanity.io