October 31, 2019

Why I made a PWA and maybe you should too!

Grant Orndorff @orndorffgrant

Coalesce is a progressive web app, which you might think is a risky move for a startup - after all, have you heard of any successful PWAs yet? Twitter, Instagram, and Spotify all have PWA's but hardly anyone uses them, and those companies all grew with a combination of native and normal web apps before they decided to make PWAs. Here I'll attempt to justify my decision and you can tell me what you think in the comments :)

What is a PWA?

If you're on IndieHackers I'm guessing you're familiar with traditional web apps and native apps. You might be new to PWAs though.

The name "PWA" was coined by Google and is essentially just a term for web apps that take advantage of several new web browser features to offer an experience close to native apps. The biggest of these features are:

  • Install to home screen
  • Self contained (not confined to web browser)
  • Offline support
  • Push notifications

These are made possible under-the-hood by the web app manifest specification, javascript service workers, and also less-new things like, but I won't get into the technical details now. Instead, I'd like to justify (read: post hoc rationalize) why it was a good business decision.

One app for every platform

PWAs can be installed on any platform. That means I have one codebase to work on, and it works on iOS, Android, Windows, Mac, and Linux. As a solo-founder with a full-time job, I need to save time wherever I can, so cross-platform support without any extra work is a huge bonus. I can focus on shipping features instead of debugging platform specific issues.

This is great for the users too. There will never be an inconsistent experience between the Android and iOS versions of the app, because they're the same app. A notable downside here is that the apps won't "feel" like the platform they're on. I.e. the Coalesce on iOS doesn't really look like other iOS apps. I predict that as web tech becomes more popular for local apps, people will become more accustomed to the different feel.

Installation

So far, you might be like "Okay that makes sense, but traditional web apps get all that too. Why spend the time to make your web app "progressive"?".

A feature of native apps that I think is critical but is often taken for granted is the ability to manage it separately from other apps. You can organize it on your home screen, open it directly, and it gets its own spot in the task manager. Meanwhile, web apps have been relegated to living as tabs within your web browser.

Its easy to forget about a web app when its stuck in the browser and lots of people prefer the standalone experience of native apps. PWAs allow for that standalone experience. My theory is that if people install the app during the trial, they'll just be more aware of it because its on their screen more, and be more likely to remember to use it. If more people on the trial actually use the app and get value from it, more people will convert to paying customers.

Another interesting feature of PWAs: installation totally optional. By allowing installation, I'm not excluding those who like to keep their web apps in their browser. Some people prefer to keep their home screen uncluttered and use apps from the browser. Others have limited storage, and won't have to choose between keeping their selfies and installing an app, because you don't have to install a PWA to use it - it works perfectly in the browser too.

More control over updates

When apps are delivered via the web, they can be updated seamlessly or with extremely little user intervention. This is great for people using apps because they never have to worry about being out of date.

It's also great for me. When I push out a Coalesce update, I can be sure that everyone will be using the latest version. If Coalesce were native, I'd have to be much more careful about making sure older versions of the app are supported during the period of time between deployment and everyone updating. That means more time spent on things that don't provide people value.

A related benefit of delivering an app over the web is that the web is not controlled by any single entity. Apps delivered by the Apple App Store have to deal with Apple's fees, rules, and long review processes. Google has its own rules and fees for it's Play Store. In both cases, I'd be forced to spend more time just to get Coalesce into people's hands.

Personal Growth and Interest

This is a selfish and not business serving reason. I think web tech is really cool and am excited about where it's heading. I think PWAs are going to be big and enjoy playing around with the latest tech. At the very least, I'm learning a ton, and it's keeping me interested as I develop this by myself.

Downsides

I'd be lying by omission if I didn't mention some of the downsides of creating Coalesce as a PWA.

PWA features are still very early in adoption and implementation. iOS doesn't fully support PWA functionality, though it is slowly and quietly getting better. On the other hand, Google and Microsoft are both pushing PWA technology and I'm confident that they will only become more supported, mature, and common in the future.

PWAs still can't quite do everything that native apps can. One day, I may bump up against the limits of PWAs and that could restrict the functionality of Coalesce. I know, however, that I won't run into this problem for the core feature-set and all currently planned features.

Finally, probably the biggest downside is that PWAs are still new and people just aren't familiar with them. I haven't yet met a person who actually has a PWA on their phone's home screen. I'll need to provide education on how to actually install Coalesce on different platforms.

Was it the right choice?

Who knows?!

I sure hope so, but only time will tell. Let me know what you think in the comments.

(This is a IndieHackers tailored version of a post on Coalesce's blog https://www.coalesceapp.com/blog/why-is-coalesce-a-pwa/)

  1. 1

    I have a native app for iOS for my mvp and just started experimenting with a PWA here: https://reader.paperback.ink, I still don't have complete offline support yet but getting there and exploring indexDB. I'm hoping I can cover web and Android with a PWA alone and keep the iOS / Swift app for now.

    1. 2

      That would be cool! Android/chrome definitely has the best PWA support of any platform. My offline support is still pretty buggy haha, but I will call out the “idb” library for making IndexedDB much easier to work with.

      1. 1

        I'm also using idb ❤️

  2. 1

    which technologie are you using?
    I'll use vue on my next project. Thought about using quasar, but I'm not sure if making it a desktop app is actually worth it.

    also quarsar is pretty new, which means it's not so mature and fewer tutorials etc.

    1. 1

      I'm using Vue with Vuetify (which I support on Patreon and whole heartedly recommend). I've heard of Quasar but haven't used it before, though it looks cool. It appears to take the route of packaging your html/css/js in electron and cordova whereas I'm trying to create a great mobile and installed desktop experience only using what the browser provides.

      Like you said, Quasar is pretty new but might be worth considering since it promises a lot! I might try it out if I have some spare time.

      As far as whether or not a desktop app is worth it - that seems product-specific. I'm building productivity software so I think there's value in having it on your desktop/home screen next to your other apps. But it might not make sense for a lot of other products.

      1. 2

        I've never actually thought about using quasar before. I just followed it a bit. I'm looking to build a product for world of warcraft players. So my users are going to be very desktop focused. It might make a ton of sense to use it.

        I'll have to follow up on that in my upcoming customer interviews.

        I didn't even know there was another version of spotify with PWA, very interesting. I was always struggling with scaling of the spotify app on 4k under linux, works perfectly now.

        Thanks for your post and starting that thought process

  3. 1

    I haven't yet met a person who actually has a PWA on their phone's home screen.

    This is actually a huge problem. Trying to market and sell your application is already hard enough without this barrier.

    I am a huge fan of PWAs myself and like you I often add the capability because I think it's cool, but I think you're wise to also make it work well as a regular web page because that is how everybody who is not a developer and power user will interact with it.

    What I really wish is the browser makers would allow developers to add their own "install this app" button so you could prompt the user yourself.

    1. 2

      I totally agree, and like you said, that's why I'm making sure the business isn't dependent on the PWA functionality, but that it enhances the product. I also plan on writing some guides on how to install PWAs on different platforms and pointing new users at them.

      Also, this might not be exactly what you want, but there is the beforeinstallprompt event that at least chrome sends. https://developers.google.com/web/fundamentals/app-install-banners/#listen_for_beforeinstallprompt

      With that you can add a button or popup that asks the user to install, or even just auto trigger the install prompt I suppose. They still have to click "Install" on the Chrome prompt though.

      1. 2

        beforeinstallprompt is legit! Thank you. I hope this receives adoption as even being able to have a simple "install this app" on a page and not have it lead to an app store would be a game changer.

    2. 1

      This comment was deleted 5 months ago.

  4. 1

    This comment was deleted 5 months ago.

    1. 3

      I've become a big fan of PWAs and am looking forward to the death of the App store (or at least turning the app stores into listing services). That being said, PWAs do still have a few issues that I personally have spent many centimetres of hairline getting right, such as making sure that the newest version of the code invalidates the existing service worker properly.

      Despite that, it's still (imho) the best way to develop apps for web-centric tech.

    2. 1

      That’s a good point! There still definitely are things you’ll want to run on a server and those won’t be available when your PWA is offline.

      Some heavyish processing could probably be brought to the frontend using webassembly though. I’m not sure if we’re quite there yet, but imagine writing performance critical code in Rust and having it run in a different thread in webassembly. I’m hoping I run into an excuse to experiment with this honestly.

Recommended Posts