OneID Engineering
Published in

OneID Engineering

OneID iOS Team: 2020 In Review

On The Way to The Peak by Dzmitry Kazak

Plugin Architecture

  • Easier integration into any shared feature for our large number of teams as the tight coupling between RIBs is now freed.
  • Simplified process of controlling feature rollouts, quality and performance.
  • Simpler code review and onboarding process thanks to clean code and flatter project structure.
Plugin structure for home sections and shortcuts

Interface Targets and Dependency Injection

Simplified dependency graph of Checkout with Interface Target
Comparison for build time before and after applying interface module

CI/CD and Build System

  • Reviewed and optimized dependency graph using Bazel’s powerful query and analyst tools
  • Maximized parallel builds with code refactoring and module restructuring
  • Built report system to detect functions and classes with compile time exceeding limit using Swift Driver
  • Applied custom Apple’s linker zld.
Build time improvements from February to July 2020
  • 100% automated release process
  • Workflows to manage and automatically update assets and localization
  • Workflows to gather and report source code statistics
  • Automated merge requests checks for code optimization and related JIRA tickets to have appropriate status and release versions.
  • Dashboard system to track CI build time, app size, startup time, libraries and all modules pre-build time.
Overview data visualized on dashbboard
App and library size reports

Performance and Tracing

  • App size
  • App’s startup time
  • Time to interactive: load time of main screens
  • Scroll hitch rate
App startup time and FPS reports for released builds
  • Maintained a module named Lumber to easily trace app performance via Xcode Instruments
  • Developed a report tool for tracking weight and load time of third-party libraries for comparison and timely update or replacement if needed.
  • Set up nightly app profiling routine with Firebase Test Lab to control beta app startup time and pre-main time of libraries.
Development metrics tracking

IDAssets

Image detection for IDAssets migration
IDAssets SlackBot to detect deleted assets
Highlights of heavy assets in a daily check
Assets optimization report

Design System and Snapshot Testing

Design system style guides

Conclusion

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store