Building Zomato iOS Apps

Zomato is the largest food discovery service and one of the top startups in India.

Arpit Agarwal
4 min readFeb 11, 2018
Animated this loop to explain Zomato, this went live as the front page of the app earlier

I had my homecoming to India on a midnight of January 2015, after a month of backpacking in Mexico, and freezing on the streets of New York. Ever since that night I landed, I’ve been hustling to build one of the best dining experiences you can get in the world at Zomato.

At Zomato, I primarily code the iOS app but I work in different teams on whatever helps to build the best products for us. I do ideation, conceptualisation, prototyping, and development.

Links to the consumer apps I have built and shipped at Zomato —

In February 2018, we released an overhauled design of the Zomato iOS app. I had the privilege of writing a post announcing all the changes we’ve made in this milestone release.

Zomato iOS app is used by about half a million people every single day who are in search of the best places to dine-out and order from. It gives me a rush that my design and code inputs can reach such a massive audience in 20 countries on a daily basis.

Starting with programming motion in the UI

In the last 3 years, I have seen a hyper growth in the organisation, and in people I have worked with (including me). And it’s come with enduring chaotic and tough times over these years at this startup in heart of India. I’d like to get a little bit into my journey so far.

In my first week at Zomato, I pointed out to the CEO that the bounce animation in the location selector screen could make it feel like an alert. I was asked to fix it, and I was stressed since I had just started learning Objective-C. So I did what I could in 2 days — read about iOS animations online, dive into UIKit spring animations, pulling other developers for help, and somehow getting a transition class in place.

I coded a more suitable animation, and kept tweaking it for a day, changing the duration in milliseconds times over and over, until it looked super smooth. Finally, I presented it to people, they saw an improvement, and it went live! I still remember this as a starting point for me to develop a sense of motion UX in digital products. Back in 2015, this was a small thing, though three years later today, the product has matured to have coherent interactions throughout the entire user journey.

In hindsight, I consider this is an accumulated result of trying to get those small wins every single day!

Zomato app through the ages

Over these years, we have modularized our app into kits, introduced automations and CI into our processes, have measured development velocity on Jira, overhauled and reinvented the app experience, have become more data-driven, and a lot more. We have also built several internal apps to support our organization’s massive growth. The modularised app architecture takes care of the scale, and keeps the Zomato brand UX in sync within all our apps.

Read more about iOS app modularisation in my other post —

In addition, we maintain a robust and well-designed app by keeping our codebase structured, and performing tests on all of our new features. Remember, smoke testing is super important!

Along with this, we run A/B tests on our product features, and iterate on the UI pretty often. We also keep evaluating new possibilities to improve us like using test driven development methodologies. It feels like a transformation almost every month as we keep using the Build->Ship->Learn->Iterate cycle to improve.

At Zomato, I’ve been given a chance to do everything from creating architectures, writing new features, designing and programming transitions and interactions, handling internationalization, and guiding new team members.

Working every day at this massive scale, with diverse perspectives and personalities, introduces complexities that can occupy your entire mind at all times. Some moments in my day when I am able to zoom out and see the bigger picture, I feel that it’s been a great ride so far!

Fin.

--

--