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.
React Native took a while to mature, but with the right tooling you can ship amazing UX now.
I don’t doubt there’s a ton of crap out there.
But you’re wrong if you think you can’t make seriously great stuff with it. It’s matured quite a lot.
And the React programming model is untouched, hot reloading and dev tools far ahead, and code share is worth it with something like Tamagui that actually optimizes to each platform. If I never had to touch an ObservableObject again that would be great.
In fact at this very moment I’m helping a team fix a memory leak/crash in the “react-native-permissions” dependency. It’s obvious this package was not written by someone with experience. All it does is request permissions in a paragraph of code and it’s totally broken! Give me a break
Btw, sometimes I think about how much I've been paid by various people to move a backend from SQL to NoSQL then from NoSQL to SQL, despite me telling them not to.
In one way you centralise as much logic as you can and are encouraged to write clean code that doen't depend on platfrom quirks. In the other way you... give up and just do whatever.
I can see how some devs find it hard to not give up and just write the same logic in multiple languages, great job security!