I create an SPA React application that can send and receive email messages.
What is the best way to render received HTML email messages? The task becomes problematic when I receive a huge email message with a lot of images in base64 and HTML tags.
I receive the email as JSON HTML string from API and want to render it properly.
I tried two approaches:
- Render in div with
dangerouslySetInnerHTML={{ __html: htmlMessageText }}
- there is problem with safety- Use my email editor in preview mode (Jodit) - there is problem with Layout Thrashing
In both approaches, there is the problem with performance. Emails (800 lines) renders a lot of time (~2 minutes).
There is no problem with simple HTML emails, these renders fast, but with some of them - especially bigger emails - application like to freeze layout.
The performance problems are caused by big data-URI images. The safety problems can be solved by a sanitizer library. So your algorithm might look like this:
data:
URIs with blob:
. For inspiration you can check out the relevant part in the code of TinyMCE.dangerouslySetInnerHTML
You could try a HTML to React parser... https://www.npmjs.com/package/react-html-parser.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With