I’ve been writing mobile apps since 2013. Cross Platform UI is a myth. Just use a framework and language you are familiar or comfortable with. I prefer native so I just stick to that. You are sure to be most productive in languages you are familiar with rather than any new/old cross platform UI framework.
Just be cognizant of the fact that all of them have trade offs.
A lot of people saying it doesn’t exist or work, but as the creator of Tamagui, I have to vouch for it. I think it works pretty amazingly, and we have some really beautiful apps in every App Store (plus web).
Sorry but what you say just isn't possible. Especially with a browser-based cross-platform solution, you're gonna pay on the performance and native integration front.
What you built looks nice and I'm sure it works well for many classes of apps though.
It certainly exists/works, but is it productive? With my time using Tamagui I would go with no.
There are just so many traps everywhere. 99% of it isn't your fault, just the name of the fragile RN game. Install another package here to handle one use case on one platform, avoid this component on one platform because RN doesn't support this thing, entire blocks of very simple styles commented out due to performance cost. List goes on. It's a never-ending game of your codebase feeling horribly fragile, and that's if you remain within the RN = Android and iOS realm. As soon as you start trying to get it to be truly cross platform with desktop apps - endless nightmares.
I so desperately want cross-platform development to feel as smooth as people proclaim, but it's really like playing russian roulette with every new component added. At the end, you question if it was really worth it due to how much you've had to rewrite anyways. You become sort of delirious after working on a project that uses such solutions, wondering if you traded user experience for developer experience and wound up messing both up in the long run.
Good to hear about your experience, and we’ve steadily improved the onboarding costs. Also have a new starter kit coming soon that goes all in on batteries included.
When did you last try it? Because it’s improved dramatically since January.
But of course you have to compare it to the alternatives.
Aka have you tried to build a SwiftUI app? There’s endless problems. And then you have to rewrite your whole app three times.
Building any app will leave you delirious, but I’ve found myself far more productive in React Native than the alternatives - and I’ve tried them. I would happily challenge anyone to ship a cross platform app using their framework of choice and compare on time to ship and ultimate UX. I think there’s a clear winner.
How can you say this when many of the worlds most used apps are written in React Native? Same with Electron and desktop apps. I find it hard to believe you can be more productive writing native code when you need two entirely different codebases, compared to a single one, no matter how good of an iOS and Android developer you are.
I don't know if I was using React Native "wrong" or what, but when I tried it out I found it to be a miserable experience. There's almost no usable components "built-in"...there seems to be an expectation that you cobble your UI together using one of a variety of different third-party components or component libraries, and every single one I tried was incomplete, buggy, poorly-maintained, poorly-documented...
Based on that trial: I'd much rather work on two sane codebases instead of one in React Native that's a maintenance disaster. As a bonus, since your apps will be native, they'll probably be faster, feel higher quality, integrate better with the platforms, etc.
You were using it wrong IMO. The platform comes with a lot of built-in components (just look at the docs!) just from importing the React Native package.
You do realize you still have to write a lot of native code in cross platform apps, right? It's what all the most used apps do.
This idea that individually you can be more productive on a cross platform app has no basis in reality. You're still having to concern yourself with platform specific aspects, except now you're also throwing in another layer into the mix for your shared aspects. These shared aspects tend to also not be up to user expectation most of the time, so you're having to rewrite things that comes easy for native apps, to ensure consistency and accessibility.
Such moves makes sense for Facebook. Given who they hire, what they work on. Same for Microsoft, but not sure using them is a good example considering their app experiences are universally terrible. For a lot of other places though? There has been a grand total of zero proven demonstration of increased productivity or dramatic savings. You still have to hire android/ios/windows/mac/linux devs respectfully whenever you eventually want to expand to those platforms.