• 0 Posts
  • 14 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle
  • I’ve been working on Duet, an open source Getting Things Done task app. It’s mainly developed as a PWA, with a working Android client.

    I primarily only intented to distribute it as a PWA, but there are way too many problems with this approach:

    • Since it’s offline first, I had to find a suitable database that can be used locally. Browser level Implementation ended up being based on IndexedDB, and all was swell on Android, but it was dog shit slow on iOS because of a long standing bug in Safari that Apple has never fixed since iOS13
    • PWAs work great on Android - but only when accessed and “Installed” via Chrome - Firefox support is nil (for any platform TBH), and other Chromium browsers don’t have the same featureset for PWAs that Chrome does. Like for example, WebAPKs, which add a ton of niceties like launcher shortcuts, or “open in app” when browsing a supported link in Chrome. WebAPK has been claimed by Google to be released “shortly” since 2022, but so far, only Samsung’s browser support a similar feature set, and I don’t think they’re using the same WebAPK standard that Google uses on Chrome
    • Local notifications - there were proposals for support for this, but all of them fell through, and since Duet is offline first, I’d need to run a separate API server to facilitate push notifications (and also make it insanely difficult if someone wants to selfhost their own instance of Duet)
    • PWAs suffer from limited resources on Android - initial versions of Duet wasn’t actually offline first, and communicated with a self-hostable API server, and the app itself was written in Vue. The scrolling and UI animations were extremely janky when Vue was managing deep reactivity for a bunch of things. In fact, if you run the PWA version of Voyager for Lemmy, you’ll notice the same thing. This isn’t there on iOS, and moving the PWA into an WKWebView or WebView instantly makes it more responsive without any changes in code at all.
    • File access - PWAs can’t access the local filesystem. This is probably for the better, but I seem to recall there’s a standard for it being discussed.

    PWAs work well for any sort of situation where you have online experiences like shopping or the like - Walmart’s Flipkart have a really good PWA built in React Native for Web and is often showcased as the best example of React Native and React Native Web by the RN team

    The moment you want to make a slightly more complex app like a productivity app or similar, you’ll find it very hard to work with a PWA and would want a native counterpart.

    Not to mention that any sort of filesystem access pretty much requires you to have a hybrid app - either through React Native, or Expo, or Capacitor.













  • It’s interesting how the market has changed since the pandemic. When I got my Mi A1 in 2017, I was happy I had a stock Android device for about ₹15k. I had to retire it in 2020 because of a bent chassis. When I looked then, i could never find a decent phone around the same price range, especially with root/custom ROM support. The Poco X2 was just launching, and I missed out on getting it in the flash sale.

    Ended up visiting a Mi Store nearby, and found the Redmi Note 8 with a SD processor and an active developer community. Just ended up getting that. Had to retire that phone too, due to an accidental drop, and it took me over a year to find a decent replacement, with a budget increase to 35k.

    Ended up getting a Galaxy A53. Not the most ideal choice for me, but I’m tired of flashing ROMs and getting around Magisk and Magisk Cloak to get UPI apps to work.

    In that 10 to 22k range, literally most are either a Unisoc, Mediatek, or Exynos processor phones. And none of them have decent development support. Much of this is the after effect of the silicon shortage, Snapdragon messing up 5G, and OEMs reverting to Mediatek for a non-5G chipset.

    My recommendation is to check Amazon and Flipkart for any refurbished phones - either older mid range phones, or flagship phones.