5 ms·
The obsession with the concept of a "one true cross platform toolkit" even just for mobile is wrong, it will never happen. They all have their strengths and we
by samwillis 5y ago
The obsession with the concept of a "one true cross platform toolkit" even just for mobile is wrong, it will never happen.
They all have their strengths and weaknesses, you should always chose one where the strengths align with your app and your team. I see it something like this (of the ones I know enough about):
Flutter - Brilliant for somewhat simple apps talking to an api that don't need to share any ui with the web. Sonos is a brilliant example. Banking/Utilities, Smart Home, Restaurant/Takeaway (I think here in UK the Pizza Express app is Flutter). Things that need a "flashy" but consistent ui. In many ways I see Flutter as the new Adobe Flex/Flash.
React Native - Brilliant where you need a more native feel or need to drop to native more regularly. Good WebView support if you need them, mixing web and native views together. Also good to extend native apps. Facebook and other social media apps are a good example.
Ionic/Capacitor (or the older PhoneGap/Cordova) - You have a small team and need to get a fully cross platform app (web/mobile/pwa/desktop) done quick. If you are just calling a few HTTP apis (a CRUD app) and rendering some screens you can't be more productive than with this platform, particularly if sharing views with the web. Brilliant for enterprise, or internal apps. Good examples are the UK NHS apps. Performance on any mobile hardware less than 5yo is better than good. I have used NativeScript with Capacitor, they work very well together when you need to access native functionality not available with the standard capacitor apis.
(I don't know enough about Kotlin and its cross platform tools)
- voiture_rapide 5y agoFlutter Web exists and works reasonably well.
- wiseowise 5y agoIf by reasonably well you mean barely hits 20 fps on Desktop and unusable on mobile then sure, it works reasonably well.
- samwillis 5y agoTrue, although if you are trying to build a cross platform app where the web is a major part of it, I wouldn't even look at the Flutter and default to Capacitor.
- ohgodplsno 5y ago>Reasonably well Rendering to a canvas does not "work reasonably well", unless you want to go back to Flash days (but controlled by google this time)
- pjmlp 5y agoTherein lies the future, thanks WebAssembly. Blazor, Uno, Qt, Yew, Flutter,....
- samwillis 5y agoAlthough WASM is brilliant, I don't think its right to use it to recreate the whole UI drawn to canvas. You loose all accessibility integration with the OS either locking out users or making your life much harder reimplementing it. WASM is perfect for graphics and backend processing, see Figma it uses WASM for drawing the canvas but the rest of the ui is native web with all the accessibility tools that come with the browser/os.
- pjmlp 5y agoMy life was made much harder when Flash and Silverlight like tooling was taken away. The craziness of faking UIs with paragraph tags massaged via CSS and JavaScript into a drop down menu. Now they are back, even Google Docs is moving into it.
- jms55 5y agoYew doesn't use the canvas, it uses the DOM iirc.
- gernb 5y agoNo, it doesn't. Try dealing with accessibility, emoji, screen readers, non-English languages. The people in charge left all of that "TBD" and now they've backed themselves into on unsolvable corner with their "render everything to a canvas". They didn't understand what they were dong. The web apps feel like Swing in Java. Type some CJK in here and watch as each letter appears 500ms late, or try to bring up the emoji input on MacOS https://flutter.github.io/samples/web/form_app/#/form_widgets https://flutter.github.io/samples/web/form_app/#/form_widget...
- BakeInBeens 5y agoThe emoji input does work on Chrome OS
- hunterb123 5y agoWhat's the weakness to React Native? From my experience anything you could have done natively you can bridge to RN. So either create a native app if you have resources, otherwise, create a RN app and use either custom or community extensions. That's the beauty of the flexibility and extensibility of React. React Native Web works so well I use it as my main for even web-only projects. You basically get a mobile and desktop site for free with your app. Or native apps for free, whichever way you look at it.
- ativzzz 5y ago> What's the weakness to React Native? Non web-devs seeing the word "JavaScript" and running away. Or stated otherwise, having to learn React + the JS ecosystem (minimized within RN) on top of all the mobile specific stuff.
- hunterb123 5y agoPretty good point, haven't thought that way since I was a Web dev, then React dev, so transition to RN/W was easy. I had no previous experience with Android or iOS or the languages and was able to get caught up, but there was a curve to figuring out code signing, the app stores, deploying, permissions, etc. For those non web-devs, they will have to learn some of web. You will need to learn the tooling like the other platforms. You don't really need CSS knowledge or HTML just basics. RNW implements RN stylesheets which is a streamlined subset of CSS. The main thing is learning React, but SwiftUI was inspired by React so it should be easy for at least iOS devs to grasp it.
- oblio 5y agoXamarin?
- TrueGeek 5y ago+1 Xamarin is very popular in enterprise
- conradfr 5y agoFor some reason NativeScript is never mentioned on HN.
- samwillis 5y agoLove NativeScript, haven’t used it as the main platform but combined with Capacitor is super powerful. Incredible work.
- udbhavs 5y agoHow does that work, doesn't Capacitor already provide its own bridge to native APIs?
- conradfr 5y agohttps://blog.nativescript.org/announcing-nativescript-capacitor-beta/ https://blog.nativescript.org/announcing-nativescript-capaci... https://capacitor.nativescript.org/ https://capacitor.nativescript.org/ It can be confusing.
- akvadrako 5y agoOnly for specific APIs - nativescript does everything.
- hunterb123 5y agoNativeScript looks interesting and would be where I reached if React/RN TypeScript wasn't my preference. React Native has a much larger ecosystem and feature set, including desktop & web targets, native view, many extensions, huge support, a lot of jobs. NativeScript seems to just tie into native APIs, not the view layer, right? React Native bridges to native controls so you get native look and feel. Flutter emulates the native view later by drawing everything itself which can be off, but it's performant at least. If I preferred Web components, Svelte, Angular, or Vue I'd see the appeal of NativeScript.
- akvadrako 5y ago
- mchusma 5y ago+1 for Ionic. I have been able to scale complex B2B and B2C software apps (not games) very well with it. v1 to v2 was rough but since v3 its been great. I'd strongly recommend this to anyone who wants web and mobile apps with one codebase.
- gengstrand 5y agoI recently blogged about a comparative evaluation of the three technologies you identified as cross platform (Flutter, React Native, Ionic) over at https://glennengstrand.info/software/architecture/ionic/react/flutter https://glennengstrand.info/software/architecture/ionic/reac... by implementing a feature identical PoC app in each tech stack. The value of cross platform toolkits is all about cost reduction. It is cheaper to staff up on a single skill set rather than to staff up on three entirely separate skill sets. As of 2022, that single skill set is most likely web SPA development. Flutter and Dart are no where near as similar to React or Angular as Ionic or React Native. Even the most experienced web developer will need time to learn Flutter. There are also some positives to Flutter that you should consider. Of the three PoC apps, the Flutter app had the fewest lines of code and took the least amount time to develop (once you know Flutter).
- andrekandre 5y ago> The value of cross platform toolkits is all about cost reduction. cost reduction rarely leads directly to product quality though... what i want to know is, how do cross-platform tools lead to better software products (less bugs, faster iteration, higher quality features, smoother animation, higher performance etc) for customers?
- ngrilly 5y agoWe evaluated those 3 options to develop an application used to configure, control and monitor battery systems at Northvolt, and reached very similar conclusions regarding the strengths of each platform.