terminal~/blog/blog-about-mudo
cat blog-about-mudo.md

Draft: Blog about mudo

--date--time8 min read

React Native is great for many projects, but for Mudo, I needed something that felt truly native to iOS. Swift offered the performance and fluidity that a mood journaling app requires to feel seamless and unobtrusive. Even though I was already comfortable with React, I was sure using React Native would definitely be the best choice for me. And that's what I started off with. Pretty soon, I realized that React Native's abstraction layer introduced subtle delays and inconsistencies that detracted from the user experience. Even though Mudo is a very simple app, these small issues added up. And the evil perfectionist in me couldn't let it slide. I had not other option left. And the innate curiosity to learn something new pushed me to try Swift.

And boy was I disappointed. Swift has a steep learning curve, and I had to grapple with unfamiliar concepts like optionals, protocols, and memory management. But the more I worked with it, the more I appreciated its power and elegance. The SwiftUI framework made it easy to create beautiful, responsive interfaces with minimal code. The declarative syntax felt refreshing compared to the imperative style of React. To be honest, it was a love-hate relation with Swift. The initial frustration was real, but the satisfaction of overcoming those challenges was worth it. I used to hate the fact that I cannot use my beloved VSCode for Swift development. But Xcode, despite its quirks, has some powerful features that made the development process smoother once I got the hang of it.

The other main reason I chose Swift over React Native was the fact that as a indie dev, trying to submit an app to the Android's Play Store is a nightmare. You need at least 12 Android Developer users as testers. This, to me, was an impossible task. From where am I to gather 12 users to test my app? And even if I did, the overall Play Store's review process is notoriously slow and unpredictable, often leaving developers in limbo for weeks. The guidelines are vague and frequently change, making it hard to know if your app will be accepted. In contrast, the App Store has a more transparent and consistent review process, with clear guidelines and faster turnaround times. This was a crucial factor for me as I wanted to get Mudo into users' hands as quickly as possible without unnecessary delays.

Having a single codebase was my main intention when I had decided to go with React Native. And since I knew I am not going to bother with Google's policies for getting your app approved, I made the daunting decision to go with Swift and build a truly "native" iOS app.

I know, I know, even with App Store you have to pay a heft $99/year fee. But I was ready to pay that price for the peace of mind and the superior user experience that Apple offered. Though, I will always severely dislike the fact that it's a subscription fee they charge. I would have been okay with a one time fee of $199 or something. But that's just me being greedy I guess.

Now, I am at a point, where I kinda like Swift. The language is powerful and expressive, and the ecosystem is rich with libraries and tools that make development easier. The performance is top-notch, and the user experience is unparalleled. React Native was fun to work with, but it felt like a compromise.

To test the waters, I build a small app called Gita Essence, that shows a daily verse from the Bhagavad Gita. It was a simple app, but it gave me a taste of what was possible with Swift. The experience was smooth, and the app felt snappy and responsive. And to my surprise, Gita Essence got approved on the App Store without any issues and within 3 days of submission. That was actually impressive and gave me the confidence to go all in with Swift for Mudo.

There's still a lot to learn, and I am sure I'll encounter more challenges along the way. But I am excited to continue this journey and see where it takes me. React Native was a great starting point, but Swift is where I see the future of Mudo. The performance, the user experience, and the native capabilities are unmatched.

As for React Native, I still think it's a great choice for many projects, especially if you need to target multiple platforms quickly. I might end up creating something simple with it, too.

If you'd like to get updated on Mudo development, you can follow me on Threads or check out the Mudo website.

Swift, on the other hand, allowed me to leverage iOS's native capabilities fully, resulting in a smoother, more responsive app.

Building Mudo was my attempt to merge code and calmness.

It started with a simple idea: how can an app feel peaceful?

The Design Philosophy

When building Mudo, I wanted to create something that didn't just look minimalist, but actually felt calming to use. This meant making deliberate choices about:

  • Colors: Soft, muted tones that don't strain the eyes
  • Animations: Gentle transitions that feel natural
  • Typography: Clean, readable fonts that invite focus
  • Spacing: Generous whitespace to let content breathe

Technical Challenges

State Management

One of the biggest challenges was managing the app's state while keeping the interface responsive. I opted for a clean architecture that separates concerns:

swift
1
2
3
4
5
6
7
8
9
10
class MudoViewModel: ObservableObject {
@Published var isTimerRunning = false
@Published var currentMode: FocusMode = .work
private var timer: Timer?
func startTimer() {
// Timer logic here
}
}

Smooth Animations

Creating animations that felt natural required careful attention to timing curves and duration:

swift
1
2
3
withAnimation(.easeInOut(duration: 0.6)) {
self.isExpanded.toggle()
}

Key Features

  1. Focus Timer: A simple Pomodoro-style timer
  2. Ambient Sounds: Curated background audio
  3. Progress Tracking: Gentle insights without pressure
  4. Dark Mode: Designed for evening productivity

Lessons Learned

Building Mudo taught me that simplicity is harder than complexity. Every feature had to earn its place. The challenge wasn't adding more—it was knowing what to leave out.

The most important lesson? Good design is invisible. When users don't notice your interface, that's when you know you've succeeded.


Mudo is available on the App Store. Built with love and lots of coffee.

get author-info
author.json
Aditya
Full Stack Developer

Building stuff with TypeScript, React, and Node.js. Open source enthusiast.

$ find more-articles/
└──Article 1.md
└──Article 2.md
└──Article 3.md
cat LICENSE.md

Copyright & Ownership

© 2026 Aditya Bhaskar Sharma. All rights reserved. This content is protected by copyright law and international treaties.

AI Training & Model Use Prohibited

This content may not be used for training, improving, or developing artificial intelligence models, language models, or machine learning systems without explicit written permission from the copyright holder.

License Terms

This work is licensed under a restricted Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License with additional AI use restrictions.

Unauthorized use of this content for AI training, scraping, or incorporation into machine learning datasets constitutes a violation of copyright and licensing terms. Such violations may result in legal action including, but not limited to, DMCA takedown notices, cease and desist orders, and participation in class action litigation.

Read the full license terms
# For licensing inquiries or permission requests, please contact me through my social channels.