👋 I'm Ritesh Gupta from India 🇮🇳.
📱 Senior iOS Engineer / Swift / SwiftUI / Combine/ Kotlin-Multiplatform,
📡 Working Remote @Compass, previously -> @Over @Fueled,
🗣️ Speaker (
🥘 Food enthusiast, pretty good at making crispy Dosa,
🎓 NSIT '13
Currently shipping Compass's iOS app & also experimenting with kotlin multiplatform which IMO is the only sane multi plaform solution proposed yet. Previously used to work at Over & Fueled. I have been working with Swift since it came out (2014) and have published over twenty apps so far, though my entire iOS experience goes over 8 years. When I'm not coding, you can find me tweeting about iOS / Swift / SwiftUI / Combine / Kotlin / Kotlin-Multiplatform or exploring Indian fusion cuisines on Instagram!
Authored the 295th issue of iOS dev weekly, one of the most prestigious iOS newsletters managed by Dave Verwer
I enjoy speaking at iOS/Swift Conferences to share my swifty opinions. If you are one of the conference organisers and want me to speak on iOS / Swift / SwiftUI / FRP / Kotlin / Kotlin-Multiplatform / MVVM / App architectures then feel free to contact me, let's make it happen. Here are some of my talks / workshops at various conferences / meetups:
Speaker, iOS/Swift Conferences
Speaker, iOS/Swift Workshops
Speaker, iOS/Swift Meetups
- Custom binding operator in Combine:
One of the missing pieces in Combine is the binding operator
<~ which I think everyone in the ReactiveSwift community is fond of. So, I thought let's try to recreate it using Combine as it shouldn't be too hard.
- Child View Controllers, Part 1:
If we are trying to refactor a massive view controller, probably embedding child view controllers is one of the ways to go about it. With this post, I'm starting a series where I'll experiment with this concept and share my findings with everyone.
- Reactive <~ Closure:
It's about how to adapt a closure based api in order to have a reactive layer on top of it, without modifying any underlying logic (using ReactiveSwift).
- MVVM, you had one job to do!?:
In the last couple of years, MVVM has gained some reputation in the iOS community. Every other conference has at least one talk on this topic. Almost every other blog post is talking about design patterns specially MVVM (like this one :p). All of this indicates that it must be very good at what it does. So let’s try to understand what it actually does 🤔.
- Reusable View Layout using Protocol & MVVM:
It's about how we can reuse a view's layout with the help of a protocol & MVVM. I have shared how we can outline a view’s interface, essentially different configuration states, with a protocol which will enable us to inject different viewmodels into a view. In other words, the idea here is to design data agnostic modelling of a view layout.
- Extend Swift Associated Types in Protocol to compose behaviour:
Associated Type is a great way to add generic constraints in a Swift protocol. This article aims to explain how we can extend the behaviour of associatedTypes of a child protocol while inheriting from its base protocol 🙌.
- Compile time errors are good:
I like to think of compile-time and run-time as twins, compile-time being the 😇 (innocent ones) and run-times the 😈 (evil ones). Compile-time errors will help us avoid any mistakes that could cause their evil twins i.e. run-time errors to bug our product.
- Status bar throwing tantrums in iOS 9+:
If you have ever overridden
preferredStatusBarStyle for a child controller which is part of a navigation stack, then you know by simply overriding in the respective child controller doesn't work. In this article I have shared a neat trick which you can use to make it work 💪.
- The curious case of Optionals — #1 Emptiness:
Swift introduced optionals so that a variable could also have a state of emptiness. In this article I have shared my views on the relationship between emptiness & optionals.
- How to be a good Bad-iOS-Dev:
If you are looking for an informative article then you have come to the wrong place! I am writing to share a few “things” about iOS that I have experienced, so that we all can have some 😆 time while your xcode is running or sipping a cup of tea or maybe in the middle of a boring meeting 😴
In my first medium publication I have shared some code snippets that leverages the great power of Swift 🤘 It focuses on extensions, protocols, generics, functional programming, closures etc. If you think you have a swifty snippet which you would like to share with everyone then submit your post on swift-snippet publication and I’ll add it as a guest post :) Some of the most recent ones are (you can checkout the entire list here),
I enjoy coding & abstracting reusable components in iOS/Swift and converting them into libraries for easy integration.
It's a Protocol & MVVM based framework for populating UITableView & UICollectionView. It takes care of batch-reload as well which is powered by Dwifft. 150+ ⭐
It's a ui-collection-view layout subclass that takes care of all the logic behind making tags like layout using UICollectionView. It also allows you to adjust the alignment of your layout i.e Left || Centre || Right. Now you just have to take care of your tag view and everything else is sorted. 100+ ⭐
It lets you inject dependencies in a class which is otherwise difficult to initialize due to framework limitations. It uses a protocol based approach which makes it easy to adopt and extend. There's no magic of any sort happening anywhere, it's a very lightweight µ-framework which you can browse easily!
It safely converts
Any? into Value types! (useful for mapping api response)
It's a type based app routing mechanism which could potentially replaces segues.
It's an iOS progress HUD written in Swift. You can configure it with three modes - normal, blur & custom. It allows you to change appearance of various UI aspects like tintColor, backgroundColor, alpha etc.
Swift India Meetups
I was one of leading organisers of Swift India Meetups & its Delhi chapter. It's aim is to conduct a meetup per month and so far we have had 16 successful chapters (I was part of first 13 meetups as an organiser) at different offices. You can join our slack group to say hi and stay connected :)
- Chapter #13 - Protocols, MVI & Xcode @UrbanClap
- Chapter #12 - Layout Testing, Enterprise iOS Apps Ecosystem, Dependency Injection @Expedia
- Chapter #11 - CoreML, Neural Networks, Motion Design & Autolayout @Zomato
- Chapter #10 - 3D Touch, User Interface Design & Unit Testing @UrbanClap
- Chapter #9 - GraphQL & RxSwift @Exzeo
- Chapter #8 - Protocol & Alamofire @Workly
- Chapter #7 - AppTracer, Instruments & Core ML @Naukri
- Chapter #6 - GCD, Protocols & Library Oriented Programming @Hike
- Chapter #5 - MVVM, LLDB & Swift 4 @Zomato
- Chapter #4 - TDD, Server Side Swift (Vapor) & RxSwift @Limetray
- Chapter #3 - Protocols, Instruments & Analytics @LBB
- Chapter #2 - Two-Oh-Five @Fueled
- Chapter #1 - Practical Protocols @Innov8 (Guest Speaker, NatashaTheRobot)
If you want me to speak at your conference/meetup or collaborate on any swifty open source project or simply want to say hi then feel free to reach out to me at,