Swift Markdown Kit · DOCS

Overview

Swift Markdown Kit

A commercial Markdown rendering SDK for iOS, delivered as SwiftMarkdownKit.xcframework.

It is built for LLM output. Streaming tokens, whole-conversation chat, and reasoning folds are first-class — not bolted on.

A conversation in six lines

import SwiftUI
import SwiftMarkdownKit

struct ConversationView: View {
    let messages: [MarkdownChatMessage]

    var body: some View {
        MarkdownChatRenderView(messages: messages)
    }
}

That is a complete, working integration. With no configuration at all you get:

  • Markdown, tables, code with syntax highlighting, KaTeX math, task lists.
  • Streaming that stays smooth and costs O(n) over the whole answer.
  • <think> reasoning folded into a collapsible panel above the answer.
  • Links opening in an in-app browser, images opening full screen.
  • Copy buttons on code blocks and messages.
  • Light/dark, Dynamic Type, and safe handling of half-finished markdown.

Everything after this page is about the parts you may want to change.

Requirements

  • iOS 17.0 or later
  • macOS through Mac Catalyst — the same implementation, so a formula, a table or a streamed answer renders identically on both. Build against the My Mac (Mac Catalyst) destination; My Mac builds for native macOS, which has no UIKit and no slice to link. A native AppKit target is not supported.
  • Xcode 16 or later
  • A .smklicense issued for your Apple Team ID or bundle identifiers

Evaluate before you buy

The SDK never withholds a feature. Without a license every capability still renders exactly as it will in production — an unlicensed build simply carries a small Unlicensed · macdeer.com badge in the corner and prints one line to the console explaining why.

That means you can integrate it, render your real content, measure your real scroll performance, and ship it through CI before paying anything. See Licensing for how trial and production licenses differ.

Where to go next

If you want to…Read
Get it into your projectInstallation
Render an LLM conversationStreaming & Chat
Render one document or articleRendering
Decide who handles link and image tapsInteraction
Match your app's designTheming & Syntax
Look up a type, event or errorReference