JustFitness Logo

JustFitness

the elephant in the room

The PWA Elephant in the Room

Native App Development Announcement

Updated on 6 June 2022

Preface

I'll be honest. JustFitness’s biggest problem is that it is only available on mobile as a Progressive Web App (PWA). While PWAs are a fantastic addition to web technology, browser adoption is not exactly uniform. Essentially, just because one major party considers a feature to be a standard doesn't mean the other parties have to agree. Moreover, from my understanding, a feature's security and potential abuse need thorough consideration before becoming a new standard. Trust me. The more you look into it, the weirder it gets. And with that, it's time to address the elephants that are JustFitness's shortcomings.

Haptic Feedback on iOS

JustFitness should vibrate your device when you toggle the switches and vertically drag to increment and decrement numbers. A single line of code can easily do so on Chrome and Firefox, but Safari (WebKit) says 'Naw Dawg.’ At the time of this writing, Webkit has not implemented a way for websites to vibrate devices. An easy solution would be to download another browser, right? Well no. Apple requires every web browser on iOS to use WebKit at its core. So any other browser used on an iPhone is essentially Safari. Haptic feedback will not work on iOS devices until they remove the restriction. I don’t have the XP to have an opinion on the matter. I'm just letting you all know that there are forces beyond my control preventing an authentic, seamless cross-platform experience with the application as long as it remains a PWA.

Notifications

When a website asks if I want to allow notifications, I cannot click 'No' fast enough. JustFitness needs to be able to send you a notification when the rest timer finishes counting down. At the time of this post, the alarm does not function reliably and predictably. For example, it will only play when the app is in the forefront or second in the stack. If you switched to a third app, the alarm would not sound until you return to the app, which completely defeats the purpose of the alarm. Imagine waking up every hour to make sure the alarm is still activated. Unacceptable.

Additionally, the alarm sound plays as if the source is a music player. Thus, interrupting whatever is currently playing and does not resume your audiobook or music once it finishes. It's very annoying even to me so that one needs a solution ASAP.

"Is it in the App Store?"

"Is it in the app store?" is consistently the first question people ask about the app. Every time it is asked, I have to say no and then explain what PWAs are and how they work. It’s the elephant in the room. JustFitness aims to meet and exceed your expectations of a fitness app, and its state as a PWA misses the mark. I am incredibly humbled and grateful to the people who've taken the leap and subscribed to JustFitness so early in the app’s lifetime. Thank you for your feedback and support.

The Solution

My goal is to launch the app on android and iOS in beta at the same time. It requires that I learn to program for both operating systems concurrently. With that said, I am pleased to announce that I will not have to rebuild the entire application from scratch. Just the parts specific to each OS, like haptic feedback and notifications. Both of which are fully functional on my local devices. I cannot wait to share it with you all.

So, What’s the hold-up?

Well, Apple and Google each have their own set of rules that the app must follow. For example, all apps must use their respective payment processor on their distribution network. JustFitness currently uses Stripe to process payments securely. If launched today, it would violate the terms of service of the Play and App store. No Bueno. To continue, I have to find the answer to the following questions:

  • How do I implement payment processing on android?
  • How do I implement payment processing on ios?
  • How can I get three payment processors to play nice together in one database?

The answers to the first two questions are easy, so I'm not particularly concerned with them. However, the dragon over the mountain lies in discovering the solution to number three.

Thank you

Thanks for taking the time to read this. If you've been following my posts on IndieHackers or /r/JustFitness, then you know that I'll cross this milestone in no time. Thanks for using JustFitness to track your workouts, and if you've subscribed, double thanks for your generous support.