Angular v Vanilla:
After my original question, I indeed have been developing using nativescript with Angular, and I am glad I made the choice.
I have also used webpack–and it seems to work well with just the simple command (for ios):
$ tns run ios --bundle --env.uglify --env.aot
With this command, testing the app on my phone, it became very small and performance was very strong. Hopefully this stays the same for production.
ionic v nativescript:
Regarding ionic v nativescript, from my experience both can work well. Ionic’s community was great and the documentation was easy to follow, so development was smooth. Nativescript’s community is not as extensive as of now and its documentation a little less friendly, but the documentation is improving and I have been helped a ton by people on this forum.
The thing that took me the longest in nativescript was understanding the UI. it turns out to be pretty simple to use, actually, but I struggled to find straightforward example code early on in my development. I feel like I have the hang of it now. You can see some very simple UI code examples in some of my answers, like here (2 level list) and here (list with items above and below) .
For ionic, the biggest concern I had was what would performance actually be like in production. Online, people here and there say it is not as strong, but it was hard to gauge. When I was developing in ionic, however, I continually had issues with how my simple apps would perform when I put them on my device. I would regularly have issues where you would tap a button and nothing would happen, or there would be a noticeable pause before it registered the tap. Same issue with transitions between view screens–the transition would take a noticeable amount of time, and then not be smooth.
Maybe there was a solution to this that I never discovered? If not, this was a big deal for me–a UI experience that the average user would clearly notice as being inferior.
For nativescript, in testing on my phone, I have not had any of these issues. Button tapping works great, and screen transition is perfectly smooth. (Hopefully it stays that way.)
There is a lot of talk about startup time–and this is important. But most important for me is the experience while using the app itself. I have on my phone one the top apps in the Apple app store (not ionic or nativescript I believe), and it takes five seconds to start up, but performance is good once it is opened.
So I want the startup time to be fast, but I most of all want the performance of the app to be smooth when interacting with the user. I was not able to get ionic to be sufficient on that. Maybe there is a way, but at the time the only guidance I found on improving things like button responsiveness and screen transition was fairly complex, and the results after going through the complexity seemed unclear.
My current bottom line:
So I have started recommending nativescript to people. One benefit of ionic I noticed was that it seems to offer “hot” updates, where you can push through code changes to a live app onto people’s phones without going through full app store process. As far as I know, nativescript does not offer this. Hopefully it could at some point.
But even with that, I have enjoyed nativescript and plan to keep using it.