4 ms·
It baffles me that people think duplicating application code for every device is the way to go. Cross platform can be done correctly. I'm working on a stack tha
by s_y_n_t_a_x 7y ago
It baffles me that people think duplicating application code for every device is the way to go. Cross platform can be done correctly. I'm working on a stack that can natively target Windows, Mac, Linux, Android, iOS, MacOS, and Web. I couldn't imagine duplicating my code for each one of these devices. If something special needs to be done, I write an extension.
I have a feeling posts like these get upvoted because developers who make the native apps want to keep their jobs.
But those developers will always be needed for the native bridges, just not as many of them.
- jgust 7y agoI took this as an argument for a thin, or at least thinner, client. If something is complicated and costly to maintain - shouldn't it move to the server? What complicated processes are you doing on-device that couldn't be done somewhere else & fronted by an API?
- T-hawk 7y agoAnything you want to run locally without being tethered to always-on connectivity, for one. Or just anything you want to run without network latency.
- srcmap 7y agoWhich framework are you using for this?
- s_y_n_t_a_x 7y agoReact Native
- matchbok 7y agoDone correctly != react native. I've had to shut down and migrate 3 RN projects because of how much of a mess it is. It's not even 1.0 and is a horrible choice for important apps.
- bfrog 7y agoSadists created it
- s_y_n_t_a_x 7y agoThen you used it wrong, sorry.
- verttii 7y agoThere's a lot of valid points from native advocates though. Like differences in touch features, various sensor APIs, Firebase etc. These may not be serious considerations in simple apps but they make major difference to both the end user as well as the codebase/developer in larger scale / more serious apps. That said, myself I still write Flutter too, having jumped ship from React Native.
- s_y_n_t_a_x 7y agoI use React Native so there is no difference in touch features etc. It's native components bridged by JS.
- verttii 7y agoBut on React Native there are major platform differences that you also have to bridge. Moreover, as the platform essentially uses each platform's native components through that JSON serialized bridge you'll have UI inconsistencies between platforms when sharing code.
- s_y_n_t_a_x 7y agoI built upon ReactXP with helps with that. A project from Microsoft that powers Skype for Web. But yes, there can be differences, but that doesn't mean give up and write the application code 6x.
- K0nserv 7y agoI'm very much in the cross platform is a bad idea camp. It's fine for sharing business logic and other non-UI code, but having tried several cross platform UI kits I've never found it to work well. Cross platform UI always ends up compromising on the native UIs strengths and uniqueness resulting in poor UX, poor accessibility, unaccceptable resource usage, bloated binary size etc. Just a few concrete examples: - Non standard UI/UX is super common because cross platform UI targets the lowest common denominator. Flutter is the quintessential example of this, it throws away all native UI support and renders everything from scratch with low level graphics. In React Native I've observed several cases where iOS UI has been re-implemented, poorly, in Javascript and shipped on Android and iOS. - Poor accessibility. Native iOS apps get a lot of accessibility for free because Apple has done a great job, with RN and especially Flutter you don't get this benefit. - Resource consumption. Electron is terrible in this regard as is the common meme. React Native runs a JS VM for every app which surely has a negative impact on both battery and performance. - Binary size. A basic Flutter/RN app easily pushes you past 20MB in app size on iOS, whereas a complex and complete app like Tweetbot is ~7MB. It's certainly possible to build great UX with cross platform UI frameworks, but the amount of work required to do it well starts to get into the territory where you are better of just doing it natively in the first place.
- s_y_n_t_a_x 7y agoReact Native can wrap any native component and bridge it into your app. If you had bad experience with a 3rd party component, that's not RN's fault, build your own extensions you need, but for the most part you just need the core. It's still easier than rebuilding your app X times. - React Native you most certainly do get accessibility. - Running a JS VM isn't that bad, but it is a tradeoff. Imo it's completely worth it to prevent having to learn X different languages for each platform. - The app size evens out, but yes the minimal is higher. However many apps are much larger than 20MB, it's better than other cross platform solutions In no way are any of these things so bad where I would duplicate my code 6 times and then maintain them throughout the life of the project. That's just crazy.
- K0nserv 7y ago