Swift Markdown Kit · DOCS
Events & Licensing
Events & Licensing
Events
| Event | When it fires |
|---|---|
.ready | Renderer loaded; queued commands begin running. |
.rendered(height:) | Exactly twice per content cycle: first paint and the final flush. |
.heightChanged(_) | Height changes in between — streaming flushes, image loads, Dynamic Type. Debounced while streaming. |
.viewportChanged(_) | Scroll position and a near-bottom flag, for native smart-scroll controls. |
.messageAction(_) | The user tapped copy, retry or edit on a whole message. |
.action(_) | Link, image, task and extension taps, plus code-copy results. |
.error(_) | A structured failure carrying a stable code. |
License error codes
| Code | Meaning |
|---|---|
licenseMissing | Device build with no .smklicense in Copy Bundle Resources. |
licenseInvalid | Envelope is not v2, signature is wrong, payload is malformed, or the licenseType is unsupported. |
licenseUnauthorizedBundleId | The license does not cover Bundle.main.bundleIdentifier. |
expiredTrialLicense | Trial license past its validUntil. |
sdkReleaseNotCovered | Production license whose updatesUntil predates this SDK build. Renew to upgrade. |
releaseMetadataMissing | The framework has no release timestamp — the build itself is wrong. |
Licensing model
Licenses are Ed25519-signed files verified offline, on-device. Nothing is sent to any server.
- Simulator — no license. Renders unconditionally.
- Device, trial — runs for 30 days from issuance, then stops.
- Device, production — runs any SDK build whose release date is not later
than the license's
updatesUntil. Device time is never checked, so an app you have already shipped does not stop working when the update window closes. Only SDK builds released after it require a renewal.
Need a trial license, or stuck on integration? Get in touch. Purchase and renewal terms are on the pricing page.