Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 4.67 KB

front-end-ios.md

File metadata and controls

82 lines (61 loc) · 4.67 KB
title description
The Front-End iOS Practice
How does Artsy make iOS Software?

Practice Information

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:

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).

Team Information

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.

Team Goals

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.

Logistics

Each iOS app at Artsy is deployed according to its own unique needs. See their repos (listed below) for deployment instructions.

Our Technologies

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 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 iOS Apps

Artsy has the following iOS applications, which are all open source.

  • Eigen is Artsy's main iOS app. (Objective-C, Swift)
    • Emission is this app's React Native component library (see this post). (TypeScript)
  • 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).