I would like a re-usable component that allows a user to provide or edit content through a "what you see is what you get" (WYSIWYG) editing experience.
I would like to use this component in Jira, Confluence, and Bitbucket apps.
Usage described in documentation
Demonstration of all states
Interactive state (screen readers)
Visual regression tests
Navigation (only keyboard / only mouse)
Component render legibly
Element status (At Rest/Pressed/Selected/Read Only/Disabled)
There are several challenging aspects to providing a re-usable RTE.
The primary two concerns are: (1) the kind of content a user can provide (e.g., bold, italics, images, attachments, etc.) and (2) the format this content is stored in.
Jira, Confluence, and Bitbucket all have different content formats under the hood.
The lowest common denominator is “wiki markup” - this format is still used to some extent in each product, though I’m not sure whether it’s the base format that’s stored in each product’s database or whether it’s only an interpreted layer in each product.
For basic text styles, this could be sufficient. However, for more complex content such as images, this gets trickier, since each product has a different approach to storing attachments and related info.
A secondary concern is maintenance. RTE components require active investment and maintenance to keep them working across browsers.
Building an RTE from scratch would be foolhardy. Borrowing an existing one and making it work across each product is the only sane route… but even that has difficulties because of the 2 primary concerns.