5 ms·
I tried Nativescript, React Native and Ionic. I've had previous experience with both React and Angular. I found Ionic to have the most enjoyable and cogent end-
by halfmatthalfcat 7y ago
I tried Nativescript, React Native and Ionic. I've had previous experience with both React and Angular. I found Ionic to have the most enjoyable and cogent end-to-end experience amongst the three.
Interopt with Nativescript and other libs was hard, React Native didn't support Typescript as a first-class citizen (which as a prereq of mine) and the developer tooling wasn't as mature as the Ionic/Cordova/Angular cli(s) were.
A lot of noise around Flutter but haven't given it a try yet, but I'm weary because of defining views-as-code rather then a flavor of JSX/Angular Templates.
- k__ 7y agoHave you tried Expo?
- bauerd 7y ago>because of defining views-as-code rather then a flavor of JSX/Angular Templates JSX is just syntactic sugar, it's not a templating language. You could write yourself a JSX syntax extension for Dart, it'd be the same thing really. Edit: More succinctly, JSX desugars to method calls
- eklavya 7y agoFor a stupid guy like me who needs the compiler, flutter is the most sane experience I have ever had in the UI ecosystem (except Qt and JavaFX). The view as code is really really better (for me).
- krzat 7y agoSame here. I don't see how adding some kind of XML layer on top of Dart would help with anything.
- teamski 7y agoTell us nore about your dev experience with Flutter. Can you also create the web version of your app with Flutter?
- eklavya 7y agoDesktop and web versions are in the making. So we will be able to make all of them from a single codebase. I am really dependent on static types so take my take on this with a grain of salt :) Flutter is more mature right from the Dev tools to the overall ecosystem. The types are first class and make it a joy to use. Not to mention the libraries are better quality and stuff works even when you upgrade. I could never work on any RN project for more than 1-2 weeks without something or the other breaking and me cursing out aloud for the really shitty (again subjective) state of things. I am used to having codebases just keep on working almost forever.
- teamski 7y agoIs the layout system as powerful as eg css' flexbox, React's component composing etc.?
- virtualwhys 7y ago> I found Ionic to have the most enjoyable and cogent end-to-end experience amongst the three. Agreed, though I'd love to use Ionic with Scala.js in place of TypeScript (which is great, but doesn't give me the same if-it-compiles-it-works confidence as Scala does, not to mention batteries-included standard library). Hopefully technology will emerge that allows one to write once/run everywhere in preferred-language on all major platforms. Compromises seem to abound with currently available options.
- yesimahuman 7y agoScala.js sounds really interesting. There's no reason you shouldn't be able to use it with Ionic as of Ionic 4, since we generally now support whatever framework you want to use (not just Angular anymore)
- s_y_n_t_a_x 7y agoI'm not sure why TS wouldn't give you confidence. The compile process is simply stripping out the typing to JS.
- jakear 7y agoI think they mean TS lets too much buggy code typecheck, as compared to Scala.
- frankpf 7y agoI don't think that's true. TypeScript's type system is very advanced, and has most of the features you need for type-safe development if you use strict mode (which is the default for projects created with `tsc --init`). It has ADTs, null safety, exhaustiveness checking and the LSP tooling is better than any other language I've tried. The biggest feature that's missing from Scala is HKTs, and even those can be faked in TS.
- yawaramin 7y agoIt doesn't have soundness.
- yesimahuman 7y ago(Ionic co-founder here) glad you're enjoying Ionic, we're working on a ton of stuff to improve it even more right now. Have you tried Capacitor yet, our Cordova alternative?
- lwansbrough 7y agoSounds interesting. We’re looking into Cordova right now. Do you have a page which explains the benefits of this vs. Cordova?
- yesimahuman 7y agoYep lots more info here: https://capacitor.ionicframework.com/docs/cordova https://capacitor.ionicframework.com/docs/cordova Also see some past blog posts with more: https://ionicframework.com/blog/announcing-capacitor-1-0/ https://ionicframework.com/blog/announcing-capacitor-1-0/
- xenospn 7y agoI'm still using Ionic v3 with Cordova - assuming I try and migrate to Ionic v4, will I have to use a whole new set of plugins with Capacitor?
- yesimahuman 7y agoNot necessarily. Cordova plugin compatibility was designed in from the start. Unfortunately, some plugins relied on more obscure aspect s of Cordova and don’t work. We keep an updated list of incompatible plugins here: https://capacitor.ionicframework.com/docs/cordova/known-incompatible-plugins/ https://capacitor.ionicframework.com/docs/cordova/known-inco...
- xenospn 7y agoYeah, looks like quite a few of the plugins i rely on are on that list :(
- antihero 7y ago> React Native didn't support Typescript as a first-class citizen As someone that uses TypeScript to death and works on react native as my job pretty happily, please explain this? Also JSX is absolutely not a templating language, it's an extremely thin layer over JS.
- halfmatthalfcat 7y agoShould have made the distinction clearer but I was just saying JSX _and_ Angular specific templates. The fact of JSX being an abstraction over the React API that equates to what the DOM _should_ look like is must easier to grep then defining them as literal code, imo. When I used React Native with Typescript (this was about a year ago) the initial setup to get all of the types playing well together either wasn't clear from the documentation or I ended up debugging/writing custom definitions to get things to work. It just felt sidelined or treated as a second class citizen, but I feel like this has been a common theme throughout the life of React generally.
- duncanawoods 7y ago> equates to what the DOM _should_ look like is must easier to grep then defining them as literal code, imo It's a common view but really quite a funny form of path dependence / mental fixedness. The fact that html elements have been defined with angle brackets is essentially historical accident. It's just a simple hierarchical structure that can be in any notation and any given programming language can happily support this already without new syntax. Yet because of the history, we feel more comfortable with some angle brackets and so we have all this redundant syntactic complexity in jsx/tsx which we would never design without the history. I'd encourage you to be open minded for going to all code because although there will be an acclimatisation period as you break the historical connection, those familiar angle brackets are totally superfluous.
- halfmatthalfcat 7y agoI've worked with frameworks like GWT and Vaadin enough to know I prefer the DOM way of doing things over visualizing the view through code. Hell, I've used the React programmatic API before I used JSX...never going back.
- verttii 7y agoI much prefer React Native's (React) paradigm over Flutter's, but as a platform Flutter is just a lot more robust in my experience. Everything just works on it while RN has all kinds of weird quirks and issues, particularly when using libraries that have native code. I chose to give up on RN at 0.59 and focus my efforts on getting really fluent at Flutter instead.
- teamski 7y ago> as mature as [...] Cordova Stopped reading there.