this post was submitted on 28 Sep 2024
69 points (89.7% liked)

Android

17690 readers
38 users here now

The new home of /r/Android on Lemmy and the Fediverse!

Android news, reviews, tips, and discussions about rooting, tutorials, and apps.

🔗Universal Link: !android@lemdro.id


💡Content Philosophy:

Content which benefits the community (news, rumours, and discussions) is generally allowed and is valued over content which benefits only the individual (technical questions, help buying/selling, rants, self-promotion, etc.) which will be removed if it's in violation of the rules.


Support, technical, or app related questions belong in: !askandroid@lemdro.id

For fresh communities, lemmy apps, and instance updates: !lemdroid@lemdro.id

💬Matrix Chat

💬Telegram channels / chats

📰Our communities below


Rules

  1. Stay on topic: All posts should be related to the Android OS or ecosystem.

  2. No support questions, recommendation requests, rants, or bug reports: Posts must benefit the community rather than the individual. Please post to !askandroid@lemdro.id.

  3. Describe images/videos, no memes: Please include a text description when sharing images or videos. Post memes to !androidmemes@lemdro.id.

  4. No self-promotion spam: Active community members can post their apps if they answer any questions in the comments. Please do not post links to your own website, YouTube, blog content, or communities.

  5. No reposts or rehosted content: Share only the original source of an article, unless it's not available in English or requires logging in (like Twitter). Avoid reposting the same topic from other sources.

  6. No editorializing titles: You can add the author or website's name if helpful, but keep article titles unchanged.

  7. No piracy or unverified APKs: Do not share links or direct people to pirated content or unverified APKs, which may contain malicious code.

  8. No unauthorized polls, bots, or giveaways: Do not create polls, use bots, or organize giveaways without first contacting mods for approval.

  9. No offensive or low-effort content: Don't post offensive or unhelpful content. Keep it civil and friendly!

  10. No affiliate links: Posting affiliate links is not allowed.

Quick Links

Our Communities

Lemmy App List

Chat and More


founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] gadgetroid@lemdro.id 2 points 1 month ago

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.