by Cesare Rocchi

Breezi is Back

by Cesare Rocchi

Tags: iOS business

It was 2012. Prince was still alive and iOS 6 was about to be released. There were rumors of a bigger iPhone. They’d have called it “iPhone 5”.

At this point I had already built quite a lot of apps for clients and I wanted to take a stab at building AND selling an app. And so Breezi was born.

I wanted it to be something unique and so I designed a fully gesture driven user interface. It’s not a big deal nowadays, but at the time it was. Flipboard was one of the few apps to take advantage of rich gestures for navigation.

I still remember the day before submitting Breezi to the App Store. The code was pretty messy, because I experimented a lot. And so I rewrote it from scratch, in one day. I just kept the networking code, but I rewrote all the rest. I got rid of a lot of unneeded code and improved the performance at the same time.

Opposers of big rewrites can pause here and shiver if needed.

Breezi was the first app to bring in money, coming directly from Apple. It was nice to read the details of the wire transfer in my bank statement. It was supposed to be the app that would make me quit consulting and live a life of sipping cocktails on the beach.

Instead, Breezi taught me that selling apps is hard. It taught me that bloggers don’t owe you a blog post, and that pixel perfect is better achieved in milestones, instead of all at once.

With the release of the iPhone 5 I had to rework a bit the UI. Auto Layout was still unripe and so I went with the macro-based IS_IPHONE5 approach.

The app was selling good but nowhere near my expectations. A project proposal came in. It was one of those “hard to say no” projects. I took it.

One day I noticed a negative review. The app was crashing on an iPhone 6. I was deeply involved in the project and I didn’t have time to take care of the issue so I took it off of the store.

Then wedding, then kids, then house restoration, then Podrover, then Affiliator, then many more things.

The Spark

A few weeks ago I was recording a podcast (it will be out soon) and somebody mentioned Breezi. It was enough to spark my curiosity in the terms of: “how long would a revamp take me?” Just a spark, that I quickly dismissed.

Last week I was reorganizing my backup and I saw it: Breezi.zip. It all started as a game:

It snowballed. “How quickly can I decrease the number of warnings?” That part was easy. The boring part was “modernizing” the layout.

The Fire

Most of the UI was arranged using the .center property of UIView. Don’t judge and remember it was 2012. After the advent of Auto Layout that trick doesn’t work anymore. I started reworking those issues but when I got stuck for too long I fell back using UIScreen bounds.

A storyboard as launch screen is now mandatory if you want the app to be compatible with the upcoming iPhone X. When you create a project from scratch it’s already there but when you have to add a launch screen to an old project it’s not easy, if you don’t know the requirements:

  • The Storyboard scene has to be marked as “Use as Launch Screen:
  • The View Controller has to be checked as “Is Initial View Controller”

Discovering the second item took me 1-2 hours and quite a lot of experimentation.

Luckily the next point was substituting UIAlertViews with UIAlertController. It was quite easy. I still like the old API.

And then the final part came: compatibility with iOS11 and the iPhone X. I had to open ALL the xibs and pin the views to the safe area layout guide. When doing layout in code I had to spread a lot of references to view.safeAreaLayoutGuide. In the end I settled with helper methods like this:

+ (CGFloat) safeAreaY:(UIView *)view {
  if (@available(iOS 11.0, *)) {
    return view.safeAreaLayoutGuide.layoutFrame.origin.y;
  }
  return 0.0;
}

It wasn’t rocket science, just a bit boring. Fix, run, test on different devices. Rinse and repeat.

Finally I had to remap some icons to new weather conditions. While I was waiting for the review I redesigned the website and replied to some reviews on the App Store.

Funny story. I tweaked a bit the app icon but I forgot to update it in iTunes Connect. The app got rejected. Luckily reviewers check also these details.

When Breezi was approved it took half a day to appear live in the store. Maybe because it has been “dormant” for a bunch years? I released it silently because I wanted to make sure it worked as intended in production.

I was ready to publicize it but then I spotted a little bug. After the fix, I was about to release the update when the marketing voice inside me said: “what about a video preview”? And so I made one.

 

Pricing

I didn’t even think about releasing Breezi with a new app ID. After five years I was probably “entitled” to do it, but I think those who bought it a long time ago should keep on enjoying it. The regular price is $1.99 but until October 25th it’s $0.99.

Go grab it!

Conclusion

It feels good to revitalize an old app. It’s a bit like wearing again that pair of jeans you used to wear in college. I am glad I did it.