loading...
Cover image for The exciting challenges for Forem on mobile

The exciting challenges for Forem on mobile

fdoxyz profile image Fernando ・3 min read

Cover photo by Pawel Janiak from Unsplash

A few months of working with and using DEV's mobile apps (a.k.a. the first Forem) have taught me a lot. The most striking lesson learned was probably how strategic decisions can have a major impact in the productivity of a team.

Fast paced iteration

I was already interested in WebView based technologies before joining the team, but once I got to see how a well-oiled machine is able to iterate and improve a project like Forem I find it baffling this isn't a more broadly used approach for mobile development. If it wasn't obvious, the well-oiled machine I'm referring to is the Forem core team and the amazing community contributors.

No two projects have the same needs and that's why lots of different technologies coexist, which is great for everyone. In our case though, it would've been pretty hard to keep up the pace of new features released & refactors with such a small mobile team. By relying on a native shell app that wraps a WebView we suddenly benefit from every enhancement released without having to wait for store review most of the time!

To name just a few of these recent features released/refactored/enhanced:

Alt Text

These features would've required API development, design + assets, and the actual mobile development. Instead they were available the moment our CI deployed to Heroku with 0 lines of Kotlin/Swift code 🤯

Not everything is perfect of course! By living inside a WebView we're giving up on Native performance in a way, but there are also ways to bridge that gap.

How to address the limitations

WebKit & Android provide interfaces to interact between native code and the JavaScript running inside the WebViews. This is how we make Push Notifications work when you're logged in through a WebView.

Whenever you listen to a podcast in the Android or iOS apps the audio playback is using native APIs, which allows for background (locked screen) streaming. Haven't tried it yet? Go check out the DEV News podcast 😉

More recently on Android (coming soon to iOS), a fully native player is summoned to stream HLS video when interacting with an Article living inside the WebView. If you're using the most recent Google Play release I can suggest Salary Negotiation for People That Hate To Negotiate with Josh Puetz, or any other video content available in DEV!

What does this mean for Forem?

All of these integrations will work out of the box for Forem! If we decide to continue down this path, an approach very similar to the Forem browser extension means every Forem instance will have an app to rely on, which in turn, benefits from the hard work put into the Forem core codebase.

I'm very excited to hopefully help share this concept soon.

What is in your wish list for mobile?

There are areas we know have a lot of potential (which require a bit of work + time to get right) and they fall on either the core forem web repo or the mobile apps.

This is the time and place to hear about the features everyone wants for their mobile experience! Here are a few of mine also inspired by feedback:

  • Service Worker tuning for better performance (web app)
  • Smooth experience to switch between available Forem instances (mobile apps)
  • Good integration to jump between mobile browsers and the Forem native app (web & mobile apps)
  • Touch/Face ID support for authentication (web & mobile apps)
  • Android & the iOS new Widgets (web & mobile apps)

A great thing about using WebViews IMO is that we can choose which features we want to develop fully natively and which ones to delegate to our web stack.

As mentioned in the design ethos of DEV's apps: Life's a journey, not a destination. So whether we eventually phase out WebViews entirely or not I only hope it will be a fun journey while empowering communities 🌱

Posted on by:

fdoxyz profile

Fernando

@fdoxyz

Ruby, Rails, Docker, Mobile development and lots of random cloud computing plumbing.

Discussion

markdown guide
 

This sounds great Fernando! A couple of things I would love to see on mobile centre around podcasts, like progress tracking (server-side) and a mobile podcasts switcher view (which I think has been picked up by the community).

Really looking forward to seeing it all come together :)

 

I'm very much onboard for these ideas! I believe that providing a great experience for consuming other forms of content as well as Posts (like Podcasts & Video) will draw users and content creators alike to the platform. Really valuable feedback as usual @leewynne , thanks 🙌🏼