Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Future proofing your iOS apps

Future proofing your iOS apps

When developing our iOS applications we want it to be able to support the latest hardware and software. When we started out we did not anticipate for an Apple Watch or a widget. In this talk I'll explain our journey from being a rigid and single track application to becoming a flexible scalable application architecture with which we can now easily adopt new features and hardware. I would like to give a sneak peek into our transformation into becoming a modularized app.

By Pim Stolk

Powered by http://xebia.com


do{iOS} conference

November 09, 2015


  1. powered by Future proofing your iOS apps

  2. Who of you think about the application architecture before you

    start on a new project or feature?
  3. whoami $ whois pimstolk Whois Server Version 2.0 * Software

    Engineer @ ING * Works on the Mobile Banking App * Like Electronics * Loves Domotica * Has to many motorbikes >>> Last update of whois database: Sun, 01 Nov 2015 16:00:16 GMT <<< For more information on this Whois status codes, please visit https://www.linkedin.com/pimstolk
  4. ING and Team

  5. Lets go back to 2010 • Start of Mobile Banking

    • Focusing on the iPhone
  6. The iPad • Last minute decision • Focus only on

    iPhone • Hire extra people to meet the deadline
  7. As time went by…. • We added loads of universal

    new features • IS_PAD()
  8. A new programming language • Adopt Swift into our code

    • Huge Objective-c codebase • SourceKit no taylor swift jokes no taylor swift jokes
  9. New Stuff • Apple Watch • Notification Center Widget •

  10. We were not ready

  11. The problem Reuse of code

  12. App Stats • Approaching the 1 million lines of code.

    • More then 40 different developers > more then 40000 hours of coding. • More then 25500 commits • Around since of iOS3 • autorelease retain • Introduction of ARC • Nib/Xibs/Storyboard/Sizeclasses/NSURLConnection/ SplitViewController/ and so much more • More then 2.000.000 active users
  13. Multiple solutions Don’t Repeat Yourself

  14. Red or the blue pill?

  15. Different Targets • Link all the files to different targets

    • Reusable classes
  16. Different Targets • Link all the files to different targets

    • Reusable classes WRONG!!!
  17. Different Targets • Not Scalable • No clear overview of

    what is going on • Easy to break the build
  18. Dynamic framework • Easy to work on in a big

    team • Support Swift • No need to relink when updates • Final Linked Image INGFoundation INGFoundation.framework BalanceFetcher BalanceFetcher.framework CryptorKit CryptorKit.framework Sub projects ING INGFoundation.framework BalanceFetcher.framework CryptorKit.framework ING Project
  19. Dynamic framework • Versioning • Testing • Separate out the

  20. Challenges • Drop iOS7 • #import problem • Keep delivering

  21. Things still to figure out • Inter-framework communications • Who

    does the communication? • Who owns the data? • How do you navigate from screen to screen.
  22. The future of our app • Replace Incrementally • Modular

    • Functional
  23. Wrap up • ING Mobile Banking Journey • Growing number

    of devices with different purposes • How to deal with the scalability of your application • Implementation of dynamic frameworks
  24. Questions?

  25. We Are Hiring!