WYSIWYG / Rich Text Editor in Python Shiny – Looking for Suggestions

Hi everyone,

I’m building a Python Shiny dashboard where non-technical users need to enter and edit rich text content (similar to how they would in a Word document).

:white_check_mark: What I’m trying to achieve

I want a WYSIWYG-style text editor inside a Shiny app that allows users to:

  • Write normal text
  • Apply bold, italic
  • Add bullet points / numbered lists
  • Insert multiple hyperlinks
  • (Optional) simple headings

The key point is:

Users are not HTML or Markdown experts.
They should be able to type and format text visually, without learning syntax.

:repeat_button: Data flow requirement

  1. User enters rich text in the Shiny UI
  2. The content is saved to a database (HTML or Markdown is fine)
  3. Later, the same content is rendered back in the UI exactly as it was written

:cross_mark: What I’ve tried / limitations

  • ui.input_text_area() → plain text only
  • ui.markdown() → render-only, no editing
  • Markdown-based workflows work technically, but are not user-friendly for business users
  • Integrating large JS editors (Quill, TinyMCE, CKEditor) directly feels heavy and hard to maintain in Python Shiny
  • I’m trying to avoid complex custom JavaScript unless absolutely necessary

:puzzle_piece: Context

  • This is Python Shiny, not R Shiny
  • App is already fairly large and modular
  • Maintainability and simplicity matter
  • Even a minimal WYSIWYG editor (bold, bullets, links) would be sufficient

:folded_hands: What I’m looking for

I’d really appreciate suggestions on:

  • Existing Shiny-compatible rich text editors (Python or JS-based)
  • Patterns people are using in Python Shiny for this use case
  • Lightweight JS editors that integrate cleanly with Shiny
  • Any Posit roadmap or recommended approach for rich text editing

If anyone has implemented something similar or has ideas, I’d love to hear your thoughts.

Thanks in advance!

1 Like