The Front-End iOS Practice
How does Artsy make iOS Software?
The Front-End iOS Practice is distinct from the Front-End practice at Artsy; although there is significant overlap between the two, there are some things that are necessarily very different when building iOS software that it warrants an iOS practice. Those things include:
- Much of our code is written in Objective-C and Swift, which aren't commonly used within Artsy Engineering.
- Testing is different from other Artsy systems (Front-End and Platform practices test on staging; we test in betas).
- Deploying is different from other Artsy systems (Front-End and Platform practices promote from staging to production; we cut betas and submit to Apple for App Store approval).
- Long-term maintenance is different (Front-End and Platform practices deploy code to hardware they control and can patch easily; we deploy code to hardware our users control and can't guarantee upgrading at all, so we have to anticipate how iOS code will continue to operate in production for years).
We do have a lot in common with the Front-End Practice:
- Large parts of our codebase are written in the Artsy Omakase.
- Our React/Native apps share a common design system.
- We're all solving problems for Artsy.
We also have a lot of non-iOS engineers contributing to our React Native app. Part of the Front-End iOS Practice, then, is to support Front-End engineers contributing to our iOS projects (mostly via React Native, but sometimes in native code).
There are two important Slack groups:
- @ios-front-enders Engineers who work on Artsy's iOS codebases in a native capacity.
- @app-release-team The
iOS App Quality Team
🔒is a focused team of one Designer, one Product Manager, and one Engineer who help ensure the Artsy iOS app's quality.
The Front-End iOS Practice meetings every two weeks; meeting notes are available in Notion.
Our goals are the same as the Front-End Practice goals, but with a focus on supporting iOS software at Artsy. That means we have the following additional goals:
- Build tools and systems to help non-iOS engineers contribute to Artsy iOS software using React Native.
- Help our colleagues understand the differences between building iOS software and web software.
Each iOS app at Artsy is deployed according to its own unique needs. See their repos (listed below) for deployment instructions.
Initially, Artsy apps were built with Objective-C. Then Swift was announced in 2014, and
we tried it but have ultimately
settled on React Native. We will still use
Objective-C and Swift for the foreseeable future, and native code will likely always make sense for parts of our
app (notably, the Augmented Reality feature and the animation-driven
Live Auctions Integration,
user interface). New features are being built using React Native; the remaining native parts of our main app are
Artsy iOS Apps
Artsy has the following iOS applications, which are all open source.
- Eigen is Artsy's main iOS app. (Objective-C, Swift)
- Energy is Artsy's partner app. (Objective-C)
- Eidolon is Artsy's auctions kiosk. (Swift)
- Emergence is Artsy's Apple TV app. (Swift)
All Artsy iOS codebases start with the letter
e, but not all Artsy codebases that start with the letter