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.

2024 vs. 2025 - Revenue by platform

2024 vs. 2025 - Revenue by app

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:

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.

https://www.youtube.com/video/mg66iOMcE3w

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

2026 Goals

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. 🤷‍♂️

Subscribe to my newsletter

Read articles from Nikodem Bernat directly inside your inbox.

Subscribe to the newsletter, and don't miss out.