I have to be honest, this week was rough in terms of consistency. I felt distracted by many things and didn't get much done. My mind has been constantly wandering and I couldn't focus on anything for a longer time. Let's stay consistent and wrap up the week with a few updates even though I didn't get much done.
Let's get started!
📈 Business Updates
In terms of revenue development, this week has been brutal as well. Once again, my business is heavily affected by seasonality. The New Year's hype is over and the revenue is dropping like a rock. Don't get me wrong, I'm still happy and incredibly grateful for the numbers I'm seeing right now. But it's always a little bit scary to see the numbers drop so heavily after reaching crazy highs.
The good news is that I already observed this pattern last year (around the same time), and this definitely gives me peace of mind and helps me to stay focused on the long term. Looking back at my data from last year, there was a similar drop after the January peak, but the base level remained significantly higher than before the New Year's rush. This is exactly what I'm seeing now - while the numbers are declining, they're stabilizing at a much higher baseline than before the holiday season.
The app is still maintaining strong rankings in the App Store for key terms like "habit tracker" in major markets (US, UK, Germany), which should help maintain a steady flow of new users even during this seasonal dip. I've learned that these seasonal fluctuations are just part of running a habit-tracking app business. The key is to use these quieter periods to focus on improving the product and preparing for the next peak season.
🛠️ Development Corner
I started by tackling some technical debt, upgrading Flutter from version 3.24.3 to 3.27.3, along with all other dependencies. This update brought an unexpected challenge: After upgrading, I noticed a significant performance drop on Android, particularly when testing the app on my Android device. The bad guy turned out to be Flutter's new Impeller rendering engine, which was automatically enabled with the update. For now, I had to revert back to the previous rendering engine to maintain the app's performance. I'll definitely revisit this once Impeller becomes more stable on Android.
I also made several improvements to the upcoming "Unlimited Completions" functionality. The iOS widgets received some attention: I enhanced them to properly display progress indicators for habits that allow multiple completions per day. I encountered some interesting challenges while working on the heatmap graph performance. What started as a simple optimization attempt actually ended up degrading the performance! I had to roll back these changes and will need to approach this problem from a different angle. That was REALLY frustrating.
The core feature I've been focusing on is the new habit completion control for unlimited completions. This component needs to handle both traditional habit tracking and the new ability to exceed daily goals (like reading more pages than your daily target). Getting the UX right for this has been particularly challenging. It needs to be intuitive for both simple habit tracking and more complex number-based tracking, while still maintaining HabitKit's minimalist design philosophy. Despite the challenges, I'm making steady progress and feeling good about the direction it's taking.
To wrap up the week, I completed the "What's New" screen for version 1.11, which will introduce users to all these new features. As usual, I wrote the content in English first and then used AI tools (Cursor and Claude) to help with translations.
💡 Indie Insights
Funny, after finishing the last section ("Development Corner") and re-reading the start of this newsletter, I realized that even though I felt I didn't get much done this week, I actually did a lot. Crazy how our perception of time and the amount of work done can be so weird/skewed.
I'm sure that's a common problem for indie hackers who work alone. Even though you're moving the needle every day, it's hard to see the progress mid-week. But when I actually sit down and write it down, feature-by-feature, it suddenly doesn't look so bleak anymore. This week alone, I tackled technical debt with Flutter upgrades, made progress on the unlimited completions feature, improved widgets, and prepared translations for the upcoming release. That's actually quite a lot!
This reminds me of why I started this weekly log in the first place. While these posts might not drive a ton of traffic to my app, they serve as a tool for self-reflection and progress tracking. It's so easy to get caught up in the day-to-day grind and lose sight of the bigger picture, especially when working solo on a project.
Writing these updates has another unexpected benefit: it helps combat that common indie hacker feeling of "not doing enough." When you're building something alone, it's easy to be overly critical of your progress. But forcing yourself to write down your achievements each week provides a more objective view of your accomplishments.
That's it for this week, see you next week!