Hello everyone! Here's a quick update on my journey as an independent app developer over the past week. Let's dive right in and start with the biggest news: I reached my goal of $1500 MRR for my little app business! 🎉
Marketing and Social Media
After a month-long break from my social media marketing efforts, I've finally crafted some graphics for the Instagram and Twitter profiles of my app HabitKit again. I usually create these graphics in batches and schedule them for the next two weeks. Expect them to go online every Monday, Wednesday and Friday. Let's see if I get some impressions or not, but it already feels good to get the ball rolling again after this long time.
Testing and Integration: This week, I made significant progress in integration testing, especially focusing on the habit create/edit flow. I'm happy to report that the integration tests for this feature have been finalized. I'll try to cover more use cases throughout the next couple of updates. I'm using Patrol to create these tests and I'm pretty happy with the developer experience so far. Will share a video of one of my test runs soon!
Bug Fixes and Enhancements:
Addressed a data serialization bug that arose from migrating my database to a new structure. The issue was that my Dart widget data model wasn't syncing with my Swift/Kotlin models.
Resolved a peculiar bug where users with unsupported languages installed saw Arabic translations in the widget. The solution was simply adding the localeResolutionCallback.
Improved the user experience by introducing the CoreNumberPicker widget, enhancing the controls for selections like "completions per day" or "streak goals". Shoutout to @fabiangruss for the inspiration!
Introduced a new completion indicator in the habit calendar view. This was to cater to users who wanted more than 5 completions per day. Instead of a continuous chain of dots, there's now a single dot with a label indicating the number of completions. Thanks to @florianvates for this brilliant idea!
Addressed bugs related to the "Multiple completions per day" feature on HabitKit. There were some date-time range issues, but they've been sorted out now.
Performance and Optimization: I've noticed some lag in the app, prompting me to start performance profiling. The ConsistencyGraph, in particular, has been challenging to debug. I'm looking into simplifying or caching the computeColor function but haven't landed on a solution yet. Will need to put more time into this problem.
Exploring New Tools
I came across a fascinating service, PowerSync: SQL data sync for offline-first apps. They offer an offline-first experience for Flutter apps by merging a local SQLite with a remote Supabase (Postgres) database. I will definitely experiment with this amazing tool and hope to use it in one of my projects in the future.
Did you find this article valuable?
Support Sebastian Röhl by becoming a sponsor. Any amount is appreciated!