Banger Editor: higher level building blocks on top of ProseMirror
(previously bangle-editor) Collection of higher level rich text editing tools. It powers the local only note taking app https://bangle.io
At a glance
- What is it?
- Banger Editor is a TypeScript package collection that supplies the missing pieces of ProseMirror, from editor shell to toolbar widgets, without hiding ProseMirror behind a new abstraction layer. It is published in alpha, it installs as a peer dependency set you assemble yourself, and the React path is the documented one.
- Who is it for?
- Banger Editor fits teams that have already chosen ProseMirror and want ready made editor components without an abstraction layer in between, especially React applications that can start from the banger-vite-react-starter example. Do not pick it if you need a stable, documented API today, because the published versions are alpha tags and the README does not enumerate what each package contains.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 113 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Banger Editor supplies the parts of ProseMirror nobody ships
ProseMirror is a set of libraries rather than a product. It gives you a document model, a schema, a state object and a view, and then leaves the rest to the implementer, which means every application ends up writing the same editor shell, the same toolbar widgets and the same link and list handling. Banger Editor calls itself a collection of higher level rich text editing tools, and its stated purpose is to provide those missing pieces so you do not have to build them from scratch. The design decision that matters is what it refuses to add. The documentation describes the project as pure ProseMirror, with no extra abstractions, and says that on that basis it stays compatible with libraries such as tiptap, milkdown and novel. In practice that means the objects you get back are the ProseMirror objects, not a parallel model. The tool is aimed at developers who have already made that architectural choice, not at teams looking for a drop-in WYSIWYG with no ProseMirror knowledge at all.
The peer dependency list is the real installation work
Installing the package is one command:
npm install banger-editorThat is where the easy part ends. Banger Editor uses ProseMirror packages directly, so the documentation tells you to install the ones you need yourself. For a reader who is new to ProseMirror, the documentation spells out a starter set:
npm install orderedmap prosemirror-commands prosemirror-dropcursor prosemirror-flat-list prosemirror-gapcursor prosemirror-history prosemirror-inputrules prosemirror-keymap prosemirror-model prosemirror-schema-basic prosemirror-state prosemirror-transform prosemirror-viewRead that list as a map of the responsibilities you are taking on. The schema package defines the document structure, the model and state packages hold the document and the editing state, prosemirror-view renders it, and the rest provide behaviour: commands, keymaps, history, input rules, and the flat list, drop cursor and gap cursor plugins. The word you need here is the one the documentation uses, you will need to install the ones you need. The set is not a fixed contract but a starting point, which is the upside for a project that spans many ProseMirror versions, and the downside for someone who wanted a single dependency that pulls in a working editor.
The repository is a pnpm workspace with a tools-only root
The top-level package.json belongs to the workspace, not to the library. It is named @bangle.dev/banger-editor-root, it is marked private, and its version field of 1.0.0 describes the root package rather than any published artifact. The real code sits under packages/, and the workspace is wired up with pnpm-workspace.yaml and a pnpm-lock.yaml, with [email protected] declared as the package manager. The root holds the tooling configuration instead: biome.json for linting and formatting, tsconfig.json for the TypeScript build, vitest.config.ts with a vitest-global-setup.js for tests, and a manypkg setup that keeps the packages consistent with each other. The scripts section shows the working routine: lint runs biome check, lint:ci runs the typecheck and a stricter biome pass, test:ci runs vitest, and typecheck is tsc -b. The publish script is the interesting one, because it publishes every package under packages/ with the alpha tag, and it requires an OTP through npm_config_otp.
Every published build is an alpha tag
The release list explains a lot about the current state. The most recent versions are v2.0.0-alpha.20 from 2026-07-03, v2.0.0-alpha.18 from 2025-03-30 and v2.0.0-alpha.17 from 2025-02-16. The repository is not archived and the last push was on 2026-07-02, so work continues, but the versioning tells you plainly that the public API is still considered unstable. A 2.0.0 label with alpha tags in the name also suggests the project has been through at least one round of major version thinking, which matters when you plan upgrades. There is a RELEASE.md file in the repository root, which is where release notes for the individual packages would live, and the alpha publishing script applies to every package in the workspace at once. So when you depend on Banger Editor, you are depending on a set of packages that version and publish together, and the pin you write in package.json will look something like an alpha range rather than a stable one.
Headless components push styling decisions back to your team
The comparison the documentation draws is with shadcn/ui, and it is a good one to take seriously. The idea is that you get the behaviour, the wiring and the ProseMirror integration, and you own the markup and the CSS. You can use the components the project provides or build your own against the same interfaces. For a team with a design system, that is a good deal: the editor does not impose a visual style, and a toolbar button looks like the rest of your product without fighting an opinionated theme. For a team that wants a finished editor quickly, it is the wrong shape, because there is no ready made look to inherit. The documentation also says the core is vanilla JavaScript and that it works well with React, with Vue support described as coming soon. That places React firmly in the supported path today, and it is reflected in the example repository, banger-vite-react-starter, which is the fastest way to see a working setup.
Framework agnosticism cuts both ways
The claim that the project is framework agnostic means the core does not depend on a rendering library, and that is what makes the shadcn-style approach possible. It also means the React integration is a convenience rather than the foundation, and the documentation lists React support as working well while Vue is still to come. The consequences for a team are practical rather than philosophical. If you are on React, you are on the documented path and the starter repository shows the intended setup. If you are on Vue or Angular, you would be depending on the vanilla core and building the binding yourself, with no example to copy. The documentation does not list which packages exist under packages/, so a Vue team cannot even confirm from the README that the pieces they need are published separately or bundled. That gap is worth a look at the repository before committing to the approach.
What the documentation does not tell you
Several things a new user would want are not in the README, and it is better to say so than to guess. The package list is not enumerated, so you cannot tell from the documentation which editors, toolbars or utilities are shipped. There is no API reference link in the documentation, unlike many projects in this space, so the generated docs for each package are where you would have to look. The compatibility claim with tiptap, milkdown and novel is stated as a consequence of staying close to ProseMirror rather than demonstrated with a worked example. The document also does not describe server side rendering behaviour, collaborative editing, or how content is serialised for storage, and it says nothing about a migration path between alpha versions, which is the question most likely to matter to you in a year. The licence is MIT and the default branch is dev, though the workspace configuration names main as the default branch for manypkg, so tooling that assumes the latter may disagree with the repository.
Editorial conclusion
Banger Editor fits teams that have already chosen ProseMirror and want ready made editor components without an abstraction layer in between, especially React applications that can start from the banger-vite-react-starter example. Do not pick it if you need a stable, documented API today, because the published versions are alpha tags and the README does not enumerate what each package contains. Before adopting, install the peer dependency list given in the README and confirm the components you need exist in the packages/ directory, since the version history is a run of v2.0.0-alpha builds rather than a stable line.
Frequently asked questions
How do I install banger-editor?
Run npm install banger-editor. Because Banger Editor uses ProseMirror packages directly, you also install the ones you need yourself, and the README gives a starter set for readers new to ProseMirror including prosemirror-model, prosemirror-state, prosemirror-view and prosemirror-schema-basic.
Is banger-editor compatible with tiptap and milkdown?
The documentation describes Banger Editor as pure ProseMirror with no extra abstractions, and says that on that basis it is compatible with libraries like tiptap, milkdown and novel. The compatibility is a consequence of the design rather than a separately tested integration.
Does banger-editor support Vue?
The core is vanilla JavaScript, the documentation says it works great with React, and Vue support is described as coming soon. A React starter repository, banger-vite-react-starter, is linked as an example.
How stable are the published versions of banger-editor?
The release list is entirely alpha builds, including v2.0.0-alpha.20 from 2026-07-03, and the workspace publish script publishes every package with the alpha tag. The last push to the repository was on 2026-07-02 and the repository is not archived.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/bangle-io-banger-editor)Was this useful?