In the process of building ShopQuick (and later, writing this blog series) I discovered some things about rapid app development. First, everything is going to take longer than you expect — especially with Apple. From provisioning profiles, to build scripts, to App Store submission, you need to give yourself enough buffer for the trial-and-error process that is iOS app development. I found this to be true whether it’s your first iOS project or your twelfth.

Build Environment
If you’re building a small app that only you will support, automation may not be the best thing to prioritize. Even with great tools like fastlane, which removes a lot of the manual build scripting, there are still lots of environment configuration issues to consider.

App Store Approval
Submitting to the App Store also takes a while — the review process is pretty quick, but verification and uploading (when it doesn’t time out), waiting for your IPA to be available, and queueing for review to start all take a lot of time from your schedule. For ShopQuick’s initial release, it took 7 days from submission to approval — this can be an eternity if you’re trying to make a deadline.

From an app development perspective, I found working with Swift 2 to be enjoyable. There were plenty of resources available when I got stuck, or knew the Objective-C way to do something but needed a translation.

Data Storage
To store the data in ShopQuick, I purposely chose a simple data structure, like an Array, thinking that more advanced structures would make the app too complicated for an MVP. I still think this was the right choice, even though it meant the sorting logic took a lot of brainpower to engineer (and it’s still not perfect). As for storing the data, I received some great feedback that NSUserDefaults is best used left for simple key-value stores and not more complicated data structures. Instead, pairing NSCoding with NSKeyedArchiver would have been a more robust approach, while still keeping in the spirit of an MVP.

Next Steps
So, what’s in store for future versions of ShopQuick? One thing I don’t want to succumb to is the complacency that comes after the high of getting an app into the App Store. Continuing development on ShopQuick will help keep it up to date and useful. When I set out to build an MVP for this app, there were a lot of ideas that were left on the drawing board. Some planned enhancements are:

  • Better sorting of the Favorites list
  • Tutorial for first-time users explaining the gestures
  • Better visual indicator that a Product was purchased
  • Allow undoing a checked-off item on the current shopping trip
  • Add different sorting profiles for different stores
  • Apple Watch integration (fellow Labber Jeff Kelley wrote a great book on WatchKit and is working on an update for WatchKit 2)
  • Shared/collaborative Shopping Lists
  • Enhanced Product relationship and prioritization using a more complicated data structure
  • Replacing NSUserDefaults for persistent storage with CoreData and iCloud or Parse

Thanks for following along on this app development journey. I hope it provided some insight into what it takes to get a simple app from idea to the App Store.

If you have a shopping trip planned in the future, feel free to check out ShopQuick and let me know what you think.


ShopQuick Part 1                 ShopQuick Part 2                  ShopQuick Part 3                  ShopQuick Part 4
ShopQuick Part 5                 ShopQuick Part 6                 ShopQuick Part 7                   ShopQuick Part 8                   ShopQuick Part 9

Chris Trevarthen is an iOS developer at Detroit Labs. He shares his love of software craftsmanship with conference talks about test-driven development and team dynamics. Chris enjoys running marathons, his beer in a glass and his music on a turntable.