Year Review, 2025
Nikodem Bernat · Jan 01, 2026 · 9 min read
One year ago I made a tweet in which I described some of my experiences that I had that year. This year I decided to go with a long-form blog post so I can go more in-depth about all the topics.

Side Projects
Overview
My goal for this year was to either reach 1,000 USD total or 100 USD a month from my apps.
In 2025 I managed to earn 756 USD and keep stable 100 USD+ throughout Q4, which isn’t that bad. I’m not sure whether that qualifies as achieving my goal, and saying that I’m satisfied would be an overstatement (I’m not satisfied until I get an invoice from RevenueCat), but at least I’m on track.

My Monthly Recurring Revenue (MRR) at the end of December was 67 USD, but since I started experimenting with one-time purchases this year, the real revenue is both a little higher and less predictable.
The most worrying part is that basically the entire revenue comes from apps that I made last year, and specifically from iOS. Some apps grew and some shrank, but no new app achieved strong results. I tried to make it more diversified, but my attempts weren’t successful.


The biggest problem that I have right now is making my apps more popular. I’m at 1,000 Monthly Active Users (MAU) with 100 USD a month, but it’s clear that I need more users to grow further. I have some ideas, but in general I’m still trying to figure this part out.
Overall, I finished 4 new projects this year, which I’m not happy with. The latest wave of LLMs (e.g., Opus 4.5) can greatly accelerate the speed of developing side projects, so I should be able to easily double it next year.
TravelPass
The first project that I released in 2025 (January 26th to be precise) was “TravelPass”. This app was supposed to help you with organizing your trips, places to see, etc.
I wasn’t satisfied with the quality of this app. This app also had no initial boost from Apple. With a total of 100 downloads and 6 USD in total revenue after two months, I decided to take it down.
HealthPass
After finishing work on TravelPass I started working on HealthPass, a single place to track supplements, blood test results, and workouts. Unfortunately, due to insufficient research beforehand, I wasn’t aware that such an app wasn’t so straightforward to build.
I may revisit this idea in a simplified version in 2026.
Re******
I always had a very strong desire to maintain an app related to content creation.
I temporarily abandoned this project due to issues with 3rd party SDKs (rejections and prolonged verification processes), but I want to work on it again after a slight pivot.
I plan to come back to this project in late Q1/early Q2 2026.
Kanji Koi
While Kanji Koi is an app that I made last year, it didn’t get the recognition that I believe it should get.
In 2025, I invested some time (and money) in updating the onboarding, regular posts on social media (X/Twitter, Threads, Bluesky), SEO, ASO, In-App Events, App Previews (short video instead of a screenshot) and Meta Ads. It didn’t really help that much, but at least it’s one of my projects that makes money.
CrossPromote
In October I released CrossPromote, my first vibe-coded web app. It got featured by Peerlist and finished launch week in the top 8. I also tried launching on Uneed, BetaList, and probably some other platforms that I forgot. Despite that, this project failed with fewer than five users that signed up until now, and with no paying users at all. The only payment via Stripe was my own to verify that the implementation works properly in production.
Quite disappointing result, since I prepared packages for Flutter, React Native, React, NextJS, custom script for vanilla JavaScript, and a dedicated API for server-side web frameworks and other mobile platforms.
Cloudy
On November 18, due to a Cloudflare outage, my mobile client for Cloudflare called Cloudy had a spike of new installs on Android. Unfortunately, I copied my iOS pricing, which for Android users was too high. After many complaints the rating dropped to 2.64.
MyFinance
I built this app mainly for myself. Since I have my money in a bunch of different places and currencies, I needed a simple app to see the current balance in one place. This app was released only on iOS since I can’t bother with Google Play anymore, but it was absolutely annihilated by the algorithm and has 47 downloads since the release (November 3rd).
URL Shortener
At the end of the year, I released one more app - a URL shortener with some basic analytics. It was another app that I needed for myself, because I wanted something simple that tracks platforms, generates QRs and allows specifying per-platform URLs without being overwhelming.
I believe that Cursor with Opus 4.5 did most of the work when it comes to this app since it was a simple project. Hard to tell whether I will make any money from this app.
(Public) Speaking
Before going deeper into particular talks it’s worth mentioning that I initially planned to give my first talk in February, but due to circumstances beyond my control it got postponed until September. My idea to first get some experience at the beginning of 2025, so then I can apply to give a talk at Fluttercon Europe (September 24-26). My three attempts to give my first talk before Fluttercon fell through, and I got rejected from Fluttercon as well.
While I’m not happy with these three talks that didn’t happen, I actually believe that it’s a good thing that I got rejected from Fluttercon. If my first talk was in Berlin and it went the way my actual first talk did, I would be traumatized so much that I would never give another talk again.
First talk
I had my first talk about high-fidelity interfaces on September 10, 2025 during Flutter Cracow. From my perspective it went horrible, but I’m grateful for the opportunity to have this talk. Some of my learnings that may be useful to people who are considering giving their first talk:
Apple Keynote works differently in presentation mode when you are connected to a secondary screen and when you are not. For example, with a secondary screen (or a projector) you can’t seek videos using a slider. Playing, pausing, rewinding, and playing frame by frame also works differently. It’s best to learn keyboard shortcuts (or have a small sticky note, so you don’t forget them).
Your presentation may be distorted when presenting (due to a low-end projector or broken cables). It’s especially troublesome when your talk is about the UI, so it may be a good idea to also include a QR code linking to a PDF, so people can preview it on their phones.
It’s better to write too much in presenter notes than too little. I had some slides with only “explain video” in the notes that wouldn’t be difficult to explain in normal circumstances, but due to stress and everything going wrong, I forgot what to say and it created yet another problem.

Second talk
My second attempt went better than the first one, because I knew what to prepare for. I also changed the presentation a little bit, because I saw that some parts are too hard to explain, and other parts could be expanded.
The biggest problem was that I rehearsed the talk in English, but ended up giving it in Polish because the whole audience was Polish and I had to translate everything on the spot (which didn’t go too bad, and I agreed to it, so it’s entirely on my side).
Looking back, I would probably prefer to give it in English as well.

Communication
I’ve noticed that my communication skills are holding me back. I knew it for some time, but the further I want to grow, the bigger obstacle it is. It has become better over the years, but still not enough. It’s clearly something that I have to work on.
Design Trends
Liquid Glass
Liquid Glass is the most controversial design change of this year. Personally I’m not the biggest fan of it since it lacks the subtlety that I like in the UIs. Maybe after 3 major releases Apple will make it more bearable, but currently it’s overwhelming and buggy.
Also, I recently played a little bit with Samsung S25 and I thought that it looks and works quite good. After a few minutes I realized that everything I like is Samsung’s copy of iOS pre-26, and parts that I don’t like are by Google and follow Material 3 Expressive guidelines.
Redesign of my apps
I decided that the release of Liquid Glass is a great opportunity to redesign my apps as well. While I don’t like Liquid Glass, it’s clear that some trends will stay with us for the next 5+ years. I decided to move core navigation to the bottom, replace pure black with grays, and add more blurs.
Difficulties and Regrets
I wish I could make better and more polished apps, but since there is a high chance that the app will be dead on arrival, I feel like it’s not worth spending the extra time when my side projects aren’t bringing more money. There are also some problems with time management on my side, but it shouldn’t be a problem after I graduate.
Depending too much on things beyond my control made me slow in some areas and anxious in others. I should focus more on pursuing my goals.
I had no measurable progress for half a year in any area, which made me dissatisfied and I started to doubt many things. I should always keep working on something.
2026 Goals
Grow as a designer. Despite people having doubts about Flutter recently (due to Liquid Glass/Material Expressive) I still believe that Flutter’s strength lies in good custom UIs. To make better custom UIs I want to learn from people with experience in this area. I will probably get animations.dev course once it’s available.
Stabilize my design system. I feel like I know the general direction that I want to take with my apps. I still have to tweak my components, fix some things, and replace others, but I’m getting there. After that I may consider to version it properly, so it’s easier to update my apps.
Use LLMs more. Before Sonnet 4.5 the LLMs weren’t that good when it comes to coding, but with newer models it’s no longer the case. I can easily prompt a POC/MVP of an app to life faster that code it manually.
Create more tools. I have to vibe-code some tools (e.g. creating icons, splash screen, etc.). I’m experimenting with various options to see what looks the best, but it’s hard to update everything and apps go out-of-sync. I also have to create a generator for Privacy Policy and Terms of Service, because it’s starting to be overwhelming and hard to manage.
Expand beyond Flutter. I like Flutter, but to create better native experiences you have to properly learn Swift as well. I want to create and publish one app in SwiftUI to see how everything works in the native world.
RevenueCat invoice. I feel like the moment you get an invoice from RevenueCat it means that you are making some good money from apps. It’s my #1 goal and even though it’s a difficult one, I want to get it.
That’s it
I want to make more posts in the future, but at the same time I want to tweak my blog first. Not sure when either of these will happen. 🤷♂️