AppKit on the other hand seems to be pretty intrinsically slow and the controls are looking increasingly dated.
UIKit is the iOS counterpart to MacOS’s AppKit and both are implemented as convenience wrappers around CALayers. They are also infinitely customizable. You can overload UI/NSView and draw vector-pen style on a blank canvas or render whatever you want on a GPU frame buffer. This is how MapKit, Safari, and the Camera view is implemented.
There’s decades of accumulated cruft in Cocoa that Apple discarded when implementing iOS.
The work the Flutter team did on Impeller seems to have paid off.
Yeah it’s not the language or the SDK that’s slow. Rather it’s inexperienced, lazy, or overworked developers that can’t/won’t write performant software.
Now try that in SwiftUI. You’ll be forced back to UICollectionView.
I’m not defending SwiftUI. I mostly use it as a wrapper around NS/UIKit because it’s still buggy and not as flexible.
By the way, SwiftUI is also implemented on top of CALayers just like NS/UIKit. It can be fast in theory, but you have to know exactly where the pain points are and most developers don’t know how to do that.
In this way, yeah, it's pretty fast. Any other way it's blank square galore.