{"slug": "tiptap", "name": "Tiptap", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 11, "warners": 1, "score": 3.411, "rising": -0.98, "first": "2026-02-06", "latest": "2026-07-03", "why": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 5, "compare": 2, "warn": 1}, "spark": [0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "kind": "", "icon": true, "domain": "tiptap.dev", "github_repo": null, "official_url": "https://tiptap.dev", "pricing": "", "aliases": ["Tiptap", "TipTap", "tiptap"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 769697720, "item_id": 48106107, "url": "https://news.ycombinator.com/item?id=48106107", "by": "Escapado", "date": "2026-05-12", "stance": "recommend", "quote": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "excerpt": "For the past two years I have worked on a SaaS platform for the education space that we are about to launch (small 2 person start up) - it involves a lot of highly dynamic forms and fairly complex client side state and tons of rather complex components and workflows. The stack for non-specifics we landed on for now coincides with a lot of what is mentioned in the blog post with a few extras: Nextjs, oRPC, Next-Intl, ", "context": "2-person startup, education SaaS", "use_case": "", "switched_from": "", "story": "The Modern React Stack Explained for 2026"}, {"id": 768452688, "item_id": 48028293, "url": "https://news.ycombinator.com/item?id=48028293", "by": "havlenao", "date": "2026-05-05", "stance": "recommend", "quote": "we use Tiptap which handles large documents well", "excerpt": "The mind map view uses D3 flextree for layout calculation, and we render only the visible nodes (virtualization). So even with 200+ nodes, the layout stays smooth. On the text editor side, we use Tiptap which handles large documents well. The Yjs binding is optimized to only sync the delta, not the whole document. We're actively working on further graph editor performance improvements, especially around initial rende", "context": "", "use_case": "Rich text editing", "switched_from": "", "story": "Show HN: Brainio \u2013 Markdown notepad that turns notes into visual mind maps"}, {"id": 759694880, "item_id": 47480930, "url": "https://news.ycombinator.com/item?id=47480930", "by": "artursapek", "date": "2026-03-22", "stance": "recommend", "quote": "ended up building off their Y.js backend, which is great", "excerpt": "I definitely looked at TipTap and ended up building off their Y.js backend, which is great: https://tiptap.dev/docs/hocuspocus/getting-started/overview I wanted to build something canvas-based, so that eliminated most of these options. I also just wanted full control of that part of my stack... it's the core product after all. There are several TipTap/ProseMirror wrappers out there already. You should share yours tho", "context": "", "use_case": "collaborative editor backend", "switched_from": "", "story": "Revise \u2013 An AI Editor for Documents"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 773554178, "item_id": 48347136, "url": "https://news.ycombinator.com/item?id=48347136", "by": "pbjerkeseth", "date": "2026-05-31", "stance": "warn", "quote": "kept running into into issues where the abstractions got in the way", "excerpt": "No problem, I actually went through a similar path of trying milkdown/tiptap/a few others as the core for my own editor needs but kept running into into issues where the abstractions got in the way eventually. I was thinking about using ProseMirror for a custom 'one big text file' concept so I guess Ill close the door on that idea and give this a try.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Atomic Editor \u2013 Obsidian-style live preview for CodeMirror 6"}]}], "who": [{"by": "youngbum", "context": "form builder developer", "url": "https://news.ycombinator.com/item?id=48216483", "date": "2026-05-20"}, {"by": "Escapado", "context": "2-person startup, education SaaS", "url": "https://news.ycombinator.com/item?id=48106107", "date": "2026-05-12"}], "tags": [], "use_cases": ["rich text editing", "rich text editor", "collaborative editor backend", "editor foundation"], "compared": [{"slug": "prosemirror", "name": "ProseMirror", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "yjs", "name": "Yjs", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "react-prosemirror", "name": "react-prosemirror", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48772573", "title": "Wordgard: The new in-browser rich-text editor from the creator of ProseMirror", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48345201", "title": "Show HN: Atomic Editor \u2013 Obsidian-style live preview for CodeMirror 6", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48208834", "title": "item 48208834", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48105772", "title": "The Modern React Stack Explained for 2026", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48019173", "title": "Show HN: Brainio \u2013 Markdown notepad that turns notes into visual mind maps", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47751583", "title": "Show HN: Zero WYSIWYG \u2013 A lightweight, zero-dependency HTML editor", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {"neutral": 3}, "2026-03": {"compare": 1, "recommend": 1}, "2026-04": {"compare": 1}, "2026-05": {"recommend": 2, "neutral": 1, "warn": 1}, "2026-06": {}, "2026-07": {"neutral": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 780417713, "item_id": 48776107, "url": "https://news.ycombinator.com/item?id=48776107", "by": "andrewingram", "date": "2026-07-03", "stance": "neutral", "quote": "One thing i've struggled with with Prosemirror (via TipTap)", "excerpt": "One thing i've struggled with with Prosemirror (via TipTap) is that I very often need to interact with JSON representation of the document programmatically to extract data from it, this means I need (okay, strongly prefer) a statically-typed representation of it. Prosemirror doesn't really have any mechanism to do this, so i've ended up doing one of these two things: 1. Define the schema twice, once using Prosemirror", "context": "", "use_case": "Rich text editor", "switched_from": "", "story": "Wordgard: The new in-browser rich-text editor from the creator of ProseMirror"}, {"id": 773554178, "item_id": 48347136, "url": "https://news.ycombinator.com/item?id=48347136", "by": "pbjerkeseth", "date": "2026-05-31", "stance": "warn", "quote": "kept running into into issues where the abstractions got in the way", "excerpt": "No problem, I actually went through a similar path of trying milkdown/tiptap/a few others as the core for my own editor needs but kept running into into issues where the abstractions got in the way eventually. I was thinking about using ProseMirror for a custom 'one big text file' concept so I guess Ill close the door on that idea and give this a try.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Atomic Editor \u2013 Obsidian-style live preview for CodeMirror 6"}, {"id": 771463729, "item_id": 48216483, "url": "https://news.ycombinator.com/item?id=48216483", "by": "youngbum", "date": "2026-05-20", "stance": "neutral", "quote": "We not only write descriptions with TipTap", "excerpt": "Huge fan of Hocuspocus. Congrats on the new release and grateful for your efforts. We have been using Hocuspocus to sync multiple users in our form builder editor (https://walla.my), and they were very reliable and sturdy. We not only write descriptions with TipTap but also sync the fields and logic itself. Actually, the previous version was eligible to build and deploy with Bun though. We did also try to deploy them", "context": "form builder developer", "use_case": "rich text editing", "switched_from": "", "story": null}, {"id": 769697720, "item_id": 48106107, "url": "https://news.ycombinator.com/item?id=48106107", "by": "Escapado", "date": "2026-05-12", "stance": "recommend", "quote": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "excerpt": "For the past two years I have worked on a SaaS platform for the education space that we are about to launch (small 2 person start up) - it involves a lot of highly dynamic forms and fairly complex client side state and tons of rather complex components and workflows. The stack for non-specifics we landed on for now coincides with a lot of what is mentioned in the blog post with a few extras: Nextjs, oRPC, Next-Intl, ", "context": "2-person startup, education SaaS", "use_case": "", "switched_from": "", "story": "The Modern React Stack Explained for 2026"}, {"id": 768452688, "item_id": 48028293, "url": "https://news.ycombinator.com/item?id=48028293", "by": "havlenao", "date": "2026-05-05", "stance": "recommend", "quote": "we use Tiptap which handles large documents well", "excerpt": "The mind map view uses D3 flextree for layout calculation, and we render only the visible nodes (virtualization). So even with 200+ nodes, the layout stays smooth. On the text editor side, we use Tiptap which handles large documents well. The Yjs binding is optimized to only sync the delta, not the whole document. We're actively working on further graph editor performance improvements, especially around initial rende", "context": "", "use_case": "Rich text editing", "switched_from": "", "story": "Show HN: Brainio \u2013 Markdown notepad that turns notes into visual mind maps"}, {"id": 764028450, "item_id": 47751778, "url": "https://news.ycombinator.com/item?id=47751778", "by": "KaTXi", "date": "2026-04-13", "stance": "compare", "quote": "Tiptap pulls in ProseMirror and its own packages, easily 200KB+ of dependencies", "excerpt": "Thanks! The project started because I needed to replace Xinha (https://xinha.webfactional.com/) in the admin panel of a gaming news site I've been running since the early 2000s. Xinha served me well for years, but it was no longer actively maintained and had accumulated a lot of legacy baggage. I wanted something lightweight that just worked without pulling in a framework or a tree of dependencies. Development time: ", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Zero WYSIWYG \u2013 A lightweight, zero-dependency HTML editor"}, {"id": 759694880, "item_id": 47480930, "url": "https://news.ycombinator.com/item?id=47480930", "by": "artursapek", "date": "2026-03-22", "stance": "recommend", "quote": "ended up building off their Y.js backend, which is great", "excerpt": "I definitely looked at TipTap and ended up building off their Y.js backend, which is great: https://tiptap.dev/docs/hocuspocus/getting-started/overview I wanted to build something canvas-based, so that eliminated most of these options. I also just wanted full control of that part of my stack... it's the core product after all. There are several TipTap/ProseMirror wrappers out there already. You should share yours tho", "context": "", "use_case": "collaborative editor backend", "switched_from": "", "story": "Revise \u2013 An AI Editor for Documents"}, {"id": 758860005, "item_id": 47428750, "url": "https://news.ycombinator.com/item?id=47428750", "by": "smoores", "date": "2026-03-18", "stance": "compare", "quote": "doesn\u2019t have to make any of the compromises that Tiptap\u2019s React integration currently makes", "excerpt": "Hey folks! Handle with Care is a software collective that builds and maintains open source rich text editing libraries, including React ProseMirror [1]. We all came from The New York Times\u2019 content management system team, and we spend a lot of time thinking about rich text and collaborative editing. Now we\u2019re working on something new: Pitter Patter will be a fully featured collaborative rich text editing toolkit, wit", "context": "", "use_case": "", "switched_from": "", "story": "We're building a better rich text editing toolkit"}, {"id": 753017041, "item_id": 47063565, "url": "https://news.ycombinator.com/item?id=47063565", "by": "lasgawe", "date": "2026-02-18", "stance": "neutral", "quote": "It\u2019s built on top of TipTap, with all extensions written from scratch", "excerpt": "Writtte is an open source document editor. It\u2019s built on top of TipTap, with all extensions written from scratch to fit our use cases. The frontend uses no framework, just vanilla JavaScript with a custom router. It runs on Bun.js, with custom server files and built-in caching. The whole codebase is included and easy to read. We\u2019re getting a good number of users already, and Sentry hasn\u2019t reported any critical issues", "context": "", "use_case": "editor foundation", "switched_from": "", "story": "We built Writtte using vanilla JavaScript (TS), PSQL, and a Go, No frameworks"}, {"id": 751512821, "item_id": 46969551, "url": "https://news.ycombinator.com/item?id=46969551", "by": "ArkHost", "date": "2026-02-10", "stance": "neutral", "quote": "SvelteKit + TipTap frontend", "excerpt": "Hi HN. I built this because I wanted UpNote's clean UI but with local .md files and no cloud dependency. Couldn't find it, so I built it. Stack: Rust backend (Tauri 2.0, Tantivy for search), SvelteKit + TipTap frontend. Notes are plain markdown files on your filesystem - sync with whatever you already use. AGPL-3.0, source on Codeberg: https://codeberg.org/ArkHost/HelixNotes Happy to answer questions about the stack ", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: HelixNotes \u2013 Local-first Markdown notes app built with Rust and Tauri"}, {"id": 750723284, "item_id": 46920205, "url": "https://news.ycombinator.com/item?id=46920205", "by": "mweidner", "date": "2026-02-06", "stance": "neutral", "quote": "I made some progress fighting this in Tiptap", "excerpt": "Managing \"a flat-ish collection of nodes\" that can be moved around (without merely deleting and re-inserting nodes) is tricky because of how paragraphs can be split and merged. Notion tackled this for their offline mode: https://www.youtube.com/watch?v=AKDcWRkbjYs If you take that as a solved problem, do your concerns change? > Selection & Cursors: Selection across regions is notoriously hard. If \"Region A\" and \"Regi", "context": "", "use_case": "", "switched_from": "", "story": null}]}