title | description |
---|---|
The Mobile Practice |
How does Artsy make mobile Software? |
The Mobile Practice is distinct from the Web Practice at Artsy. While there is significant overlap between the two, some things are necessarily different when building mobile software. Those differences 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 (Web and Platform practices test on staging; we test in betas).
- Deploying is different from other Artsy systems (Web and Platform practices promote from staging to production; for iOS, we cut betas and submit to Apple for App Store approval).
- Long-term maintenance is different (Web 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 mobile code will continue to operate in production for years).
We do have a lot in common with the Web 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-mobile engineers contributing to our React Native app. Part of the Mobile Practice, then, is to support them contributing to our mobile projects (mostly via React Native, but sometimes in native code).
Engineers who work on mobile code at artsy are included in the @mobile-practice Slack group. They'll be automatically added to the #practice-mobile Slack channel. The Mobile Practice meetings happen every two weeks; meeting notes are available in Notion.
Our goals are the same as the Web Practice goals, but with a focus on supporting iOS and Android software at Artsy. That means we have the following additional goals:
- Build tools and systems to help non-mobile engineers contribute to Artsy mobile software using React Native.
- Help our colleagues understand the differences between building iOS/Android software and web software.
Each mobile app at Artsy is deployed according to its own unique needs. See their repos (listed below) for deployment instructions. Releases of the main, collector-focused app (Eigen) are handled by the Collector Experience team on a 2-week cadence 🔐.
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 for the foreseeable future, Swift is "on hold" at Artsy, 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 built using React Native; the remaining native parts of our main app are listed here 🔒 alongside decisions and priorities for switching them to React Native. We have no plans at this time to rewrite our native-only projects in React Native.
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 e
are
iOS (example).