Johan Forsell
joforselldev.bsky.social
Johan Forsell
@joforselldev.bsky.social
Grade school teacher turned iOS developer, currently at Tibber. Maker of bartab.info. Absolutely love learning new things.
Reposted by Johan Forsell
I stand with PBS.

I stand with NPR.

I stand with Stephen Colbert.

I stand with Jimmy Kimmel.

I stand with the First Amendment.

PERIOD.*

*Also #ReleaseTheEPSTEIN_Files
September 18, 2025 at 6:40 PM
Reposted by Johan Forsell
1939
July 26, 2025 at 6:40 PM
Reposted by Johan Forsell
Our new app PocketShelf is OUT NOW! 🥳

- Track your Books 📚
- Get AI summaries of your reading notes 📝
- Designed for Liquid Glass 💧
- 100% Indie Made ♥️

Exclusively on iOS26!

Please help us spread the word! 🙇‍♂️

#shipaton #buildinpublic
September 15, 2025 at 5:50 PM
Trying to finalize stuff to get Bartab 2.0 out the door but the small tasks keep handing me side quests.

Like, I wanted to set up the forgot password flow and suddenly I’m replacing my old Django web site with GitHub pages and setting up transform rules in Cloudflare.

#buildinpublic #indiedev
August 29, 2025 at 4:49 PM
Reposted by Johan Forsell
iOS devs: what do you use to track a funnel from App Store page view right the way through to onboarding steps and onto in app subscription purchase?

Right now I’m using GA for tracking onboarding steps, RevenueCat for purchases and then just eyeballing App Store analytics for page views. #iosdev
August 26, 2025 at 3:11 PM
Sometimes, after solving a bug, I feel that it’s absolutely amazing that I found someone willing to pay me to do this.

Or that I manage to tie my own shoes, for that matter…

#iosdev #swift #swiftlang
August 24, 2025 at 11:24 AM
Getting there! Set up a staging server for the old backend to make sure the user transition works. Removed the last references to Firebase. Auth, storage and DB are now all Supabase!

Build 2 with some UX smoothing already on the way.

#buildinpublic #iosdev #indiedev
August 23, 2025 at 6:54 AM
Back to work and we’re getting @cursor.com.web.brid.gy licenses! Getting more and more used to the Cursor+Sweetpad setup for iOS dev, will be interesting to evaluate after using it more frequently at the jobby job.

Sorely missing an account switch feature though 😅

#iosdev
August 18, 2025 at 3:33 PM
Wait why haven’t I seen the @revenuecat.com Customer Center feature before? So glad I saw this before updating my own half-assed, shitty implementation 😅
August 17, 2025 at 9:47 AM
Currently experiencing first hand the last 20% taking 80% of the time. I really want to get this base line update out so I can start push out a whole bunch of features I have in mind, but new things keep springing up 🫣

#buildinpublic #indiedev #iosdev
August 16, 2025 at 3:11 PM
Ok, ready to wrap up the ground work!

✅ Firebase -> Supabase, both database and auth
✅ PowerSync in place and API layer refactored accordingly
✅ Some touch ups stirred up by the refactoring

Now to make sure migrating goes smooth for users on the new version.

#buildinpublic #iosdev #indiedev
August 13, 2025 at 8:58 PM
Reposted by Johan Forsell
August 13, 2025 at 7:14 PM
Reposted by Johan Forsell
I’m not super active on here, but a few folks asked me to share when I drop new content over on my blog. So here’s _everything_ new in UIKit in iOS 26!

sebvidal.com/blog/whats-n...
What's New in UIKit
Learn what's new in UIKit in the iOS 26 SDK.
sebvidal.com
August 13, 2025 at 11:50 AM
Such a delightful way to relive memories captured on your phone 😍

It’s like doom scrolling but on memory lane.
Cassette is live! a fun way to watch your home videos shot on iPhone. Is this a launch video? I’m not sure, but it is a video.
youtu.be/5iQwZ09OIao...
Cassette: iOS App
youtu.be
August 12, 2025 at 10:30 PM
Of course it’s very little work to roll my own solution for this, just feels like a small convenience API fits the bill for the SDK.

The plan is to persist expiration date locally to use as a fallback, then give a grace period of 7 days after that runs out.

#buildinpublic #indiedev #iosdev
Realized that if I want the app to work offline it needs to be able to handle entitlements while offline too. Was hoping that the @revenuecat.com SDK would have a handy API for this but doesn’t seem like it? Setting cache time and checking time until cache expires would be enough.

#buildinpublic
August 10, 2025 at 9:01 AM
Been sleeping for too long on the Sub Club podcast by @revenuecat.com, really interesting stuff! Any recommendations for similar podcasts that also handle the business side of apps?

#indiedev #podcast
August 10, 2025 at 8:41 AM
Realized that if I want the app to work offline it needs to be able to handle entitlements while offline too. Was hoping that the @revenuecat.com SDK would have a handy API for this but doesn’t seem like it? Setting cache time and checking time until cache expires would be enough.

#buildinpublic
August 9, 2025 at 7:09 PM
Reposted by Johan Forsell
Well, looking for a new position

Decades of Apple development in obj-c, Swift, Appkit, UIKit, and SwiftUI.

Spent the last year working on a Mac product for Apple CGStudio asset team.

Reach out, I’m available!
August 2, 2025 at 7:09 PM
Ok, pretty happy with the result! More space, easier walking surface, a great deal tidier and a whole lot more welcoming. Maybe now I’ll have time to work on Bartab again 😅
August 1, 2025 at 7:41 AM
Bartab update!

Just kidding, dug up my entire entrance instead 🫣
July 27, 2025 at 3:18 PM
Moving mapping and aggregation of analytics items from the iOS code base to materialized views in Supabase.

Not only will it reduce complexity in the code but also make lookups faster (when traversing graphs) and enable reusing for a web dashboard!

#iosdev #indiedev #buildinpublic
I’ve just scratched the surface of the refactoring ripples this will cause across the app. From references to changed/removed properties to bigger overhauls of the data flow throughout the app as a whole. It’s chunky, but I’ll bet it feels REAL good when it’s done.
July 25, 2025 at 11:43 AM
Supabase auth and PowerSync in place now, surprisingly smooth in both cases. Had one hiccup where PS documentation didn’t cover the new Supabase JWTs but that was quickly resolved on their Discord channel.

#iosdev #indiedev #buildinpublic
After that, I’m assuming I’ll have a boat load of refactoring to do to fit everything into this new and improved data structure.

Not to mention the implementation of PowerSync and the SQL shenanigans that follows with that.

Hopefully it’ll all be simpler afterwards!
July 22, 2025 at 1:12 PM
Anyone with experience using #Stripe Express as a platform?

Would love some first hand accounts.

#saas #indiedev
July 20, 2025 at 10:19 AM
Reposted by Johan Forsell
Calling any users of the Swift Forums! (No matter how much or little you use it)

What are your top 3 features you’d want in a native application vs your current experience on the web?
Would you have different priorities on macOS vs iOS? #Shipaton #GoBubblesApp
July 16, 2025 at 4:32 PM
My 4 year old saw a snail with a broken shell and showed me.

Me: You think he can repair it?

Kid: No… he has no tools, no home and no friends.

…kick a snail when they’re down, will ya?
July 16, 2025 at 6:24 PM