Tiptap Version 4.0.0 - Idea Hub #7856
Replies: 7 comments 25 replies
-
Idea 1: Consolidate all Tiptap extensions, framework integrations and the ProseMirror wrapper into one packageClick here to read the whole ideaOne very controversial idea I had was to move extensions into one big package that is tree-shakable. Basically having imports like:
Here are some pros and cons I see about this: Pros
Cons
Overall I think it would be a nice idea, the only thing I bother about is:
Let's discuss this below. |
Beta Was this translation helpful? Give feedback.
-
Idea 2: Move absolutely-required extensions into coreClick here to read the whole ideaThis is somewhat related to idea 1. Right now, to get a working editor to run, users need to do the following things: # with starter kit
npm install @tiptap/core @tiptap/starter-kit @tiptap/pm
# without
npm install @tiptap/core @tiptap/extension-document @tiptap/extension-text @tiptap/extension-paragraph @tiptap/pm
And then import { Editor } from '@tiptap/core'
import { Document } from '@tiptap/extension-document'
import { Paragraph } from '@tiptap/extension-paragraph'
import { Text } from '@tiptap/extension-text'
const editor = new Editor({
element: document.getElementById('editor'),
extensions: [Document, Paragraph, Text]
})I think I don't even have to explain what's the problem here. It's very verbose and just too much. Tiptap itself should already work out of the box with just one package. And since almost all packages require the In the Tiptap # we would strip document, paragraph and text extensions from the starter-kit
# so they don't get registered twice if it is used
npm install @tiptap/core
and import { Editor } from '@tiptap/core'
const editor = new Editor({ element: document.getElementById('editor') })In my opinion, this is way cleaner and easier to understand. I'm not sure if we can somehow move the ProseMirror dependencies right into the One big question would be - how can I extend, configure or overwrite Configure via object:import { Editor } from '@tiptap/core'
const editor = new Editor({
// we just confiugure the core extensions like this
coreExtensions: {
paragraph: {
HTMLAttributes: {
class: 'my-paragraph',
},
},
},
extensions: [
Bold,
Italic,
],
})Configure via Extension.configure:import {
Editor,
ParagraphExtension,
} from '@tiptap/core'
const editor = new Editor({
coreExtensions: {
// pass in the new extension instance via configure here
paragraph: ParagraphExtension.configure({
HTMLAttributes: {
class: 'my-paragraph',
},
}),
},
extensions: [
Bold,
Italic,
],
})Extending a core extensionimport {
Editor,
ParagraphExtension,
} from '@tiptap/core'
// extend just like you always used to
const CustomParagraph = ParagraphExtension.extend({
addAttributes() {
return {
...this.parent?.(),
variant: {
default: null,
parseHTML: element => element.getAttribute('data-variant'),
renderHTML: attributes => {
if (!attributes.variant) {
return {}
}
return {
'data-variant': attributes.variant,
}
},
},
}
},
})
const editor = new Editor({
coreExtensions: {
// pass in your extended extension here
paragraph: CustomParagraph,
},
extensions: [
Bold,
Italic,
],
})Replacing a core extension with another extension:import {
Editor,
Node,
ParagraphExtension,
} from '@tiptap/core'
// Your custom extension
const CustomDocument = Node.create({
name: 'document',
topNode: true,
content: 'heading block+',
})
const editor = new Editor({
coreExtensions: {
// overwrite it here
document: CustomDocument,
// configure others like this
paragraph: ParagraphExtension.configure({
HTMLAttributes: {
class: 'paragraph',
},
}),
},
extensions: [
Heading,
Bold,
],
}) |
Beta Was this translation helpful? Give feedback.
-
Idea 3: Deprecate
|
Beta Was this translation helpful? Give feedback.
-
Idea 4: First-class Svelte 5 supportClick here to read the whole ideaWith Svelte 5 continuing to grow, it could be interesting to explore first-class support for it in Tiptap. Since Svelte works very well with vanilla JavaScript libraries, Tiptap is already a pretty natural fit. A dedicated package could focus mostly on improving DX and integrating more cleanly with Svelte-specific patterns rather than wrapping everything in framework abstractions. One particularly interesting area is Svelte 5 Attachments. Tiptap could potentially expose attachment factories that make editor setup extremely concise while also leveraging Svelte’s lifecycle and reactivity system efficiently. There are also opportunities around modern Svelte features like effects, remote functions, streaming, and better client/server state handling for collaborative or AI-driven editors. At the same time, there are some obvious tradeoffs:
Feels like the main question is whether there’s enough value in a first-party integration beyond what vanilla Tiptap already provides. Let's discuss below: |
Beta Was this translation helpful? Give feedback.
-
Idea 5: Support rendering Tiptap inside an iframeClick here to read the whole ideaOne interesting direction could be better support for rendering Tiptap inside an iframe. The main benefit would be proper isolation between the editor and the host application. App styles would no longer accidentally leak into editor content, and editor styles would stay fully contained as well. It could also help with JavaScript isolation and make embedding editors into larger or more complex applications feel more predictable. There are also some existing integration issues around iframe support today. For example, plugins sometimes use the global I already opened a discussion about this earlier here: #7419 Let's discuss below: |
Beta Was this translation helpful? Give feedback.
-
Idea 6: Explore Tiptap for React NativeClick here to read the whole ideaThis is probably a long shot, but it could be worth exploring whether Tiptap can support React Native in some form. Mobile apps are becoming more interesting again, especially with AI products. A lot of writing, editing, reviewing, and collaboration workflows are moving beyond desktop web apps. Since Tiptap and ProseMirror are built around the DOM, proper React Native support would not be trivial. But even a limited approach could be useful, for example through better WebView support, shared schemas, or guidance for teams that want to use Tiptap in mobile apps. The main question is what level of React Native support would actually make sense. Let's discuss below: |
Beta Was this translation helpful? Give feedback.
-
Idea 7: Make
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey Community!
I am thinking more and more about what could be next for Tiptaps next major release and I wanted to discuss this with you. Below you will find some of my ideas that I'd love to discuss. Remind yourself that those ideas are just ideas, nothing is really decided on and we can always change things up.
Before v4 I will probably work and finish of the Decorations and Migrations API. So let's discuss until then what you guys want to see.
Beta Was this translation helpful? Give feedback.
All reactions