# Releasing prosemirror-suggestion-mode

**URL:** <https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239>\
**Category:** Show\
**Created:** [February 28, 2025, 6:58am UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239 "2025-02-28T06:58:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![davefowler](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/davefowler/32/4478_2.png) [@davefowler](https://discuss.prosemirror.net/u/davefowler)\
**Post date:** [February 28, 2025, 6:58am UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/1 "2025-02-28T06:58:05Z")

</div>

Hi all, I created a suggestion-mode for prosemirror that works similarly google docs or word in suggestion-mode

> **[GitHub - davefowler/prosemirror-suggestion-mode: Suggestion diffs for prosemirror](https://github.com/davefowler/prosemirror-suggestion-mode/)**
>
> Suggestion diffs for prosemirror

Check out the [live demos](https://prosemirror-suggestion-mode.netlify.app)

- [Simple example](https://prosemirror-suggestion-mode.netlify.app/examples/simple/)
- [Text based suggestions (for AI)](https://prosemirror-suggestion-mode.netlify.app/examples/suggestedit/)
- [Style/decorator additions](https://prosemirror-suggestion-mode.netlify.app/examples/inkandswitch/)

[![ProseMirror Suggestion Mode Demo](https://github.com/davefowler/prosemirror-suggestion-mode/blob/main/assets/prosemirror-suggestion-mode-demo.png?raw=true)](https://prosemirror-suggestion-mode.netlify.app/examples/simple/)

Would love any feedback. I’d found a few old threads on this but they all seemed to have not resulted in a solution:

- [https://discuss.prosemirror.net/t/implementing-google-docs-like-suggest-edit-mode/5033](https://discuss.prosemirror.net/t/implementing-google-docs-like-suggest-edit-mode/5033)
- [https://discuss.prosemirror.net/t/prosemirror-changeset-for-tracking-document-changes-including-deletions/2524](https://discuss.prosemirror.net/t/prosemirror-changeset-for-tracking-document-changes-including-deletions/2524)
- [https://discuss.prosemirror.net/t/a-proposed-way-to-visualize-a-changeset/1628](https://discuss.prosemirror.net/t/a-proposed-way-to-visualize-a-changeset/1628)
- [https://discuss.prosemirror.net/t/diff-plugin/5837](https://discuss.prosemirror.net/t/diff-plugin/5837)

I also didn’t see any other plugins doing this (did I miss one?) so I wrote my own and thought I’d do so as a plugin and release it.

In that last thread @marjin suggests doing this with prosemirror-changeset. As mention in my [Implementation Choices](https://discuss.prosemirror.net/t/diff-plugin/5837) I went down that path and have a branch linked there but ran into issues (may have been understanding things wrong) when individual changes were approved/rejected.

---

<div class="post-metadata">

**Author:** ![SMores](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/smores/32/3356_2.png) [@SMores](https://discuss.prosemirror.net/u/SMores)\
**Post date:** [March 4, 2025, 5:14am UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/2 "2025-03-04T05:14:13Z")

</div>

Truly wild timing — @alexanderjulmer and I have been working on this exact problem for the past few weeks. We just published [@handlewithcare/prosemirror-suggest-changes - npm](https://www.npmjs.com/package/@handlewithcare/prosemirror-suggest-changes), ([GitHub - handlewithcarecollective/prosemirror-suggest-changes](https://github.com/handlewithcarecollective/prosemirror-suggest-changes))!

It looks like we took a very similar approach! We opted for a “decorator” around dispatchTransaction, rather than appendTransactions, and made step handlers for the other step types as well.

If you’re interested in joining forces, I’d love to collaborate!

---

<div class="post-metadata">

**Author:** ![davefowler](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/davefowler/32/4478_2.png) [@davefowler](https://discuss.prosemirror.net/u/davefowler)\
**Post date:** [March 4, 2025, 7:50pm UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/3 "2025-03-04T19:50:50Z")

</div>

Whoa, that is wild timing! Will dive into checking yours out now.

For now, I came here to share some updates:

## 1.0.11

- Fixed issue where suggestion marks were not being removed when deleting text inside them
- Fixed issue where doing a delete one character from a suggestion\_add was not working
- Fully renamed to prosemirror-suggestion-mode from prosemirror-suggestions to avoid confusion with another lib
- Made the hover menu extendable
- Added a new example called inkAndSwitch which shows how to use the suggestion mode in a more complex example
- fixed suggestEdit demo to show reason in hover menu

---

<div class="post-metadata">

**Author:** ![davefowler](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/davefowler/32/4478_2.png) [@davefowler](https://discuss.prosemirror.net/u/davefowler)\
**Post date:** [March 5, 2025, 8:19pm UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/4 "2025-03-05T20:19:27Z")

</div>

@SMores and @alexanderjulmer I went through your demo and some code yesterday. It is very similar! Would love to talk about collaborating. I’ve reached out to the hello@ email on your site. My email is my username here @gmail.

---

<div class="post-metadata">

**Author:** ![davefowler](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/davefowler/32/4478_2.png) [@davefowler](https://discuss.prosemirror.net/u/davefowler)\
**Post date:** [March 12, 2025, 5:22am UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/5 "2025-03-12T05:22:30Z")

</div>

After talking with @SMores I realized several issues and limitations and largely did a full re-write. It now supports all step types, markup and utilizes prosemirror commands

[Try the markdown demo here](https://prosemirror-suggestion-mode.netlify.app/examples/basic/)

 ![image](https://discuss.prosemirror.net/uploads/secondsite/original/2X/b/bdfcc9c2dd8ad02685036ccd727afda0f76bb998.jpeg)

## 1.0.21

Big rewrite here as the previous versions only supported the ReplaceStep and only for plain text.

Overall this release enables a lot more functionality while increasing simplicity, mostly by following better (more elegant) prosemirror practices

- support all transaction step types - ReplaceStep, AddMarkStep, RemoveMarkStep, ReplaceAroundStep
- replacing slices, not textContent - maintaining any markup in changes
- all helper functions moved to be prosemirror commands
- test cases for new step types and edge cases
- ‘basic’ example using the prosemirror-example-setup with a toolbar, undo/redo and many formatting options
- more proper use of prosemirror mark properties and functions like inclusive and
- simplified the hover menu to a single decorator widget
- integrated add/reject buttons into toolbar
- paragraph pastes working
- accept and reject suggestion commands are now range based
- improved hover menus with option to disable

---

<div class="post-metadata">

**Author:** ![nola](https://discuss.prosemirror.net/letter_avatar_proxy/v4/letter/n/eb9ed0/32.png) [@nola](https://discuss.prosemirror.net/u/nola)\
**Post date:** [March 28, 2025, 9:17am UTC](https://discuss.prosemirror.net/t/releasing-prosemirror-suggestion-mode/8239/6 "2025-03-28T09:17:35Z")

</div>

Just wanted to say thanks for this, great timing for my team as well 🎉
