---
title: "Presets and features"
description: "Which features each preset contains, which backend it needs and which modules its bundle must not contain."
canonical_url: "https://skaile-ai.github.io/forge-editor/reference/presets-and-features"
---
# Presets and features

> Which features each preset contains, which backend it needs and which modules its bundle must not contain.

<table>
<thead>
  <tr>
    <th>
      Preset
    </th>
    
    <th>
      Features
    </th>
    
    <th>
      Backend / Yjs
    </th>
    
    <th>
      Bundle isolation (<code>
        check:editor-entries
      </code>
      
      )
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        simple
      </code>
      
       (<code>
        SimpleEditor
      </code>
      
      , <code>
        simpleEditor()
      </code>
      
      )
    </td>
    
    <td>
      <code>
        core
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      no feature, integration, AI SDK, Yjs, y-tiptap, Hocuspocus, Nuxt or server modules in the emitted chunks
    </td>
  </tr>
  
  <tr>
    <td>
      React <code>
        SimpleEditor
      </code>
      
       + <code>
        EditorToolbar
      </code>
      
       (<code>
        ./react/simple
      </code>
      
      , <code>
        ./react
      </code>
      
      )
    </td>
    
    <td>
      <code>
        core
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      no <code>
        vue
      </code>
      
      , <code>
        @vue
      </code>
      
      , <code>
        @tiptap/vue-3
      </code>
      
      , Nuxt UI or Vue-layer module in the emitted chunks (<code>
        react-simple
      </code>
      
       fixture); the headless core (<code>
        core-headless
      </code>
      
       fixture) contains no Vue, React or layer module at all
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        mediaFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        media
      </code>
    </td>
    
    <td>
      uploads only (a backend with <code>
        assets
      </code>
      
      )
    </td>
    
    <td>
      no Typed block, AI, Yjs, Nuxt or sibling-feature modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        mentionsFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        mentions
      </code>
    </td>
    
    <td>
      built-in <code>
        @
      </code>
      
      /<code>
        #
      </code>
      
       lists only (or host lists)
    </td>
    
    <td>
      same
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        transcriptFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        transcript
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      same
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        authorsFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        authors
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      same
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        themesFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        themes
      </code>
    </td>
    
    <td>
      <code>
        /api/editor/themes[/:id]
      </code>
      
       (adapter <code>
        listThemes
      </code>
      
      /<code>
        loadTheme
      </code>
      
      )
    </td>
    
    <td>
      no Typed block, AI, media, mentions, transcript, authors, comments, collaboration, block-UI, integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        collabFeature()
      </code>
      
       + <code>
        commentsFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        collab
      </code>
      
      , <code>
        comments
      </code>
    </td>
    
    <td>
      <code>
        /collab/:id
      </code>
      
       websocket (comments live in the Y.Doc)
    </td>
    
    <td>
      no Typed block, AI, media, mentions, transcript, authors, block-UI, integration or Nuxt modules; Yjs is bundled
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        aiFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        ai
      </code>
    </td>
    
    <td>
      <code>
        /api/ai/{models,generate,chat,complete}
      </code>
      
       (see <a href="https://skaile-ai.github.io/forge-editor/guides/ai">
        AI
      </a>
      
      )
    </td>
    
    <td>
      no Typed block, transcript, media, mentions, collaboration, integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        media
      </code>
      
       + <code>
        composites
      </code>
      
       + <code>
        aiFeature()
      </code>
      
       + <code>
        compositeAiFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        media
      </code>
      
      , <code>
        composites
      </code>
      
      , <code>
        ai
      </code>
      
      , <code>
        composite-ai
      </code>
    </td>
    
    <td>
      AI endpoints plus <code>
        /api/ai/extract
      </code>
    </td>
    
    <td>
      no transcript, mentions, collaboration, other integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        transcriptFeature()
      </code>
      
       + <code>
        aiFeature()
      </code>
      
       + <code>
        transcriptAiFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        transcript
      </code>
      
      , <code>
        ai
      </code>
      
      , <code>
        transcript-ai
      </code>
    </td>
    
    <td>
      AI endpoints plus <code>
        /api/ai/transcript-cleanup
      </code>
    </td>
    
    <td>
      no Typed blocks, media, mentions, collaboration, other integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        collabFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        collab
      </code>
    </td>
    
    <td>
      <code>
        /collab/:id
      </code>
      
       websocket (Nuxt module) or any Hocuspocus server on the advanced schema
    </td>
    
    <td>
      no Typed block, AI, media, mentions, block-UI, integration or Nuxt modules; Yjs is bundled
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        blockUiFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        block-ui
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      no Typed block, AI, media, mentions, collab-feature or Nuxt modules (the drag handle's upstream package bundles Yjs support code)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        compositeFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        composites
      </code>
    </td>
    
    <td>
      none
    </td>
    
    <td>
      no AI, media, transcript, mentions, collaboration, block-UI, integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        composites
      </code>
      
       + <code>
        transferFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        composites
      </code>
      
      , <code>
        transfer
      </code>
    </td>
    
    <td>
      none (<code>
        copy
      </code>
      
       only; the AI transforms <code>
        summary
      </code>
      
       and <code>
        bullets
      </code>
      
       come from <code>
        integrations/composite-ai
      </code>
      
      , which <code>
        composeEditor
      </code>
      
       adds with <code>
        ai
      </code>
      
       on)
    </td>
    
    <td>
      no AI, media, transcript, mentions, collaboration, integration, Yjs or Nuxt modules in the framework-free <code>
        transfer
      </code>
      
       entry; its bindings add their framework's layer only
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        core
      </code>
      
       + <code>
        media
      </code>
      
       + <code>
        composites
      </code>
      
       + <code>
        compositeMediaFeature()
      </code>
    </td>
    
    <td>
      <code>
        core
      </code>
      
      , <code>
        media
      </code>
      
      , <code>
        composites
      </code>
      
      , <code>
        composite-media
      </code>
    </td>
    
    <td>
      uploads only
    </td>
    
    <td>
      no AI, transcript, mentions, collaboration, other integration, Yjs or Nuxt modules
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        DocumentTree
      </code>
      
       (<code>
        ./tree/vue
      </code>
      
       or <code>
        ./tree/react
      </code>
      
      ) beside <code>
        core
      </code>
      
       + <code>
        media
      </code>
      
       + <code>
        composites
      </code>
    </td>
    
    <td>
      tree, <code>
        core
      </code>
      
      , <code>
        media
      </code>
      
      , <code>
        composites
      </code>
    </td>
    
    <td>
      the host's <code>
        DocumentStore
      </code>
    </td>
    
    <td>
      no AI, transcript, mentions, collaboration, block-UI, integration, Yjs or Nuxt modules; the <code>
        simple
      </code>
      
       bundle never contains the tree; the React tree contains no Vue module (<code>
        tree-react
      </code>
      
       fixture), the framework-free <code>
        ./tree
      </code>
      
       no Vue and no React (<code>
        headless-tree
      </code>
      
       fixture)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        advancedEditor()
      </code>
      
       / <code>
        AdvancedEditor
      </code>
      
       (<code>
        ./vue/advanced
      </code>
      
      )
    </td>
    
    <td>
      every feature (including <code>
        themes
      </code>
      
      ) and integration, Vue bindings
    </td>
    
    <td>
      <code>
        /collab/:id
      </code>
      
      , AI endpoints, assets, users/tags, themes (Nuxt module plus a host adapter, or a host server)
    </td>
    
    <td>
      requires all feature and integration modules; no React, <code>
        sonner
      </code>
      
      , Nuxt, <code>
        nitropack
      </code>
      
      , <code>
        h3
      </code>
      
      , vue-router or server code in the browser bundle (<code>
        advanced
      </code>
      
       fixture)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        advancedEditor()
      </code>
      
       / <code>
        AdvancedEditor
      </code>
      
       (<code>
        ./react/advanced
      </code>
      
      )
    </td>
    
    <td>
      every feature (including <code>
        themes
      </code>
      
      ) and integration, React bindings
    </td>
    
    <td>
      the same endpoints, through the Nuxt host or a host server (<code>
        examples/react-advanced
      </code>
      
       proxies <code>
        /api
      </code>
      
       and <code>
        /collab
      </code>
      
       to the Nuxt app)
    </td>
    
    <td>
      requires all feature and integration modules; no <code>
        vue
      </code>
      
      , <code>
        @vue
      </code>
      
      , <code>
        @tiptap/vue-3
      </code>
      
      , Nuxt UI, Vue-layer or <code>
        .vue
      </code>
      
       module, no Nuxt or server code (<code>
        advanced-react
      </code>
      
       fixture)
    </td>
  </tr>
  
  <tr>
    <td>
      Any feature on one layer (<code>
        <x>/vue
      </code>
      
      , <code>
        <x>/react
      </code>
      
      , <code>
        <x>
      </code>
      
       alone)
    </td>
    
    <td>
      <code>
        core
      </code>
      
       + that feature
    </td>
    
    <td>
      as listed above
    </td>
    
    <td>
      <code>
        <x>-react
      </code>
      
       fixtures contain no Vue or Nuxt UI module; the Vue fixtures no React, <code>
        react-dom
      </code>
      
       or <code>
        sonner
      </code>
      
      ; the framework-free <code>
        headless-<x>
      </code>
      
       fixtures neither framework
    </td>
  </tr>
</tbody>
</table>

Settings are stored as one inert, versioned JSON object shared by all editors of an app (`EditorSettings`); a simple editor installs no feature that reads the non-core parts.

`core` is configurable (`CoreContentOptions`: `headings` or heading `levels`, `lists`, `blockquote`, `codeBlock`, `rule`): `coreContentFeature(options)` and `composeEditor({ coreContent })` take it, and the schema-extension list the server derives from the preset follows, so editor and server schema cannot drift. Bundle isolation is unaffected: the options only change which StarterKit extensions are configured.


## Sitemap

See the full [sitemap](https://skaile-ai.github.io/forge-editor/sitemap.md) for all pages.
