In our latest release we added support for iOS11 and the iPhone X, a major milestone for our development team. With that release I thought it was important to take a look back and see just how much the app [and team] has changed in my time at Ulta.
- Cleaned up, simplified, and modernized the codebase. Established a cadence for structuring code aimed for readability and understanding with emphasis on in-line comments explaining business logic. In most cases I tell my developers to structure their code linearly so that it mirrors what’s being displayed.
- Identified redundancy in models/views and consolidated
- Removed all non-essential third party code (that isn’t mandated by business partners)
- Banned the use of cocoa pods and dependency managers.
- Removed all unused and old assets / converted new assets to PDF (vector)
- Created a “Core” which handles all our application/session/configuration management, as well as contains our own web services client
- Established rules on native first UI/UX patterns with creative partners and an understanding of maintaining code over time e.g. I don’t want to be fixing custom controls with each OS release.
- Compartmentalized storyboards based on features [performance/readability]
*It’s important to note that the above initiatives reflect my viewpoint on how a large enterprise project with multiple [sometimes fluid] team members should be treated. When creating my own apps I have similar from different goals and I can take certain liberties knowing only I will be maintaining the code.
The screenshots below are a few examples of said changes. On the left is version 4.0.1, the app I inherited when I started, and on the right, 5.2, our latest release.
- Search bar changing height is iOS11 revealed some skeletons in our closet, primarily around trying to maintain opaque navigation and tab bars which led to layout issues. I also explored moving the search bar to the new searchController property on navigation controller, but the business ultimately wanted to maintain the title view approach/look. Search controller is nice though because it has support for large title, hiding when scrolling, etc.
- Supporting iPhone X wasn’t too much effort because of my previous enforcement of using native views/controls and auto layout.
- For P3 colors we changed obvious things at first: launch screen, app icon and primary brand colors. We also made a conscious choice to not make every brand color P3, like the typography saying “If everything is bold, nothing is bold” – and we wanted certain color to stand out. P3 conversion from a code perspective is simple, but from a conversion standpoint I still am not sure the proper method.
Converting Brand colors to P3 (view image below on P3 screen for accurate reproduction)
As with Cart, my team and I re-wrote checkout from the ground up. We set out to create a user-friendly, ada compliant, and reliable single-page checkout.
Features of note:
- Skelton loading
- Single page design
- Smart address suggestions with usps recommendations
- Section level messaging
- Quickly access saved gift cards