DEV Community

Ben Halpern
Ben Halpern

Posted on

I put an early DEV iOS app up on GitHub and would love your help!

I spent a bit of time building a the beginnings of an iOS app:

GitHub logo forem / DEV-ios

DEV Community iOS App

Build Status GitHub License Language Maintainability Test Coverage

DEV iOS 💖

This is the repo for the dev.to iOS app.

Status:

Released first version, more info: https://twitter.com/bendhalpern/status/1061323718058786822

Design ethos

We will grow to include more native code over time, but for now we are taking the approach of native shell/web views. This approach lost favor early in iOS days, but I believe it is a very valid approach these days. It is inspired by how Basecamp does things. Our tech stack is a bit different, but the ideas are the same.

https://m.signalvnoise.com/basecamp-3-for-ios-hybrid-architecture-afc071589c25

https://signalvnoise.com/posts/3743-hybrid-sweet-spot-native-navigation-web-content

https://signalvnoise.com/posts/3766-hybrid-how-we-took-basecamp-multi-platform-with-a-tiny-team

https://www.youtube.com/watch?v=SWEts0rlezA

By leveraging wkwebviews as much as possible, I think we can make this all pretty awesome and sync up with our web dev work pretty smoothly. And where it makes sense, we can re-implement certain things fully native, or build entirely native features. Life's a journey, not a destination.

Contributing

  1. Fork and clone the project.
  2. Build and run the project in XCode.

This is a call for anyone who wants to improve it in any way. I'm not super experienced in this arena, and neither are the other folks on the DEV team. I do think we're taking a good approach to start off (described briefly in the Readme), but you're welcome to debate me on the million ways to build native apps. 😄

By the way, we're actually getting close to open-sourcing our whole codebase. It will happen some time in July. We'll announce a target date at some point next week. We can't wait to give the code back to the community.

Thanks for being wonderful. I look forward to learning from any iOS devs who care to make an issue or PR on this project to improve it in any way.

Happy coding ❤️

Top comments (26)

Collapse
 
cyril profile image
Cyril Niobé

I asked to the DEV twitter account, few months ago, about an API cause I really wanted to start an native android app so if there is an official github repo to build it that's really cool :)
I'm gonna dive in during summer.

Any android dev here to discuss about it with ?

Collapse
 
ben profile image
Ben Halpern

Awesome, have at it!

Collapse
 
nektro profile image
Meghan (she/her)

What changed your mind over serving just the pure PWA?

Collapse
 
ben profile image
Ben Halpern

So far iOS PWA has been super buggy and basically unusable as a PWA.

Things like this stackoverflow.com/questions/497581... and more.

We're not really shifting strategies so much as putting more feelers out in terms of possible long-term approaches. By going with the web wrapper approach I'm pretty sure this means we can continue developing for web as we wanted to and see what works out.

Also, this was a fun chance to put something out there as fully open source, we've been itching to do that.

Collapse
 
nektro profile image
Meghan (she/her)

Not to say that this is everyone’s experience by any means, but that functionality has been fixed and I’ve been using the iOS pwa for a while now :)

Thread Thread
 
ben profile image
Ben Halpern

Are you able to log in? Are we missing something? I can't say we've been super scientific about our approach to trying to figure the whole thing out.

Since you now have access to the code we definitely welcome any inspection of how we could make things work as Apple gets fixing things.

Thread Thread
 
nektro profile image
Meghan (she/her)

Yeah Apple made it so that all links and redirects stay within the standalone window. So the twitter stays in the pwa and redirects just fine but it also loses the ability to open links in a new tab once im actually in an article. And since standalone removes the browser controls I have to reset the app to go “back”. Apple also has it setup that the page refreshes every time you close and reopen the pwa (even just to the home screen).

It’s not perfect and chrome definitely still has the better UX here but I do login and check up on things. ((I’m on 11.4.1 btw))

Collapse
 
kayis profile image
K

Missing ad revenue xD

Collapse
 
ben profile image
Ben Halpern

Yep, it will probably be even less worked out but if you’re willing to buy in to the same type of direction as the iOS one I can get that repo up ASAP.

Collapse
 
mohammedfoysal profile image
Mohammed Foysal

I would love to contribute to the Android app, as long as it's native.

 
ben profile image
Ben Halpern

Okay, here it is blank, I welcome any kind of PR that moves along, as long as it's in line with the ethos (or convinces me of a direction change)

thepracticaldev / DEV-Android

DEV Community Android App

DEV iOS

This is the repo for the dev.to Android app. There is nothing here, but with your help, maybe we can get this up and running soon! Thing should relate ideologically to the concepts we are building with the iOS app.

We are bought in to the Basecamp idea of building for native, described in a few articles and talks from them:

m.signalvnoise.com/basecamp-3-for-...

signalvnoise.com/posts/3743-hybrid...

signalvnoise.com/posts/3766-hybrid...

youtube.com/watch?v=SWEts0rlezA

Our app doesn't have the exact same needs that they do, and we don't use Turbolinks in our web app, so we can't just copy their approach full-on, but I still think this jives for now. To be clear: I'm not sure whether we use Turbolinks native or not, but the part I do agree with is using web views and native nav etc. where possible to start, and thene evolving as is natural.

By leveraging web views as much as…

To be clear, I'm not sure we need or want to use Turbolinks per se, but their ideas are agreeable to me.

Thread Thread
 
chrisvasqm profile image
Christian Vasquez

This is awesome!

I was thinking about learning some Ruby to be able to help once the web version is out, but this got me even more excited!

Collapse
 
hu9osaez profile image
Hugo Sáez

Question: Why not use React-Native for Android and iOS? It works very well.

Collapse
 
maximfilimonov profile image
tpaktop

My first thought, exactly :) Though, I presume that maybe basecamp approach is easier to get started with for RoR developers. AFAIK dev.to is written in RoR.

Collapse
 
restoreddev profile image
Andrew Davis

Are you looking at creating some screens natively or will it be a web view wrapper? I believe that Basecamp's app pulls some data from an API and shows it natively and then some screens are web focused, depends on the feature set I guess.

Collapse
 
ben profile image
Ben Halpern

Yeah, that’s the idea, but starting with the simplest web view approach and growing from there as seems appropriate. Not looking to rush into anything.

Collapse
 
coolshaurya profile image
Shaurya

There's a PWA you can add to your homescreen so an Android app is not necessary. I think the only reason an iOS app is being built is lack of proper support of PWAs on iOS.

Collapse
 
cromanelli profile image
Christian Romanelli • Edited

I am a swift developer , I might be able to contribute to create a native app for iOS

Collapse
 
ben profile image
Ben Halpern

Wonderful!

 
ben profile image
Ben Halpern

I’m not sure, but starting with the webview should get us on the way. I’d imagine we can feel around for our needs as we go.

Collapse
 
diogomqbm_ profile image
Diogo Mafra

Have you considered a hybrid app development? Like React Native?

Collapse
 
chrisvasqm profile image
Christian Vasquez

Perfection

Collapse
 
lawgimenez profile image
Law Gimenez

I would love to contribute as long as it is native written in Swift. For Android written in Kotlin.

Collapse
 
ben profile image
Ben Halpern

Yep, that's the plan on both sides. Feel free to start messing around with the iOS app, it's not tooooo far from a beta :)

 
coolshaurya profile image
Shaurya

Play Store presence is not required because as soon somebody visits dev.to on Android the browser displays a note at the bottom of the page to add the page to the home screen.

 
ben profile image
Ben Halpern

This is great, I'll respond to your DMs 😄