3 ms·
I learned a while ago that is not worth using an abstraction layer over the official tooling (whatever Apple and Google provides you), even for small apps I was
by norman784 3y ago
I learned a while ago that is not worth using an abstraction layer over the official tooling (whatever Apple and Google provides you), even for small apps I was building one for each platform (as one dev).
Tried at the time Xamarin and PhoneGap, and bit later RN, each one has his quirks and things that works in one platform but not in other so in the end you end up building one app for each platform more or less, but with more bugs than the official ones.
- scop 3y agoI’ve come to the same conclusion. I began to build a very simple app about a month ago and as a Web Dev figured React Native would be the best tool. Having completed about 60% of the app, I’m going to trash the whole thing and restart with Swift/Kotlin. I’ve encountered too many “quirks” that end up burning a huge amount of time for what should be an inconsequential component.
- ramones13 3y agoYou might want to check out CapacitorJS - https://capacitorjs.com/ https://capacitorjs.com/ It’s more web than RN and depending on what you’re doing might not feel as native, but it’s pretty easy to make a solid app with it.
- samtheprogram 3y agoUsing Swift UI, or UIKit, has its own quirks. And then you need to shift mental gears with entirely different UI component paradigms. I find most people making this argument haven't worked full time with one or the other. If you're a larger company who can afford two teams/groups, or if you are working on something lower level like OpenGL or ML, it makes sense. Having done both for multiple years, I can't understand when people think it would be faster to build separate apps. It's not even remotely close. You're swapping out doing bug fixes, platform specifics like push notifications, the occasional separate UI implementation, and distribution twice with doing _everything_ twice.
- mpweiher 3y agoFor some bizarre reason I haven't figured out yet, it seems like the "cross platform" choice is always the worst one. So when people talk about cross-platform on the Mac, for example, it's always some JavaScript abomination, or Java, or Delphi (yes, seriously), or Go. How about going the other direction and getting Cocoa running somewhere else? GNUstep, Cocotron etc. Gosh, that would actually make sense, can't have that. Literally. In fact, one company did. Apportable. Google bought them and buried the tech. Hmm
- lockhouse 3y agoIt’s not perfect by any means, but SwiftUI is the most productive development stack I’ve ever used for GUIs. There’s definitely a huge learning curve and some rough edges, but the speed with which I can write a polished UI in it is staggering.
- doctorpangloss 3y agoOn the flip side, Unity is massively successful, and basically every indie game developer who has found any success eventually ends up porting their game to it anyway, precisely because of the cross platform benefits. The problem isn’t that middlewares are bad. They are great: Unity and Unreal, your browser, Java… The problem is mobile apps don’t make money. Games and web services do. The OP is talking about low quality users. They’re broke! They’re not incentivized to fix their own problems either! It’s all just a blub for them. So middlewares improve for the audiences where they’re at least viable, and stagnate when they support something that no one should be bothering to do in the first place.
- norman784 3y agoGame dev is a different beast and in most platforms the development/tools are the same or close enough, also when building a game you rely only in low level API (Vulkan, Metal, OpenGL, etc) from the main platform you are targeting. But when you are building an app then you use the hight level API, that means you don't need to deal with font rendering, etc. You could obviously build an app with Unity, but it will not feel native, also IIRC Unity is awful when you need to input text in your game (in iOS at least, not sure how's Android side), it appears a input element above your keyboard while when using the native UI the UX is different.
- SkyPuncher 3y agoI've realized that I don't want an abstraction layer. I want a guardrail layer. Previously, much of my draw to things like Expo has been the reduction in mental load for handling multiple different platforms. In theory, they're built by people who know the different "gotchas" and can help me avoid them. In practice, something always requires you to dive into the underlying layers. At which point, you're just fighting with bug-filled abstractions.
- terandle 3y agoAs a solo dev simple apps are probably the only thing you can maintain two separate versions of? Complex LOB apps at businesses as a solo dev I could never imagine not using a cross platform toolkit of somekind. RN w/ expo is the best I have found out of all the cross platform kits by far. If you have react experience I really suggest giving modern RN & expo a try.