SwiftUI View to present formatted html content with clickable links, that fits content size.


  • view size is fitted by height, so you can use it as a part of content
  • user is able to tap on a link (http/https/tel/mailto)
  • you can use CSS Constructor to customise html presenting


Swift Package Manager:


  1. manually control body, css and link taps.

import HtmlText

HtmlText(body: "<p>text1</p><p>text2</p>",
         css: .init(fontFaces: [],
                    css: "* {color:#FF00FF}"),
         linkTap: { url in
    // handle link tap
  1. Use default link taps handler and CSS constructor.

import HtmlText

// make a convenient wrapper
extension HtmlText {
    init(body: String, font: FrontNames, size: CGFloat, lineHeight: CGFloat, textColor: Color) {
        self.init(body: body,
                  css: .init(constructor: CSS.Constructor()
                        .text(fontName: font.fontName,
                              fileName: font.fileName,
                              size: size,
                              lineHeight: lineHeight,
                              letterSpacing: 0,
                              textIndent: 10,
                              color: textColor)
                        .link(color: .red, underlined: false)
                        .paragraph(padding: .init(top: 10, left: 0, bottom: 0, right: 0))
                        .list(padding: .init(top: 10, left: 24, bottom: 10, right: 0))
                  linkTap: HtmlText.defaultLinkTapHandler(httpLinkTap: .openSFSafariModal))

HtmlText(body: Constants.demoHtml,
         font: .bold,
         size: 12,
         lineHeight: 20,
         textColor: Color.gray)

You can find more examples inside /Examples folder.




View Github