This post on the evolution of fb’s iOS architecture is remarkable. Is it a boast or a confession?

At every step, abstracting away from the underlying platform is presented as an ingenious necessity, but my reflex is to wonder if it’s not an avalanche of misjudgments, gathering speed as they compound on each other.

It’s like a Rorschach test of your engineering instincts.

https://engineering.fb.com/2023/02/06/ios/facebook-ios-app-architecture/

The evolution of Facebook’s iOS app architecture

Facebook for iOS (FBiOS) is the oldest mobile codebase at Meta. Since the app was rewritten in 2012, it has been worked on by thousands of engineers and shipped to billions of users, and it can sup…

Engineering at Meta
@algal Despite having not worked on such a large project, I can believe how these types of solutions to working with so many others on one app get here. Other companies with 100+ engineers spoke about how they use custom build systems to address these problems I haven’t encountered, so I’m giving this ‘architecture’ the benefit of doubt.
@algal Before I read it, my initial thought is of SwiftUI which has been a powerful abstraction that has enabled multiplatform development. Creating a List has been far simpler than a UITableView. With React Native in mind, I have low expectations of FB Engineering, but I appreciate how concepts like List can be coded in abstract and work on multiple platforms.

@algal Ok, just read it. I recognize a lot of the problems that plague apps with a large code base. Work done at launch on the main thread is a frequent battlefield. It seems things spiraled out of control and it could take 10 years to tame it.

I’d seriously consider starting fresh with multiple simplified apps that makes speed and idiomatic usability a priority. That would make users happy to spend more time with FB apps. Universal Links would be a great way to deep link into other FB apps.

I know many think multiple apps won’t work, yet we have Messenger. Having apps with their own prioroties and release schedules would unlock so much functionality which currently requires so much overhead. I’d start with Marketplace.