I've encapsulated what needs to be done into the ReadOnlyMessage component. HTML sanitizing must be in line with what Tiptap supports. Might be able to use Prosemirror utilities directly to do the work instead of custom writing something - or a singular shared Tiptap instance that we load content into once, sanitize, and extract. tbd.