Can’t comment on Nativescript, but I have worked with both PWAs and React Native apps. Personally, I think PWAs are the way to go in a lot of cases. Definitely easier to work with if your team has a web development skillset.
React Native outside of expo can be a huge headache. The actual programming is fun but dealing with compilation issues, app publishing and versioning, etc can be super annoying. If you go down the React Native route I would highly recommend staying on Expo.
I work with an app that was made close to a year ago in React Native, and it feels like a really old app sometimes since things change so fast in React Native land. We constantly have to deal with issues surrounding older versions not working with certain packages or not building in ios or android. Sometimes I feel like all it takes is a gust of wind to cause it to stop building.
I would love to explore the PWA route more so I can leverage my web skills and move faster. Plus the added benefit of browser APIs and no need to publish to apps stores / test for different devices or learn their own APIs.
In terms of PWA… I hear Safari / iOs is lagging behind in terms of support. In your opinion is this a big issue?
I’d love to hear more about your PWA experience! Is it possible to just save the site to the homepage and then it looks and feels like an app?
You can still install them like a regular app through safari, but the process is a little more involved for the user. On the ones I’ve worked with, we weren’t too concerned about having users install so just let them use it in their browsers. If you’d like users to install, Ive heard one approach you can take is to manually check if the device is iOS and safari and have a pop-up with installation instructions. Still requires some additional user action though, more than Android where a native pop-up will ask you if you want to install
Cool, yeah I suppose just using feature detection to handle various browser support issues would be the way to go. I like the idea of a PWA in terms of being able to move fast and not be restricted by the app store’s red tape.
I just wonder though if users really care whether an app is “native” and if there is a perceived value in having it been downloaded from the app store vs. browsing on a mobile browser.
When building / working on your PWA’s what stack did you use? Was there much of a learning curve to implement the PWA specific settings/functionality?
PWAs are the easiest to develop by long way. But there are serious caveats about features (it is dependent on them being available on the web platform).
Probably the most serious is that iOS doesn’t allow state to be saved between sessions. Discoverability is much, much lower (though that may be irrelevant, entirely depends on use case). IMO not mature enough for much serious at the minute, but it’s completely dependent on use case.
A [well built] native app is going to feel better to use than a PWA as things stand, no question. Critically, power consumption is generally large relative to native apps – as an fairly extreme example, this forum is a very basic PWA, and it ticks my battery down on average about 1% every couple of minutes or so even if I kill everything else (Android, Pixel 2, & I assume it’s the networking causing it). It’s not even close to as easy or viable to optimise these things in a PWA as it is a native app.
An authority saying “this is kosher” is currently important.
Yep, spot on my experience as well. One thing I would say as well is yes, Expo is quite nice, but it’s shininess hides quite a lot of stuff. It makes RN development into a magic black box, and I’ve found the Expo platform has a tendency towards memory leaks while it’s running in development that chew through system resources (YMMV)
You need to serve the app over HTTPS, include a manifest file (here is a manifest generator: https://app-manifest.firebaseapp.com/ ), and include a service worker script (which is the thing that makes it a PWA). Note the service worker doesn’t have to do anything, it just has to be present. That’s all that is needed to be a PWA.