Artem Loenko on Native Text Rendering

The Shape of Everything
A website mostly about Mac stuff, written by August "Gus" Mueller

Artem Loenko: Native all the way, until you need text:

I did everything people say you should do. Native all the way. I know the platform. I know the options. I know SwiftUI, AppKit, TextKit, WebKit.

But I still cannot make a simple thing work properly: a chat with Markdown & the ability to select a whole message.

And suddenly it becomes much clearer why most new chat-heavy apps that depend on one of the most important interface patterns of this era – chat, long-form rich text, flexible typography – are web-based in one way or another.

In the beginning (aka, Mac OS X 10.2 in 2002), there was nothing better than NSTextView.

It evolved, and we eventually got TextKit 2. But something's off about it, and I can't quite explain what or why.

Update: Matt Sephton left a comment on HN about Loenko‘s post:

I recently launched a text editor for iOS that uses TextKit 2 and is highly performant with files of 5,000 lines (I tested with Moby Dick from Project Gutenberg). I made it between Aug 2025 and Apr 2026, development is ongoing.

Every keystroke is restyled in under 8ms: no debouncing, no delayed rendering. 20 rapid keystrokes are processed in 150ms with full restyling after each one.