<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Building A Profitable App Business]]></title><description><![CDATA[I'm an independent app developer from Germany trying to build a profitable app business in public and on my own. I share all my learnings and lessons about app development, marketing, and productivity.

]]></description><link>https://sebastianroehl.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!g7Yu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c343459-6370-4045-9d8a-f9a115fbc38f_1024x1024.png</url><title>Building A Profitable App Business</title><link>https://sebastianroehl.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 10 Jun 2026 03:51:42 GMT</lastBuildDate><atom:link href="https://sebastianroehl.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sebastian Röhl]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sebastianroehl@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sebastianroehl@substack.com]]></itunes:email><itunes:name><![CDATA[Sebastian Röhl]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sebastian Röhl]]></itunes:author><googleplay:owner><![CDATA[sebastianroehl@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sebastianroehl@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sebastian Röhl]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building An Indie App Business #102]]></title><description><![CDATA[The Week AI Got Too Good For One Of My Projects]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-102</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-102</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 31 May 2026 15:49:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fTwx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! Last week I told you FocusKit 1.5.1 was approved and ready to go, and this week it finally went live. On top of that I wrapped up FocusKit 1.6.0, started a tiny new side project for myself, and made a hard call to shut down a project I&#8217;ve been teasing here forever. The week was pretty slow on the calendar, but I still got a surprising amount done. Let me tell you about it.</p><h2>&#128736;&#65039; Development Corner</h2><p><strong>FocusKit 1.5.1 is live.</strong> I started the rollout on Monday, so the landscape FocusSession view, the new theme picker and the CSV export for Pro users are now out for everyone. This was the main goal I set last week, so it felt good to basically finish the week&#8217;s first task by closing out the previous one. Not a flashy release, but these quality-of-life updates are exactly the kind of thing that keeps users happy and the app solid.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>FocusKit 1.6.0 is done, and I really love the new themes.</strong> This is the one I&#8217;ve been polishing for weeks. It adds a set of handcrafted color patterns, and I wanted them to feel genuinely distinct instead of just a row of slightly different tints. They turned out as soft, calm pastel gradients, kind of like rolling hills or layered waves, which fits the whole focus vibe of the app perfectly. There&#8217;s Teal, Red, Purple, Green, Coral, Silver, Lime and Midnight, plus a clean Blank one if you just want zero distraction. I also fixed an annoying paywall bug that was showing the upgrade screen to people who were already subscribed after updating, and squeezed in some performance improvements while I was in there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fTwx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fTwx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 424w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 848w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 1272w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fTwx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png" width="1456" height="799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1772024,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/199700909?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fTwx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 424w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 848w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 1272w, https://substackcdn.com/image/fetch/$s_!fTwx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53677cfe-ed1b-4fad-8acd-f21a00cbaed4_1692x929.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit is finally starting to move.</strong> Quick honest numbers: this week we had two days in a row with around $50 in revenue. That&#8217;s peanuts compared to HabitKit, I know, but it&#8217;s still super fun to watch it grow. After months of FocusKit not really going anywhere, even small signs like this feel great and keep me motivated.</p><p><strong>A new little side project: a focus blocker for myself.</strong> I started vibe-coding a tiny MacOS menu bar app this week to block distracting websites and apps, basically my own version of something like Opal. The idea is simple: I set a time budget for the stuff that eats my attention, and watch it count down in a progress bar right from the menu bar. No real technical walls here, Claude Code just kept blazing through my backlog, although we did have to run a few loops on the AppleScript part for actually blocking the sites. It&#8217;s a purely personal tool I have no plans to ship, but honestly it&#8217;s already one of the most useful things I built all month, and building it was just pure fun.</p><p><strong>Sunsetting the secret MacOS project.</strong> This is the hard one. After a lot of back and forth, my partners and I decided this week to stop working on the MacOS project I&#8217;ve been hinting at across a bunch of these issues. The tipping point was actually pretty clear: OpenAI shipped a new image generation model a couple of weeks ago, and between that and the first round of user feedback, it just hit me that AI had simply gotten too good. The thing we were building didn&#8217;t really have a reason to exist anymore. More on the lesson below.</p><h2>&#128161; Indie Insights</h2><p><strong>Knowing when to stop.</strong> Killing that project hurt. We put a lot of work into it, and walking away never feels good. But I really believe knowing when to stop is just as important as knowing when to ship. As an indie you can&#8217;t afford to keep a dead project on life support, because it quietly eats the focus you need for the things that could actually work. I&#8217;ve talked about focus being the new bottleneck before, and this week I finally had to act on it instead of just writing about it.</p><p><strong>Letting AI run my project management.</strong> My favorite workflow change in months: I now let AI manage Linear for me. I describe what I want in the next version, let the AI quiz me on the requirements, and then have it create the whole project in Linear with milestones, issues and descriptions. From there I just point Codex or Claude at the board and they work through the issues mostly on their own, updating the status and even creating new tickets when something changes. Nothing gets lost anymore, super cool!</p><p><strong>Slow weeks still count, and prep makes the fast ones.</strong> On paper this was a slow week. My calendar was full of personal stuff and the app business kind of felt like it was on vacation. But one really focused day on Tuesday produced more than the rest of the week combined, and that single day basically carried everything. That&#8217;s something I keep relearning as a solo indie: my output is never even, and one high-energy day can quietly save a whole week. June is going to be even tighter, so instead of fighting that I want to lean into it. The plan is to do way more planning upfront, tighten my requirements and think things through, so that when I do get a focused block I can bust out a ton of work with AI in one go. With the tooling I have now, the planning is the real bottleneck, not the building.</p><p><strong>Solo doesn&#8217;t have to mean alone.</strong> Shutting down the MacOS project also meant losing a regular reason to talk to other builders, and I felt that right away. I love the indie life, but to be honest it gets lonely more often than I&#8217;d like. So even with the project gone, I&#8217;m keeping the weekly calls with those guys going. The work was just the excuse, the people are the real reason, and that&#8217;s worth holding on to on its own.</p><h2>&#127919; Goals for Next Week</h2><p>With 1.5.1 out and 1.6.0 wrapped, next week is mostly HabitKit housekeeping and tightening up how I work:</p><ul><li><p>Ship new translated App Store screenshots for HabitKit</p></li><li><p>Go heavier on planning and requirements upfront, so I can move fast when I actually have the time</p></li><li><p>Plan around a lighter June without losing momentum on the main apps</p></li><li><p>Finalize FocusKit 1.6.0 and prepare for release!</p></li></ul><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #101]]></title><description><![CDATA[FocusKit 1.5 Went Live, And What Shipping It Taught Me About Momentum]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-101</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-101</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 24 May 2026 06:30:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xwS4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xwS4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xwS4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xwS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4942053,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/198821124?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xwS4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!xwS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2061f53e-6b8d-4bcf-b4ed-1fcd00d38530_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Welcome back to another issue of my weekly indie log! Last week I told you FocusKit 1.5 was polished and sitting on TestFlight, ready to go. This week it went live on the App Store. I also got 1.5.1 through review, sharpened up my AI coding setup, and learned a thing or two about momentum along the way. Let me tell you about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong>The FocusKit website keeps getting better.</strong> A couple of issues back I shipped the new FocusKit landing page, and this week I kept building on it. The site now has a proper changelog, so users can follow exactly what lands in each release instead of digging through App Store notes, and I posted about it on X to point people there. I also added a blog, which gives me a home for the SEO-focused articles I mentioned wanting to write, basically guides on getting the most out of the app. </p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cc6fa738-3dc7-418a-8cfc-a416ea3ca887&quot;,&quot;duration&quot;:null}"></div><p><strong>FocusKit 1.5 is live.</strong> On Monday I kicked off the phased release, and the light theme update is now rolling out to everyone. I previewed this theme a couple of issues back, and it feels great to finally have it in users&#8217; hands. This is the release that makes light mode a first-class citizen in FocusKit. Releasing it was the headline goal I set for myself in issue #100, so it was a good way to start the week.</p><p><strong>FocusKit 1.5.1 is through review.</strong> With 1.5 out the door, I handed 1.5.1 in for review on Tuesday, Apple privacy labels and all. A couple of review issues came back, I fixed them on Thursday, and it&#8217;s now approved and ready to ship. This is the quality-of-life release I lined up in issue #100: a landscape mode for the FocusSession view, a proper theme picker so you can override the system theme, and a CSV export for Pro subscribers.</p><p><strong>FocusKit 1.6.0 is taking shape.</strong> This will be a killer feature for the app. It allows the user to pick from a variety of super handsome and handcrafted color themes. I still need to do a ton of polishing because I want the color variations to feel genuinely distinct and considered, not just a row of slightly different tints, so I&#8217;ve been polishing that until it feels right.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WMGD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WMGD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 424w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 848w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WMGD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1895700,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/198821124?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WMGD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 424w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 848w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!WMGD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f836a47-8f6c-41c4-9d50-960e835d9dfe_2400x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Sharpened up my AI coding workflow.</strong> I wired my coding agents, Codex, Claude Code, and Cursor, into Linear this week. Instead of me babysitting every task, they now pull from a shared backlog and chip away on their own, with Linear keeping everything tracked in one place. It builds nicely on the setup, where I started running Claude and GPT side by side. The next step I want to try is leaning more on voice, talking to the agents in natural language instead of typing everything out. On the side, I also spent a couple of evenings vibe-coding a tiny menu bar app to block distracting sites for myself, purely a personal focus tool rather than anything I plan to ship.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SMtz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SMtz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SMtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg" width="1456" height="1452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1452,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!SMtz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SMtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F141e4ca8-9eec-4b25-a324-334aae155588_2176x2170.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#128161; Indie Insights</h2><p><strong>Sleep is leverage.</strong> I got my bedtime routine dialed in this week (asleep by 22:00, up at 6:30) and the energy difference was immediate. The work I do at full energy is on a completely different level from the work I grind out tired. As an indie dev with full control of my schedule, this is a perk I want to take seriously.</p><p><strong>Momentum feeds discipline.</strong> I noticed something this week: my discipline isn&#8217;t really a fixed trait, it tracks how the work is going. When I&#8217;m shipping and building things I&#8217;m excited about, the deep life comes easy, and workouts, focus, and good habits all fall into place. When the work stalls, everything else seems to wobble with it. The lesson I&#8217;m taking from this is to protect the momentum on the main project, because it quietly powers everything else. Shipping FocusKit 1.5 on Monday set the tone for the whole week.</p><p><strong>Luck favors the consistent.</strong> I&#8217;ll be honest, FocusKit isn&#8217;t growing the way I&#8217;d like it to yet, and I&#8217;ve been struggling with that. Looking back, HabitKit&#8217;s early traction had a real element of luck in it, a few things broke my way at the right time. FocusKit hasn&#8217;t had that moment yet. But I keep coming back to the same long game I wrote about in the past issues: you can&#8217;t manufacture luck, but you can build a much bigger surface for it to land on. Ship great updates consistently, keep listening to users, and stay in the game long enough for the lucky break to find you. That part is fully in my control, so that&#8217;s where my attention goes.</p><h2>&#127919; Goals for Next Week</h2><p>With 1.5 out and 1.5.1 approved, next week is about getting the release into users&#8217; hands and polishing what&#8217;s next:</p><ul><li><p>Ship FocusKit 1.5.1</p></li><li><p>Decide on the next App Store screenshot A/B test for HabitKit that I started a couple of weeks ago</p></li><li><p>Keep polishing the FocusKit theme experience so the color variations feel genuinely distinct</p></li><li><p>Lean more on voice in my daily AI workflow instead of typing everything</p></li></ul><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #100]]></title><description><![CDATA[A Hundred Weeks, One Weird Journey]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-100</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-100</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 17 May 2026 04:48:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zPsj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Issue #100. I cannot believe I&#8217;m typing this number. I started writing this log on a Friday afternoon a long time ago, mostly as a way to keep myself accountable, with no expectation that anyone would actually read it. 100 weeks later, you&#8217;re still here. Thank you for that. Thank you for the replies, the questions, the kind notes when a release didn&#8217;t land perfectly, and the cheering when it did. This little log has shaped how I think about my business as much as it has documented it, and that&#8217;s entirely because of you. So before we get into the week, a sincere thank you to every single person reading this. Here&#8217;s to the next 100.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zPsj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zPsj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zPsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1450664,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/197852095?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zPsj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!zPsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3109da18-19b1-43db-b945-1fc9a8ef19fb_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, on to the week. This was a packed one. FocusKit 1.5 is ready for release, 1.5.1 is already cooking, the new FocusKit landing page went live, and I got some really valuable beta feedback on my secret MacOS project. Let me tell you about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong>FocusKit 1.5 is ready for release.</strong> The headline feature, the new light theme I previewed last week, is polished and on TestFlight. I&#8217;m really happy with how it turned out. Light mode finally feels like a first-class citizen in FocusKit instead of an afterthought. The plan is to start the the phased release on Monday.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uuFT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uuFT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uuFT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2282307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/197852095?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uuFT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!uuFT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d347071-ec5b-4020-9026-e5c57cfadadf_1672x941.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit 1.5.1 is already in the works.</strong> I jumped straight into the next release after 1.5 hit TestFlight, and the feature list is shaping up nicely. A landscape mode for the FocusSession view, a proper theme picker (so you can override the system theme if you want), and a CSV export for Pro subscribers are all in. I deployed a build to my personal TestFlight on Wednesday to start dogfooding. This is going to be a great quality-of-life release.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cQQt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cQQt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cQQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!cQQt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cQQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12933170-4a2e-4765-bcd2-908979826050_1774x887.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://tryfocuskit.com">New FocusKit landing page is live.</a></strong> I spent a big chunk of Wednesday vibe-coding the new landing page and shipped it on Friday. This is the second landing page I&#8217;ve revised after my personal site (roehl.dev) that I deployed a few weeks back. Next up: figuring out the cleanest way to deploy my Astro pages to a VPS instead of leaning on Vercel forever, and adding some SEO-focused articles about getting the most out of the app.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;2d422ec0-88cb-4987-97a0-0182a81642a7&quot;,&quot;duration&quot;:null}"></div><p><strong>Secret MacOS project hits external beta.</strong> A friend of mine sent me his first round of feedback on the app this week, and it was genuinely some of the most valuable input I&#8217;ve had on the project so far. Real beta feedback from someone who actually uses the app the way it&#8217;s meant to be used is on a completely different level from any internal testing I can do alone.</p><h2>&#128161; Indie Insights</h2><p><strong>Focus is the new bottleneck.</strong> I kept coming back to this thought all week, and it finally crystallized: code isn&#8217;t the barrier anymore. Modern AI tooling lets me build pretty much anything I can clearly describe. The thing that separates indie devs who ship from those who don&#8217;t is now almost entirely about focus and consistency. People who can keep their attention on one thing, week after week, are the ones who win in this new world. You have all the tools you need. The only thing you have to defend is your attention.</p><p><strong>Don&#8217;t spread yourself too thin.</strong> I had a wave of new app ideas this week, all of them tempting, and almost pulled the trigger on a couple. Then I caught myself. Even small apps draw attention from your main thing, regardless of how tiny they look on paper. Every hour spent dabbling is an hour FocusKit doesn&#8217;t get. The ideas went into the vault. I&#8217;ve written about this pattern before and it never stops being relevant, especially when momentum on the main project is good.</p><p><strong>The long game on ASO.</strong> I&#8217;ll be honest, I was a little deflated this week watching FocusKit&#8217;s ASO ranking move slower than I hoped. I would have loved a rocket ship trajectory. But the truth is, the long game is the only game. Ship great updates, keep listening to users, and trust that the compounding will happen. 100 issues of this newsletter is a pretty good reminder of that. Lots of small consistent progress, added up over time.</p><h2>&#127919; Goals for Next Week</h2><ul><li><p>Release FocusKit 1.5 on Monday</p></li><li><p>Hand in FocusKit 1.5.1 for review</p></li><li><p>Keep working through the beta feedback for the secret MacOS project</p></li></ul><p>That&#8217;s it for issue #100. Thanks again for being here for all 100 of these. I&#8217;ll see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #99]]></title><description><![CDATA[Light Themes, Live Apps, And A Personal Site]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-99</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-99</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 10 May 2026 06:33:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!T8ht!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This was a really good week. I shipped two releases on the same day, kicked off the next FocusKit cycle, and made more progress on my secret MacOS project. Let me tell you about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong><a href="https://habitkit.app">HabitKit</a> 1.15.1 is out.</strong> I shipped this on Thursday. It&#8217;s the maintenance release I lined up right after 1.15.0: performance improvements, bug fixes around statistics and widget completions, and the one new feature I snuck in, users can now customize their home screen widget theme independent of their system theme. Not a flashy release, but exactly the kind of update that keeps the app solid for the long run.</p><p><strong><a href="https://tryfocuskit.com">FocusKit</a> 1.4.1 also shipped on Thursday.</strong> Same day as HabitKit, which felt great. This release adds language support for Danish, German, Spanish, French, Italian, Dutch, Polish, and Portuguese, plus the iOS Shortcuts and Intents groundwork in preparation for potential upcoming Apple AI features. I also reworked the paywall so it shows up more consistently on update, added home screen widgets to onboarding, and ran a fresh App Store screenshot A/B test. Two main apps released in the same week, can&#8217;t complain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T8ht!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T8ht!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T8ht!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1430336,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/196896348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T8ht!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!T8ht!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6caadde-a511-4082-ad81-0ed3390df099_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit 1.5.0 is already in motion.</strong> With 1.4.1 out the door, I jumped straight into the next release. The headline so far: a fresh light theme that I&#8217;m really happy with. It looks clean, friendly, and finally makes FocusKit feel right in light mode. I also fixed a stubborn Live Activity bug where the activity would sometimes hang around after the app was killed. Nice momentum to carry into next week.</p><p><strong>My secret MacOS project keeps inching toward 1.0.</strong> Solid progress with my partners again this week. We had our usual sync on Monday, and I spent time playing with some experimental AI features. The remaining work is mostly the business side now: final designs, IAPs, App Store metadata, legal docs, and a landing page. We&#8217;re in the final stretch.</p><p><strong>Personal site is live.</strong> I deployed <a href="http://roehl.dev">roehl.dev</a> on the VPS last weekend. The bigger plan is that this becomes the proving ground for my website-revamp project. Personal site first, then FocusKit, then everything else. Owning the landing pages instead of relying on third-party tools has been on my list for a while.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ni5B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ni5B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ni5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ni5B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ni5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe98c112a-4c4b-4892-88b0-d3d8bf364d2c_2400x1352.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Picked up an OpenAI Max subscription.</strong> I noticed I was dragging my feet on certain experiments because of token anxiety, which is silly when there&#8217;s so much upside in trying new models. Now I&#8217;m running both Claude and GPT side by side, depending on the task. Wanted to remove that little bit of friction so I can keep playing with everything that&#8217;s coming out.</p><h2>&#128161; Indie Insights</h2><p><strong>Fitness as non-negotiable.</strong> One thing that&#8217;s been going really well for months: fitness is non-negotiable. No matter how bad my focus is or how stressed I am, I do the workout. I&#8217;m in the peak shape of my life right now. Being self-employed makes this possible, nobody overrides my schedule. A perk of the indie life I want to keep appreciating.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FLzt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FLzt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FLzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1877446,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/196896348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FLzt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FLzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67deebba-f85d-4ef6-9c01-33d6ef57a34a_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The value of slow days.</strong> I had a day recently with no fast media, no distractions, just reading, learning piano, being outside, talking to people. And I really enjoyed it. As an indie dev, it&#8217;s easy to feel like every hour should be &#8220;productive&#8221; in the traditional sense. But days like that recharge you in a way that grinding never does. I want more of those.</p><p><strong>Chill more.</strong> A note to self from the past few weeks: stop worrying so much about small things. Worrying doesn&#8217;t change outcomes. Do the work, enjoy life, trust that you&#8217;ll find a solution for whatever comes. Easier said than done, but a useful reminder.</p><p><strong>Building a business timeline.</strong> Had the idea to put together a timeline of my whole business story, from starting out to where I am now. The goal: a reusable resource for interviews, podcasts, or any time I need to tell the story. Could also be useful to have in my second brain so AI tools have full context on my journey.</p><h2>&#127919; Goals for Next Week</h2><p>Now that the two big releases are out, next week is about wrapping loose ends and pushing the side bets:</p><ul><li><p>Vibe-code the new FocusKit landing page</p></li><li><p>Continue work on the new FocusKit light theme</p></li><li><p>Keep chipping away at my secret MacOS project (designs, RevenueCat, App Store prep)</p></li></ul><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #98]]></title><description><![CDATA[Notes On Writing, Focus, And Not Acting On Every Idea]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-98</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-98</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 03 May 2026 07:00:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eH_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This week was all about wrapping up loose ends and getting the next round of releases ready. I finished the implementation for HabitKit 1.15.1, knocked out the FocusKit 1.4.1 translations, and made another solid push on my secret MacOS project with my partners. Let me tell you about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong>FocusKit 1.4.1 translations are in.</strong> This release will add language support for Danish, German, Spanish, French, Italian, Dutch, Polish, and Portuguese. I also finished the App Store Connect translations. The build itself has been ready for a while, with the new iOS Shortcuts and Intents groundwork in place. What&#8217;s left for shipping: translated screenshots and re-setting up the App Store screenshot A/B test. Once that&#8217;s wrapped, 1.4.1 is good to go.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eH_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eH_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eH_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4326171,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/195970622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!eH_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!eH_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cde19eb-3ce7-4bf3-89d6-d6499e954095_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>HabitKit 1.15.1 is feature-complete.</strong> I finished the implementation this week. This release is the maintenance update I planned right after 1.15.0: performance improvements and bugfixes. I added one feature though: Users can customize their home screen widget theme independent of their system theme now. Not the flashiest release, but exactly the kind of work that keeps the app solid for the long run. Testing is up next, and I want to ship it early next week.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KJ_c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KJ_c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KJ_c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1868791,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/195970622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KJ_c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!KJ_c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd866c030-049e-4e13-85ad-850f966ceac2_2400x1352.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>My secret MacOS project is moving toward 1.0.</strong> Solid progress this week. I pushed a fresh TestFlight build to my partners with the remaining features, and what&#8217;s left now is finalizing the design and polishing the app. RevenueCat integration is on the to-do list as well. Slowly but surely, the pieces are falling into place. I&#8217;m getting more excited for this launch every week.</p><p><strong>Talked shop with another indie hacker.</strong> I had a meeting with a fellow indie dev this week, and it was honestly one of the highlights. Exchanging strategies, fears, and ideas with someone who&#8217;s in the same trenches gives you a kind of clarity you can&#8217;t really get anywhere else. I want to do this more often. Indie dev can be a lonely path, and these conversations recharge me in a way that scrolling X never will.</p><p><strong>Mentoring a friend on his app.</strong> Had another vibe-coding session with a friend, helping him push his app forward. There&#8217;s something really rewarding about teaching someone the workflow, and you always end up sharpening your own thinking when you have to explain it out loud. Win-win.</p><h2>&#128161; Indie Insights</h2><p><strong>Write more.</strong> Getting comfortable expressing your thoughts and making them shareable is probably the best skill you can build as an independent dev. Weekly logs, daily journaling, release notes, social posts, it all compounds. My English is getting better, my thinking is getting clearer, and I have more material to draw from when I need it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K4ei!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K4ei!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 424w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 848w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 1272w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K4ei!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2441564,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/195970622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K4ei!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 424w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 848w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 1272w, https://substackcdn.com/image/fetch/$s_!K4ei!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98f2dcbd-f2c7-47e2-bf64-31a0fd6c77b5_1730x909.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Ideas won&#8217;t stop coming.</strong> My mind has been racing with new project ideas and I&#8217;ve been writing a bunch of them down. Part of it is probably a side effect of main projects being in a holding pattern. When you&#8217;re waiting on reviews and builds, your brain starts exploring new territory. The important part is to capture the ideas and not act on all of them. Ship first.</p><p><strong>The guilt of multiple projects.</strong> Something I&#8217;ve been sitting with: whenever I work on FocusKit, my secret MacOS project, or any side project, I feel guilty for not working on HabitKit. It&#8217;s my main revenue driver and there&#8217;s always more to do. Every indie dev with multiple products knows this feeling. The trick is accepting you can&#8217;t work on everything at once and being intentional about where you spend your time.</p><p><strong>Spreading yourself too thin.</strong> Managing multiple apps as a solo dev is a constant balancing act, and sometimes less really is more. I&#8217;ve been feeling stretched across too many active fronts. Being deliberate about focus is something I&#8217;ll keep working on.</p><h2>&#127919; Goals for Next Week</h2><p>Next week is mostly about shipping what&#8217;s already in the pipeline:</p><ul><li><p>Test and release HabitKit 1.15.1</p></li><li><p>Translated screenshots and A/B setup for FocusKit, then ship 1.4.1</p></li><li><p>Keep polishing my secret MacOS project (design templates, RevenueCat)</p></li><li><p>Decide on the next App Store screenshot A/B test</p></li></ul><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #97]]></title><description><![CDATA[Two App Updates Out The Door, Four Weeks In One Post]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-97</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-97</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 26 Apr 2026 10:13:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9lG6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back! It&#8217;s been a while, about four weeks, actually. The last few Fridays kept slipping past me without a writeup, so instead of skipping ahead I&#8217;m catching you up on everything in one combined post. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong>FocusKit 1.4.0 shipped!</strong> The big one. After wrapping up the implementation and final testing, I shipped FocusKit 1.4.0 on Tuesday this week. Wrote the release post, set up the in-app event, and got it out the door. The highlight of this release is three new iOS home screen widgets that I&#8217;m really happy with. Now I&#8217;m hoping the ranking improves over the next couple of months and that it brings in a bit more revenue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9lG6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9lG6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9lG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9lG6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!9lG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F185fb5a5-1bbd-4327-871b-0aad0f77b02a_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>HabitKit 1.15.0 is live.</strong> Also shipped this week, on Thursday. I finished testing and fixed a last round of bugs on Monday before getting the final build out. Having both main apps released in the same week felt great. I also planned the next release, HabitKit 1.15.1, which will focus on performance and bugfixes, not flashy, but these maintenance updates are what keep the app solid.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v2kw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v2kw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v2kw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v2kw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!v2kw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ed17ac-3737-49da-81fb-795e07c241c5_1200x675.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit 1.4.1 is already underway.</strong> I jumped straight into the next FocusKit release right after 1.4.0 went out. 1.4.1 is about translations and iOS Shortcuts &amp; Intents integration: preparation for better AI and automation support on iOS. The Intents groundwork is coming along. I also spent time getting the FocusKit test cases back to green!</p><p><strong>FocusKit UI test dashboard.</strong> One of the cooler things I built recently: a little dashboard for running FocusKit&#8217;s UI test suite and comparing the generated screenshots. The plan is to eventually have the suite run every night on my Mac Mini and use this tool to check results in the morning. I&#8217;m also building a dedicated full UI-run-through test case so I can move forward with future releases more confidently. Related side idea: turning my Mac Mini into a proper build server that runs nightly builds, executes tests, and even opens PRs to fix broken tests. Not sure when I&#8217;ll get to it, but the concept is too good to forget.</p><p><strong>My secret MacOS project is moving forward.</strong> Good progress here. My partners and I both put in solid work this cycle and knocked down a meaningful chunk of the 1.0 roadmap. The pieces are slowly falling into place. More details when the time is right.</p><p><strong>Side project playground - piano sight reading and a 3D game.</strong> First, a small game vibe-coded with Three.js and AI prompts, purely for fun, no plans to ship. And second, a piano learning app to help me with sightreading. None of these are revenue projects, but I&#8217;ll explain below why I think they matter.</p><p><strong>OpenAI image gen for marketing.</strong> The new OpenAI image generation is pretty cool for making marketing material. I fed it a raw screenshot of FocusKit&#8217;s home screen widgets and it pulled them out and placed them into a nice backdrop with some highlighting. Not perfect, but a solid starting point for promo images.</p><h2>&#128161; Indie Insights</h2><p><strong>Waiting time is building time.</strong> The big one for me from the past few weeks. My biggest leak of productivity has always been the &#8220;waiting time&#8221; between tasks, builds compiling, tests running, reviews pending. Old default: grab my phone or browse X and lose all my momentum. New default: jump into Claude Code and vibe-code on a side project. That&#8217;s how all those side projects above (piano app, notes app, Three.js game) are getting built. It keeps my brain in creative mode instead of pulling it out. Legit game-changer.</p><p><strong>Every new skill doubles your chance of success.</strong> Picked this up from a Scott Adams book recently: every new skill you acquire doubles your chances. You don&#8217;t need to be excellent at any one thing - just build an interesting skill set and stay curious. As an indie dev, this really resonates. The more things you can do well enough (coding, design, writing, marketing, making videos), the more leverage you have. I want to keep developing new skills and not get stuck in one lane.</p><p><strong>Timing is everything.</strong> Another one from Scott Adams&#8217; &#8220;Win Big&#8221; (a fun read so far): accumulate failures, try lots of things, and know that timing plays a massive role. This hit home for me. When I think about HabitKit&#8217;s success, a big part of it was building the right thing at the right time. Skill matters, but so does timing. Worth keeping in mind when evaluating new ideas.</p><p><strong>Doing things that scare you.</strong> I did a video interview a couple weeks back, and I was dreading it beforehand, zero motivation levels of dread. But once I sat down and did it, it was super chill. The prep took some effort (lighting, footage, screen captures) but it&#8217;s done and I&#8217;m glad I did it. Part of my anxiety came from doing it in English as a non-native speaker. These appearances are good for personal branding and product visibility, even when they&#8217;re uncomfortable. It&#8217;s not live yet, but I&#8217;ll let you know of course!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#127919; Goals for Next Week</h2><p>Back to business. The main goals for next week:</p><ul><li><p>Keep pushing on FocusKit 1.4.1 (Shortcuts/Intents + translations)</p></li><li><p>Work in HabitKit 1.15.1</p></li><li><p>Squeeze in some piano app vibe-coding between the main projects</p></li></ul><p>Also: not letting these weekly logs pile up again. Back to a consistent cadence from here on out.</p><p>That&#8217;s it for this catch-up. Thanks for reading, and I&#8217;ll see you next week!</p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #96]]></title><description><![CDATA[HabitKit Hits #1, A Secret Project Nears Launch, And AI Runs My Second Brain]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-96</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-96</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 29 Mar 2026 06:19:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZpVD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This was a really exciting week. I finished the implementation for HabitKit 1.15.0, reached a major App Store milestone, and made huge progress on my secret MacOS project. Let me tell you all about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128736;&#65039; Development Corner</h2><p><strong>HabitKit 1.15.0 is done.</strong> I finished the implementation this week, including the Compact List Widget for both iOS and Android, some Flutter tooling plumbing, and several bug fixes for statistics and crash reports. Testing is complete, and the update will be submitted for review this Sunday. This is a cool update that brings one of the most requested features (home screen widgets in list view) to all platforms.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZpVD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZpVD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZpVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg" width="1200" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ZpVD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZpVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4540de33-8602-44be-a8b6-7e3cdc1eddd2_1200x710.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>HabitKit hit #1 for &#8220;habit tracker&#8221; in Austria.</strong> This is a proud moment. Seeing HabitKit rank at the top for such a competitive keyword, even if it&#8217;s a smaller market, validates that the ASO strategy is working. I&#8217;m hoping more countries will follow as I keep improving the app and its listing.</p><p><strong>My secret MacOS project is getting close to launch.</strong> I had a really productive coding session this week and squashed a ton of bugs and UX issues. The app itself is feature-complete for 1.0, what&#8217;s left is mostly the business side: RevenueCat integration, App Store listing, legal documents, and a landing page. More details coming soon!</p><p><strong>FocusKit 1.4.0 widgets still on the backlog.</strong> I need to get back to this, but HabitKit and my secret MacOS project took priority this week. The widget release will be all about iOS Home Screen widgets: session control, today statistics, streak counters, and bar charts. I&#8217;ll try to make meaningful progress next week.</p><h2>&#128161; Indie Insights</h2><p><strong>AI is giving me more confidence as a developer.</strong> Something I&#8217;ve been noticing lately: AI-assisted coding tools are fundamentally changing what feels possible as a solo developer. Features and entire projects that I would have considered too complex or risky a year ago, like things involving unfamiliar frameworks, server-side infrastructure, or deep platform APIs, now feel within reach. Anyone else feel the same way?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BvpO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BvpO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 424w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 848w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 1272w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BvpO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png" width="1456" height="1105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1105,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1549987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/192138663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BvpO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 424w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 848w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 1272w, https://substackcdn.com/image/fetch/$s_!BvpO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dc7bfd1-0292-46bf-8aec-7e18f4b0bbef_3528x2678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Setting up an AI-powered second brain.</strong> I got Claude Cowork running this week and connected it to my Obsidian vault. The idea is to have an AI assistant that knows about all my projects, tasks, and ideas, and can proactively make progress on things while I focus on deep work. Think of it like having a virtual operations assistant for your indie business. I actually tried something similar in the past with OpenClaw, but I couldn&#8217;t get the cron jobs to run reliably and quickly gave up. Claude Cowork has been much more reliable when it comes to scheduled tasks, which makes all the difference. Early days, but the potential is massive. I want to automate my weekly indie log, my week reviews, and get suggestions on what to focus on.</p><p><strong>My daily Cowork schedule.</strong> Here&#8217;s what I&#8217;ve set up so far: every morning at 6 AM, Claude reviews my Second Brain, checks what&#8217;s on my plate, and delivers an actionable briefing for the day. At the same time, it checks my unread emails and drafts replies to app support messages in my style, so I just have to review and hit send. In the evening at 6 PM, it goes through my journal notes from the day and extracts noteworthy insights back into the vault.</p><p><strong>Helping a friend get into vibe coding.</strong> I had a meeting with a friend about AI-assisted development. Showing him how to go from idea to working prototype in hours was really rewarding. It also gave me another cool idea for a digital product that I could create. Filed this one under ideas for now.</p><h2>&#127919; Goals for Next Week</h2><p>Next week I want to submit HabitKit 1.15.0 for review and release it, make progress on the FocusKit 1.4.0 widgets, and start tackling the launch checklist for my secret MacOS project (RevenueCat, App Store metadata, legal docs).</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #95]]></title><description><![CDATA[Journaling, Building, and Staying Grounded]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-95</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-95</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 22 Mar 2026 07:40:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a87E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! March has been a busy month with a lot of things happening outside of work and my productivity has suffered because of it. But I still managed to make some solid progress on HabitKit this week, so it&#8217;s not all bad. Let&#8217;s get into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4>&#128736;&#65039; Development Corner</h4><p><strong>Progress on HabitKit Compact List Widgets.</strong> This is one of the most requested features HabitKit has ever received, and I&#8217;m happy to report that the iOS side is now complete. The widget shows your habit progress in the familiar Compact List View style, right on your home screen. I&#8217;m really happy with how it turned out. SwiftUI makes building iOS widgets a pleasant experience, and things just work the way you&#8217;d expect them to.</p><p><strong>Android widgets are in progress, but painful.</strong> After finishing the iOS version, I moved on to Android. And as expected, it&#8217;s a much worse experience. The &#8220;Jetpack Glance&#8221; framework, which is the modern way to build Android widgets, is incredibly limited compared to what SwiftUI offers on the iOS side. Simple things that take a few lines of code on iOS require workarounds and hacks on Android. I always despise working on native Android features, and this is no exception. But it has to be done. A lot of HabitKit users are on Android, and they deserve the same features.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a87E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a87E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a87E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a87E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a87E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a87E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg" width="1200" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!a87E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a87E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a87E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a87E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf345b7-f4dd-4997-944b-4fd387519e15_1200x900.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>No progress on FocusKit widgets or the secret macOS project.</strong> Unfortunately, March has been super busy with private stuff, and I didn&#8217;t manage to work on either of these projects at all. It&#8217;s frustrating, but I can only do so much as a solo developer. Once things calm down a bit, I&#8217;ll be able to spread my time across projects more evenly again.</p><p><strong>Had a cool new app idea.</strong> I had an idea for a cool mobile game this week that got me really excited. I&#8217;ve been thinking about the concept a lot and already have some rough ideas for the gameplay. But I know myself well enough at this point: starting new projects when existing ones still need attention is a bad idea. So I wrote the idea down and will revisit it once the dust settles. Focus on shipping first, explore new things later.</p><h4>&#128161; Indie Insights</h4><p><strong>Journaling keeps me grounded.</strong> I&#8217;ve mentioned this before, but daily journaling really is one of the best habits I&#8217;ve picked up. This month had a lot of distractions and stressful moments, and writing things down every day helped me stay focused and intentional. When everything around you is chaotic, having a few minutes of reflection in your journal makes a big difference. It&#8217;s like a reset button for your mind.</p><p><strong>Building small things with AI sparks new ideas.</strong> I&#8217;ve been experimenting more with using AI to build small apps and prototypes. Not for any specific business purpose, just to tinker and explore. What I noticed is that the process of building, even small throwaway projects, generates a lot of new ideas. You see patterns, you discover what&#8217;s possible, and you naturally come up with things you want to try next. It also gives you more content to share on social media, which is a nice side effect.</p><p><strong>My second brain setup is working well.</strong> I switched to Craft as my main note-taking tool a while ago, and I&#8217;m really happy with it right now. The design and UX are beautiful, and it just feels good to use. I wish it was a little bit faster in some places, but overall it&#8217;s a great tool for organizing my thoughts, ideas, and plans. Having a system where everything is captured and easy to find makes a real difference when you&#8217;re juggling multiple projects.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4>&#127919; Goals for Next Week</h4><p>Next week I want to finish the Android Compact List Widgets for HabitKit and ship the update. If time allows, I also want to get back to the FocusKit widgets or the secret macOS project. March is almost over, and I want to end the month with some solid momentum going into April.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #94]]></title><description><![CDATA[Two Widget Projects And One Very Tired Developer]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-94</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-94</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 15 Mar 2026 06:13:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C29P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This was honestly a mixed week. I wasn&#8217;t at my best health-wise, and my productivity definitely suffered because of it. I also had to deal with some private matters that ate up a lot of my time and energy. Being a solo indie dev without any employees means there&#8217;s simply no one to pick up the work when you&#8217;re not at 100%. Still, I managed to ship an important update and start working on some exciting new features. Let&#8217;s get into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4>&#128736;&#65039; Development Corner</h4><p><strong>HabitKit 1.14.6 is live.</strong> If you remember from two weeks ago, I was really excited about the massive performance improvements that AI helped me achieve. The update is now out on the App Store and Google Play. The app feels so much faster and smoother, and I&#8217;m really happy to finally have shipped this. Two years of struggling with performance issues, massive improvements in one update!</p><p><strong>Next up for HabitKit: New Home Screen Widgets.</strong> This is actually one of the most requested features HabitKit has ever received. The plan is to build a widget that looks like the Compact List View of the app, so users can see their habit progress visualized this way on their home screen as well. I&#8217;m going to start with iOS first because the widget APIs are much cleaner and easier to work with there. Android&#8217;s Jetpack Glance framework is super limited and annoying to deal with in comparison, so that will come later. I think a lot of people will be very happy to finally see this feature land in the app. This is going to be a big project, but I&#8217;m excited to get started.</p><p><strong>No progress on the secret macOS project.</strong> Unfortunately, I didn&#8217;t get to work on it at all this week. There&#8217;s still one big change I need to implement that came out of the first user test, but between not feeling great and other priorities, it just didn&#8217;t happen. Frustrating, but not every week can be a productive one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C29P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C29P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!C29P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!C29P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!C29P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C29P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5706171,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/190851285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C29P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!C29P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!C29P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!C29P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678c616f-593d-4cd3-834c-47c1c8b0a521_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Started working on FocusKit 1.4: Home Screen Widgets.</strong> This is one of the most requested features for FocusKit as well, and I finally started building it this week. The idea is to give users quick access to their focus timer and session progress right from their home screen. I already had a plan for this update ready to go, so it was nice to just sit down and start executing. It&#8217;s still early, but the foundation is coming together. I&#8217;m also considering a light theme for 1.5, and I want to kick off an A/B test for the App Store screenshots soon. I mentioned this a few weeks ago already, and I think it&#8217;s time to actually do it.</p><h4>&#128161; Indie Insights</h4><p><strong>Being sick as a solo dev is rough.</strong> This is something nobody really talks about when they romanticize the indie lifestyle. When you&#8217;re feeling ill and you&#8217;re the only person working on your business, everything just stops. There are no colleagues/employees who can jump in and handle things while you recover. No one is answering support emails, no one is fixing bugs, no one is shipping updates. It&#8217;s just you, and if you&#8217;re down, the business is down too. It&#8217;s really frustrating, especially when you have a list of things you want to get done and your body just won&#8217;t work. All you can do is rest, get better, and then get back to work.</p><p><strong>Taxes are done.</strong> I finalized all my documents this week and handed everything to my tax advisor. If you&#8217;ve been reading along, you know I mentioned working on tax preparation a couple of weeks ago. Getting this off my chest feels really good. It&#8217;s one of those tasks that just sits in the back of your mind and drains energy until you finally deal with it. Now I can fully focus on building again without that nagging feeling.</p><p><strong>Thinking about FocusKit pricing.</strong> I&#8217;ve been going back and forth on whether to raise FocusKit&#8217;s price. The idea would be to add a light theme, stabilize the app a bit more, and then bump it to $2 / month. On the other hand, my original thought was to wait until the app starts ranking better for important keywords and then use the influx of new users to build momentum with the lower price. I honestly don&#8217;t know which approach is better yet. Maybe I&#8217;ll just try it and see what happens. That&#8217;s usually the best strategy anyway when you&#8217;re overthinking things.</p><h4>&#127919; Goals for Next Week</h4><p>Next week I want to start building the HabitKit home screen widget. I&#8217;m going to begin with the iOS version and see how far I can get. I also want to finally get back to the secret macOS project and implement the feedback from the user test. Let&#8217;s hope for a healthier and more productive week.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #93]]></title><description><![CDATA[When AI Solves A 2-Year Problem In 30 Minutes]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-93</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-93</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 08 Mar 2026 07:34:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jLyD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This week was a strong shipping week. <a href="https://tryfocuskit.com">FocusKit</a> got its Watch release, <a href="https://habitkit.app">HabitKit</a> received maintenance and a big performance update, and the secret macOS project moved much closer to first external feedback. It feels good to see progress on multiple fronts at the same time.</p><h4><strong>&#128202; Business Updates</strong></h4><p>FocusKit is doing well. MRR is at $121, and revenue for the last 28 days is at $637. The app is still young, so I&#8217;m happy with where things are going. The Watch integration should help with engagement and retention, and I&#8217;m hoping the next few updates will push the numbers even higher.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jLyD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jLyD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jLyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg" width="1200" height="676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:676,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!jLyD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jLyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a49e62-cbad-49ed-8832-00daf8a9c41b_1200x676.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>&#128736;&#65039; Development Corner</strong></h4><p>This week was very busy, so let me break it down by project:</p><p><strong>The secret macOS project reached MVP feature completeness.</strong> I finally fixed many UX and design issues that came up during first internal testing. After that, I submitted another improved build to my two collaborators. The next step now is getting first user feedback, and I will share more details about this soon. The target group is indie app developers, so it fits very well with my audience on X and LinkedIn. I&#8217;m excited to see how people react to it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZPMS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZPMS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZPMS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg" width="1091" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1091,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ZPMS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZPMS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe817c4e5-8de9-4111-85fc-7a901c9c341f_1091x1200.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit 1.3 shipped with Apple Watch integration.</strong> Users can now manage sessions and workflows directly from their wrist, which was a big milestone for the product. Early feedback has been very positive, which is always motivating right after a release. I already received a few bug reports as well, so fixing those quickly is one of my priorities for next week.</p><p><strong>HabitKit is back in active development mode.</strong> I released the first update in a long time. I upgraded Flutter, updated all dependencies, and did some smaller fixes. This gives me a clean and stable base to move faster again. I&#8217;ve been neglecting this project for a while because of FocusKit and the macOS project, but now I feel ready to pick up the pace.</p><p><strong>HabitKit performance finally fixed.</strong> I&#8217;ve been trying to improve the performance of HabitKit for the past 2 years. I tried many different approaches, but nothing really worked well enough. This week I decided to throw AI at the problem. It refactored the code in about 30 minutes and the performance of the app improved by roughly 10x. I&#8217;m honestly not sure how to feel about this. Maybe I&#8217;m just a bad programmer? But then again, I picked the right tool for the job and made real progress. I&#8217;m excited to ship this update at the start of next week.</p><h4><strong>&#128161; Indie Insights</strong></h4><p><strong>Taxes are the boring part of being indie.</strong> The deadlines here in Germany are approaching, and I spent time this week finalizing bookkeeping and tax preparation. It&#8217;s not glamorous, and it&#8217;s definitely not the part of indie hacking that anyone talks about. But it has to be done. As a solo entrepreneur, you don&#8217;t get to skip the tedious stuff. You just have to push through it and then get back to the fun parts.</p><p><strong>AI keeps surprising me.</strong> The HabitKit performance story really made me think. Two years of trying to solve a problem myself, and AI solved it in half an hour. The interesting thing is that I already had a good understanding of where exactly the performance problems were. I knew the bottlenecks. But I couldn&#8217;t think of the perfect combination of fixes that would actually solve it without breaking other things. I used my usual workflow: Opus 4.6 for planning and Codex 5.3 for implementation. The result was a nice multi-file refactoring that included some very interesting architecture changes I wouldn&#8217;t have thought of myself. The right tool can save you months of frustration.</p><p><strong>Premature optimization is real.</strong> I just wanted to share an additional thing. I took a look at my monthly Firebase bill this week. Back when I started my business, I spent countless hours optimizing the code of my first app to reduce potential Firebase costs. I present to you: the monthly bill. 0.21&#8364;. Yeah. Don&#8217;t spend time on problems you don&#8217;t have yet.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OBu_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OBu_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 424w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 848w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 1272w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OBu_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png" width="730" height="228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:228,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!OBu_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 424w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 848w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 1272w, https://substackcdn.com/image/fetch/$s_!OBu_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9a1d576-a4b3-4095-b62b-bdfc04cb1ebd_730x228.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>&#127919; Goals for Next Week</strong></h4><p>Next week I want to ship the HabitKit performance update. I also need to fix the bug reports from the FocusKit Watch release before they pile up. Lots of shipping ahead, but I&#8217;m feeling motivated.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #92]]></title><description><![CDATA[Three Projects, One Productive Week]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-92</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-92</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 01 Mar 2026 06:09:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5xKG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This was a crazy productive week. I finished a major <a href="https://tryfocuskit.com">FocusKit</a> update (releasing next week!), got <a href="https://habitkit.app">HabitKit</a> back into a development-ready state, and made more progress on my secret macOS project. Multiple projects moving forward at the same time, which is exciting and exhausting simultaneously.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128736;&#65039; Development Corner</strong></h4><p>A lot happened this week, so let me break it down project by project.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;68f75681-68ab-468c-8757-c5dc3eab0c43&quot;,&quot;duration&quot;:null}"></div><p><strong>FocusKit 1.3 is done.</strong> The update adds Apple Watch integration, which I&#8217;ve been working on for the past few weeks. I&#8217;m really happy with how it turned out, and the feedback from beta testers has been great so far. I think this will be a solid addition to the product and improve the workflow for a lot of users who want to track their focus time without pulling out their phone. Getting this shipped feels really good.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5xKG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5xKG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5xKG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg" width="1200" height="439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!5xKG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5xKG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc953e6df-a008-4d96-ae37-9f43309cef8a_1200x439.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>HabitKit is back in business.</strong> I finally upgraded the project to the latest Flutter version and updated all dependencies. This doesn&#8217;t sound exciting, but it was long overdue. Work has been piling up for HabitKit because I was so focused on FocusKit and the secret macOS project over the past weeks. Now I feel like I have a solid foundation again to iterate on the product. It&#8217;s really hard to find a good balance of time allocation when you&#8217;re running multiple projects at the same time. HabitKit is still my most important project, and it deserves more attention.</p><p><strong>Secret macOS project is getting closer.</strong> I finished another test version this week and I&#8217;m really proud of the result so far. It&#8217;s a native macOS app that utilizes Apple&#8217;s liquid glass APIs, which I personally love. The goal is to release it sometime in March or April. I&#8217;m working on this project with two friends, so I don&#8217;t have complete control over the timeline, but things are moving in the right direction.</p><h4><strong>&#128202; Business Updates</strong></h4><p>FocusKit MRR is still stalling at around $120. The App Store ranking isn&#8217;t great yet, but the app is still relatively young, so I doubt it will rank for the bigger keywords this soon. The most important things right now are: listening to user feedback, gathering reviews on the App Store, and improving the product. That&#8217;s all I can really control.</p><p>On the bright side, one-time-purchase revenue is looking decent. The app made about $600 in the past 28 days, which is pretty cool for a project this young. I&#8217;m also planning to run some App Store screenshot A/B tests soon. I have a feeling that a clean white background with black text could have a better conversion rate than my current design. We&#8217;ll see how that goes.</p><p>Here&#8217;s the big win of the week though: revenue for February 2026 is higher than February 2025. This is huge for me because the past two months were slightly down compared to their respective months from last year. That dip was probably caused by the MKBHD video mention of HabitKit (from &#8220;The Studio&#8221;) which boosted revenue and downloads artificially back then. Now it feels like we&#8217;re actually growing organically again, which is awesome and really reassuring.</p><p>I&#8217;m also thinking about increasing prices for FocusKit. Haven&#8217;t made a final decision yet, but it&#8217;s something I want to experiment with.</p><h4><strong>&#128161; Indie Insights</strong></h4><p><strong>AI tooling keeps getting better.</strong> I think Cursor is the real GOAT right now. It lets you pick whatever AI model you want, gives you full control over the code, and the workflow just feels right. Highlight a code snippet, throw it into the agent context, done. The progress I&#8217;m making across all my projects right now would not be possible without it. Software engineering expertise is becoming less and less of a bottleneck. What matters now is focus, clear thinking, and knowing what to build.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_-ut!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_-ut!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 424w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 848w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_-ut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png" width="1456" height="1099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1099,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2857388,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/189344723?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_-ut!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 424w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 848w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!_-ut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3093d45f-a9f3-4855-a6e7-d0c3b06f41d2_2688x2028.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>OpenClaw reality check.</strong> Remember when I was super excited about my OpenClaw setup? The reality is that the maintenance cost is just too high. It breaks often, and when I task it to debug itself, it burns through tokens like crazy. Perplexity released an alternative called Perplexity Computer which looks interesting, but I&#8217;m hesitant to sign up for another $200/month subscription just to try some AI tools. I&#8217;m sure more polished agent solutions will come over time, making the whole concept less maintenance-intensive. For now, the hype has cooled down for me a little bit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-FXN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-FXN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-FXN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!-FXN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!-FXN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F528dfb17-2a14-4d9a-a06e-96a9c394894d_2912x1632.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Focus is the real superpower.</strong> I keep coming back to this, but it&#8217;s really true. In a world where you can build almost anything with the right tools and a bit of persistence, the bottleneck is not skill anymore. It&#8217;s focus. Knowing what you want and pursuing your projects with real motivation is what separates people who ship from people who don&#8217;t. This week I had some days with zero appointments, and the difference in output compared to days with scattered meetings was massive. I also realized that I slipped back into some bad habits around screen time and distractions. It&#8217;s always like a landslide. You open one gate, and the flood comes. You need to stay disciplined on all fronts, all the time. Deep life habits like going offline more, reading more, and limiting social media to a fixed 20-minute window per day are things I want to get back to.</p><p><strong>Journaling is underrated.</strong> I&#8217;ve been writing in my journal daily for a while now, and it really is a superpower. It helps me reflect on my progress and where I want to go. The past couple of weeks have been super work-intensive and I made a ton of progress, but writing things down every day keeps me grounded and intentional. If you&#8217;re not journaling yet, I really recommend trying it.</p><h4><strong>&#127919; Goals for Next Week</strong></h4><p>Next week I want to start planning the next big FocusKit update. I think it will be all about Home Screen Widgets. I also want to continue with HabitKit development and finally tackle some long-due performance optimizations. Lots of work ahead, but I&#8217;m feeling motivated and ready to keep shipping.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #91]]></title><description><![CDATA[Shipping on All Fronts]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-91</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-91</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 22 Feb 2026 07:41:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ThCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This was one of those weeks where I just put my head down and shipped. Multiple projects moved forward at the same time, I ran into some tough technical challenges, and I spent some time improving my development workflow. Let&#8217;s get into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128736;&#65039; Development Corner</strong></h4><p>A lot happened this week on the development side, so let me break it down project by project.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cn0k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cn0k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cn0k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg" width="1200" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Cn0k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cn0k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95bd8158-b0ef-4f2b-b63e-5d9a1e2fc34a_1200x900.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>FocusKit Watch Integration is almost ready for beta.</strong> If you&#8217;ve been following along, you know I&#8217;ve been working on bringing FocusKit to the Apple Watch. This week I made some really solid progress on it. Users will be able to start, stop, reset, and skip sessions directly from their wrist, see their Routine progress, and even get a history of the past couple of days. I&#8217;m really happy with how it&#8217;s coming together.</p><p>That said, building for watchOS is not easy. Apple created this beautiful ecosystem and then they just... don&#8217;t give you the APIs you need. Some things that feel like they should be straightforward are either not possible or require really creative workarounds. I had a nice evening vibe coding session earlier this week where things finally clicked, and after that we moved fast. But getting there was a struggle. Lots of obstacles and failed approaches, even with AI assistance. Some things like canvas operations and sidebar layouts are just tough no matter how you approach them.</p><p>One thing I noticed while testing the newest version: some workflows and animations started to lag. I iterated pretty fast while preparing the phone app for integration with the Watch, and now I need to go back and debug performance. This is honestly one of my biggest weaknesses as a developer. After a while of building features quickly, animations start to feel janky and I need to sit down and actually think about best practices and optimization. It&#8217;s not the most exciting work, but it has to be done.</p><p>I also added a couple of Complications for the Watch faces and I had a lot of fun while building them out. First time I felt like Xcode did something right in terms of developer experience.</p><p><strong>My secret MacOS side project is getting closer to a release-ready version.</strong> I&#8217;ve been putting a lot of time into polishing and design tweaking on this macOS app project. If you remember from last week, I finally got it to beta after dragging it around for over 2 years. This week the focus was on making the whole experience feel right. Getting closer every week.</p><p><strong>HabitKit landing page in the background.</strong> Here&#8217;s something I&#8217;ve been doing that I really enjoy: while my main focus was on FocusKit development, I&#8217;ve been vibe coding on a new landing page for HabitKit on the side. It&#8217;s one of those projects you can pick up for 30 minutes when you need a break from your main task. Different context, different tech stack, but still productive. I like working this way because it keeps things fresh without losing momentum on the important stuff.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ThCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ThCk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ThCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1917428,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/188593597?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ThCk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!ThCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b28195b-7e36-4b56-96d2-f4f40f3efd05_2400x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Quick thought on Apple&#8217;s recent design direction: iOS 26 Liquid Glass.</strong> I&#8217;ve said it before and I&#8217;ll say it again: this is one of the best design decisions Apple has ever made. Every time I look at it, I&#8217;m impressed. It just looks right. Especially the look and feel of the Apple Music app with the latest iOS beta is awesome.</p><h4><strong>&#128161; Indie Insights</strong></h4><p><strong>The AI speed paradox.</strong> New AI models are allowing me to iterate on my ideas faster than ever. I can go from concept to working prototype in a fraction of the time it used to take. AI should theoretically make you work less, right? In practice, I&#8217;ve never worked as much as in the past few weeks. The speed at which you can build things doesn&#8217;t give you a breathing break. There&#8217;s always the next feature, the next improvement, the next project you could start right now. It&#8217;s a weird paradox. The tool that should free up your time actually makes you want to spend more time building because the results come so fast. I&#8217;m trying to be more intentional about this, but it&#8217;s hard when every new model makes you 10% faster.</p><p><strong>Cursor Skills and Rules.</strong> One thing I heavily neglected over the past months: setting up proper Skills and Rules for my projects in Cursor. I knew they existed, I knew they were useful, but I never took the time to really experiment with them. This week Cursor added a marketplace that makes it super easy to import battle-tested skills from other developers. I spent some time exploring it and I&#8217;m honestly impressed. It&#8217;s one of those things where you wonder why you didn&#8217;t do this earlier. Having good rules and skills set up for your codebase makes the AI output so much better. If you&#8217;re using Cursor and haven&#8217;t looked into this yet, I really recommend checking it out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6HAF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6HAF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6HAF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg" width="1200" height="609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:609,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!6HAF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6HAF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e418f2-2e55-42e5-a30d-ed0b82fbde92_1200x609.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Productivity app adventures.</strong> I&#8217;ve been trying out Craft as my new productivity and journaling app. I really tried to like Obsidian for a while, but it just feels too scrappy for me. The tasks plugin doesn&#8217;t feel smooth enough, and the whole experience is more &#8220;powerful tool&#8221; than &#8220;enjoyable app&#8221;. Craft on the other hand is just beautiful. It feels good to open it, it feels good to write in it. Sometimes the tool you use matters just as much as what you do with it.</p><h4><strong>&#127919; Goals for Next Week</strong></h4><p>Next week will be all about HabitKit. I need to upgrade the Flutter version and do some maintenance work that I&#8217;ve been pushing off for a while. It&#8217;s not glamorous work, but it&#8217;s necessary. The goal is to get HabitKit into a development-ready state where I can vibe code on it regularly and ship updates more frequently again. It&#8217;s been on the back burner for too long while I was focused on FocusKit and the macOS projects, and it deserves some attention. Once the maintenance is done, I can start making progress on some important features in the coming months.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #90]]></title><description><![CDATA[AI Workflows, Apple Watch Integration, and Finding the Right Setup]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-90</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-90</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 15 Feb 2026 09:15:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mWi-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log! This week was all about systems. Setting up new tools, finally getting a long-running side project to beta, and finding the right AI coding workflow. If I&#8217;m being honest, I spent way more time tinkering with tools and prompting than writing actual code. But sometimes that&#8217;s exactly what you need to do to move faster later. Let&#8217;s get into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128202; Business Updates</strong></h4><p>Not a lot to report on the revenue side this week. HabitKit is still settling into its post-New-Year baseline, which is completely expected at this point. If you&#8217;ve been following along for a while, you know what&#8217;s happening. January is the big peak, and then it slowly comes back down to normal levels. Nothing to worry about. I&#8217;ve seen this movie before, and I know how it ends: things stabilize, and then we grow again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mWi-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mWi-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mWi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg" width="1360" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:226339,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/187837309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mWi-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mWi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15400731-4f30-488a-bd2f-2dd019d1ba60_1360x768.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>FocusKit&#8217;s MRR is stagnating a little bit right now, but the total revenue is still doing great. The seasonal dip doesn&#8217;t bother me anymore. A year ago I would have been checking my RevenueCat dashboard five times a day and stressing about every small drop. Now I just trust the process and focus on making the app better. That&#8217;s really the only thing I can control anyway.</p><h4><strong>&#128736;&#65039; Development Corner</strong></h4><p>Okay, let&#8217;s talk about what actually got built this week.</p><p><strong>A side project finally hit beta.</strong> I&#8217;ve been dragging this macOS app around for over 2 years now! It was one of those projects that kept getting pushed back because there was always &#8220;real work&#8221; to do for my existing apps. Every time I wanted to sit down and work on it, something else came up. A bug fix for HabitKit. A new feature for FocusKit. Support emails. You name it. But this week, with some heavy AI assistance, I finally got it to a state where I can put it in front of the first internal tester. It&#8217;s not perfect by any means, but it works. And I can&#8217;t tell you how good it feels to actually ship something after procrastinating on it for so long. There&#8217;s something about getting a project out of your head and into the real world that feels incredibly freeing. More details coming soon, I promise.</p><p><strong>FocusKit 1.2.1 shipped.</strong> This was a polish update focused on small UX details that really matter. The main thing: I added an active session indicator in the History tab with a nice pulsating animation. Here&#8217;s the problem I was solving: users would start a focus session, switch to the History tab, and it would look completely empty. They were confused and thought the app wasn&#8217;t tracking their session. Not a great experience. Now they can see their active session right there, doing its thing. Simple fix, but it makes the app feel so much more alive.</p><p>I also tried to add a long-press gesture on the toolbar date picker to jump back to today. Seemed like a great idea in my head. You&#8217;re looking at last week&#8217;s history, long-press, and you&#8217;re back to today. Turns out SwiftUI doesn&#8217;t play nice with this at all. Getting a date picker into the toolbar was already a struggle. Adding a long-press on top of that? The APIs just refuse to work together cleanly. I spent about an hour trying different approaches before accepting defeat. Sometimes you just have to let features go and move on. It stays on the &#8220;nice to have&#8221; list for now. Maybe one day, I&#8217;ll find a creative workaround. We&#8217;ll see.</p><p><strong>FocusKit WatchKit integration is underway.</strong> This is the big project for the next few weeks and I&#8217;m really excited about it. I spent a lot of time this week refactoring the SessionManager to make it callable from everywhere, including the Watch app. Right now it&#8217;s a lot of groundwork and not very glamorous, but it&#8217;s necessary to get right. The goal is to let users start a focus session from their wrist, see live progress on the Watch, and get those nice haptic notifications when the timer ends. My vision for FocusKit has always been to make it as Apple-like as possible, deeply integrated into the whole ecosystem. iOS, widgets (coming soon as well), and now watchOS. I want it to feel like it belongs there, like Apple could have built it themselves.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RCWu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RCWu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 424w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 848w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 1272w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RCWu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png" width="1200" height="1330" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1330,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RCWu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 424w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 848w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 1272w, https://substackcdn.com/image/fetch/$s_!RCWu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba6dd66-5d69-476f-9462-5a004addb4dc_1200x1330.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The OpenClaw setup is getting serious.</strong> If you&#8217;ve been reading my past issues, you know I&#8217;ve been building out a personal AI assistant setup with OpenClaw. This week I found some time to tinker with it again. I let it creat a custom skill that automatically summarizes YouTube videos and saves them to my knowledge base. So now instead of watching a 30-minute video, I can just feed it the link and get a clean summary in seconds. It&#8217;s been great for keeping up with all the AI content without losing entire evenings to YouTube.</p><p>I also set up a dedicated area where the AI can keep its own tasks, capabilities, and even journal entries. I basically gave my AI assistant its own workspace where it can organize itself. It actually makes the whole setup way more useful. The more context the AI has about itself and what it can do, the better it performs.</p><p>Looking ahead, I want to explore some new models as well. The new MiniMax M2.5 model looks interesting, and I&#8217;m curious how it compares to my current setup with Opus and Codex. The AI landscape is moving at an insane speed right now, and it feels like every week there&#8217;s something new to try.</p><h4><strong>&#128161; Indie Insights</strong></h4><p>I think I finally cracked my AI coding workflow (until the next wave of disruptive models drop). For the past couple of weeks, I&#8217;ve been experimenting with different setups, trying to find the sweet spot between letting AI do the work and staying in control of my codebase. And here&#8217;s what&#8217;s working really well for me right now:</p><ul><li><p><strong>Opus 4.6 for planning.</strong> I describe the feature I want to build, the architecture, the edge cases, everything I can think of. Opus thinks through the whole thing and gives me a solid plan with all the steps laid out. It&#8217;s like having a senior developer do the design review before you write a single line of code. I also gave it a bunch on skills and rules for best practices on SwiftUI and my codebase in general.</p></li><li><p><strong>Codex 5.3 for implementation.</strong> Once I have the plan, I hand it to Codex in Cursor and let it write the actual code. Having a clear plan makes a huge difference here. The more specific the plan, the better the output.</p></li><li><p><strong>Me for review.</strong> I read what it produced, test it, fix the obvious mistakes, and iterate. This is the part where my actual coding knowledge comes in. You still need to understand what&#8217;s happening under the hood.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RaBO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RaBO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RaBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg" width="1360" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224405,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/187837309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RaBO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RaBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf63fa3b-e645-4569-a799-3bafeaed8204_1360x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This workflow has been incredibly productive for me lately. I&#8217;m moving faster than I ever could coding everything myself, but I still feel fully in control of what&#8217;s happening in my codebase. The AI handles the boring implementation details, and I focus on the architecture and UX decisions. You know, the stuff that actually matters for the user.</p><p>I&#8217;m starting to think less about &#8220;how do I code this?&#8221; and more about &#8220;how do I describe what I want so an AI can build it?&#8221; It&#8217;s a completely different skill set. Less syntax memorization, more clear thinking and communication. I finally feel like a product manager, writing specs for a really fast developer who never needs a coffee break.</p><p><strong>One more thing I want to be honest about.</strong> The AI hype on X brings me anxiety sometimes. I see people building all kinds of amazing stuff every single day, shipping new tools, launching products, creating businesses overnight. And it&#8217;s a little bit intimidating how fast everyone seems to be moving. There are moments where I think &#8220;am I falling behind? Should I be doing more?&#8221; But I&#8217;m actively trying to focus on my own progress instead of comparing myself to others. Comparison really is the thief of joy, especially on social media where everyone only shows their highlights. I have my own pace, my own goals, and my own journey. That has to be enough.</p><p>Also, I really need to pick up the deep life habits again. If you read my past issues, you know I used to be really strict about avoiding Reddit and YouTube. Well, I slipped. These platforms are garbage for my brain. I always tell myself &#8220;just one video&#8221; or &#8220;just a quick scroll&#8221; and then 45 minutes have passed and I feel worse than before. X has some value with all the AI discussion happening there, but it&#8217;s also a massive distraction. I keep tabbing away from my work to check notifications. Not good. I need to get back to being disciplined about this, because the difference in my focus and productivity is night and day.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#127919; Goals for Next Week</strong></h4><p>The main goal is to make serious progress on the FocusKit Watch app and get it to the TestFlight crowd. I&#8217;m really excited about this update because it&#8217;s not just the Watch integration, it will also bring a lot of performance improvements to the iPhone app. The refactoring I&#8217;m doing now to support the Watch is making the whole codebase cleaner and faster. Sometimes doing the hard work upfront pays off in unexpected ways.</p><p>That&#8217;s it for this week. Thanks for reading, and I&#8217;ll see you in the next one!</p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #89]]></title><description><![CDATA[Getting Comfortable with the Uncomfortable Parts of Business]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-89</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-89</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 08 Feb 2026 06:51:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4pBB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another article about my life as an independent app developer. We&#8217;re living in crazy times as developers when you look at the speed of changes caused by AI, but I am really positive about all the changes and I am super excited to increase my business output with all the new tools that are available. Let&#8217;s see what happened this week.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128202; Business Development</strong></h4><p>February is always a weird month for my business. We&#8217;re coming from the crazy highs of January and now we&#8217;re facing two things at the same time: First, we see a massive spike in renewal revenue because so many new people decided to improve their life with <a href="https://habitkit.app">HabitKit</a> at the start of January and all those monthly subscriptions are now renewing. Second, we also see a massive spike in churn, because a lot of people didn&#8217;t follow through with their plans to change their life and stopped using the app again. Which means they are cancelling their subscriptions. New subscribers coming in, old subscribers leaving. The result? Stagnating (or even declining) MRR.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4pBB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4pBB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4pBB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1339583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/187063589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4pBB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!4pBB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7d9c6b-41be-406b-910d-2e83773b12cd_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But honestly, this is totally fine for me. It&#8217;s happening every single year and by now I know that growing MRR will be back in March or April. For the first two years of my business, this kind of flatline was really hard for me to deal with. I would check the numbers every morning and feel a little sting every time. But now I&#8217;ve been through this cycle enough times that I can just relax and trust the process. Experience is a beautiful thing.</p><p><a href="https://tryfocuskit.com">FocusKit</a>&#8217;s growth is also stagnating a little bit. Right now, we are at $113 MRR and we made $748 in total revenue for the past 28 days. These numbers are super low in comparison to HabitKit, but you know what they say: &#8220;comparison is the thief of joy.&#8221; So I have to imagine I never had the HabitKit experience and enjoy the numbers as if FocusKit was my first and only app. When you look at it like that, ~$750 in revenue for the past 28 days is actually awesome and I am really happy with that. A year ago, FocusKit didn&#8217;t even exist. Now it&#8217;s making real money. Still, I am excited to make it grow even more and I will do everything I can to make it the best Pomodoro / Focus Timer app out there.</p><h4><strong>&#128736;&#65039; FocusKit Development</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sz3D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sz3D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sz3D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1823184,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/187063589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sz3D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!Sz3D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18558ab3-3b35-4caf-ae57-65d2df27569e_5000x2000.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On Monday I released the biggest update for FocusKit yet! I already told you about all the cool new features in previous newsletters so you probably already know that it brings support for custom routines. Users can now build their own routines from scratch, manage multiple of them, give them names, adjust the individual durations, and configure the long-break logic exactly how they want it. This makes FocusKit so much more flexible and customizable. I use this feature all the time myself, so I am pretty sure that other people will love it as well. Nothing beats using your own product and thinking &#8220;yeah, this is actually good.&#8221;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;675e24d8-7383-4fe5-bae6-df912b0e085e&quot;,&quot;duration&quot;:null}"></div><p>But I didn&#8217;t stop there. I already have the next smaller update in development and it&#8217;s ready for testing. This one fixes two pain points that users have been telling me about for a while:</p><ul><li><p><strong>Auto-advance to Next Session:</strong> Some users thought it was weird that you have to explicitly tap a button to move to the next session when the previous one is over. I originally implemented it that way because I thought some people prefer to fill in the session notes AFTER a session finishes, so staying on the completed session and allowing the user to make changes made sense to me. Turns out, not everyone works like that. Some people just want the next session to start immediately without any extra taps. Fair enough. So I made this configurable in the settings. Now there is an &#8220;Auto-advance to Next Session&#8221; toggle and everyone can choose what works best for them.</p></li><li><p><strong>Daily Routine Reset:</strong> This was the other big pain point that many users kept telling me about: The routine progress doesn&#8217;t automatically restart at the start of a new day. When you think about it, this makes total sense. Nobody wants to open the app in the morning and start with a break session because that&#8217;s where they left off yesterday. I have to be honest, I hadn&#8217;t thought this through properly when I developed the first version of the app. And the funny thing is, once so many people kept nagging me about this, I realized that it actually annoyed me too. I just never noticed it because I was so focused on building other features. So I made this configurable as well, with &#8220;Yes, please refresh every day&#8221; as the new default.</p></li></ul><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c02b1c4f-2629-4f08-9302-488fc12a5945&quot;,&quot;duration&quot;:null}"></div><p>Can&#8217;t wait to release this! Should be out next week. These are the kind of updates that don&#8217;t sound exciting on paper, but they make the daily experience of using the app so much better. And happy users stick around longer, which is great for retention and ultimately for the business.</p><h4><strong>&#129302; OpenClaw Updates</strong></h4><p>If you&#8217;re following me on X or read my last newsletter issue, you probably know that I am pretty excited about OpenClaw and agentic AI in general. I already saw so many positive effects on my development speed that I am super stoked about having a personal assistant for my app business. I have to admit that I couldn&#8217;t find that much time this week to expand my workflows with it, but I have some huge plans. Especially once Sonnet 5 drops. Can&#8217;t wait to see what that model can do.</p><p>The most interesting use case I&#8217;m working on right now: Support Email Automation. Here&#8217;s the thing, the first 30 minutes of my work day are usually eaten up by answering support emails. I get so many questions about how to cancel the subscription or how to archive a habit or when feature X will drop. And the answers are usually pretty similar every time. Copy, paste, adjust a name, send. It&#8217;s not hard work, but it&#8217;s repetitive and it eats into my productive morning hours. So there is definitely room for automation here.</p><p>Here is the plan, and I think it&#8217;s going to be really cool:</p><p><strong>Step 1: Fix the email situation.</strong> Right now, everything is pointing to my private Gmail address. Yes, I know... not very professional. We need to create a proper support email address for my indie app business and update every single place where I link to it. App Store descriptions, in-app support buttons, website footer, everywhere. This alone is going to be a bit of a project, but it&#8217;s long overdue anyway.</p><p><strong>Step 2: Let OpenClaw handle the drafts.</strong> Once the new email is set up, I want to give Eric, that&#8217;s my OpenClaw bot, access to it and let him DRAFT (not send!) replies to the incoming emails. This is really important to me: the bot should never be able to send emails on his own. I want to stay in the loop and have the final say on everything that goes out. The idea is that when I open my inbox in the morning, there are already draft replies waiting for me. I just go through them, make a quick change here and there if needed, and hit send. That could turn my 30-minute email session into a 5-minute one.</p><p><strong>Step 3: Make OpenClaw actually good at this.</strong> For the drafts to be useful, Eric needs to understand my apps and match my tone. So we need to feed him all my existing email templates and build some kind of wiki for my apps that describes every screen, every feature, every common question. The more context he has, the better his drafts will be. I want someone to read his response and think &#8220;yeah, that sounds exactly like Sebastian would write.&#8221;</p><p>I&#8217;m really excited about this one. Still need to figure out some of the technical details, but I&#8217;m sure Eric will help me out with that too. That&#8217;s the beauty of having an AI assistant, you can literally ask it to help you set itself up. We&#8217;re living in the future.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #88]]></title><description><![CDATA[I Went to Sleep and Woke Up to 8,000 Lines of Code]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-88</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-88</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 01 Feb 2026 09:38:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z4xB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week was a bit different. I spent most of it tinkering with the latest hype topic: <a href="http://openclaw.ai">OpenClaw</a> (a personal AI assistant), developing my apps in the meantime, and honestly... completely changing how I think about AI and work. If you&#8217;ve been reading my newsletter for a while, you know I&#8217;ve been pretty careful about the whole AI hype. I&#8217;m not someone who jumps on every new trend just because Twitter is going crazy about it. But this week something clicked for me. I&#8217;m not just using AI as a coding helper anymore. I&#8217;m starting to see it as a complete productivity game changer. Let me tell you why. But first, let&#8217;s talk about some REAL work I did on <a href="https://tryfocuskit.com">FocusKit</a>!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128736;&#65039; FocusKit 1.2.1: Small Details That Actually Matter</strong></h4><p>I made good progress on FocusKit 1.2.1 this week. This update is all about polish. You know, those small UX things that users don&#8217;t really notice consciously, but they definitely feel the difference when they use the app.</p><p>The main thing I added was an active session indicator in the History tab. Here&#8217;s the problem I was trying to solve: When you start a focus session and then go to the History tab to check your timeline, it looks completely empty. That&#8217;s because the current session isn&#8217;t finished yet, so there&#8217;s nothing to show. People were confused by this. I got a few support emails from users who thought the app wasn&#8217;t tracking their sessions properly. Not a great experience.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;3380dc30-9940-4585-b362-9ce820e92514&quot;,&quot;duration&quot;:null}"></div><p>So now when you&#8217;re in an active session, it shows up in the history with a nice pulsating animation. You can see it right there, doing its thing, tracking your focus time. Pretty simple fix, but it makes the app feel way more alive and responsive. Sometimes it&#8217;s really the small stuff that counts.</p><p>I also tried to add a feature where you could long-press the toolbar date picker to jump back to today. Seemed like a really good idea. You&#8217;re looking at last week&#8217;s history, and with one long-press you&#8217;re back to today. Simple, right? Turns out it&#8217;s not possible with SwiftUI right now. At least not in a clean way. Getting a date picker into the toolbar was already a pain with SwiftUI. Adding a long-press context menu on top of that? The APIs just don&#8217;t play nice together. I spent about an hour trying different approaches before I accepted defeat. Sometimes you just have to let features go and move on. Maybe I&#8217;ll find a workaround later. For now, it stays on the &#8220;nice to have&#8221; list.</p><h4><strong>&#129302; Building a Productivity System (With AI Help)</strong></h4><p>Okay, here&#8217;s the bigger story this week. I built a complete Second Brain web app from scratch. And when I say &#8220;I built&#8221;, I mean I mostly directed an AI to build it for me. Let me explain.</p><p>I&#8217;ve been using countless tools for my personal knowledge management for years, but I always wanted something simpler that completely suits my personal needs. Something that just works with plain markdown files, syncs with GitHub, and doesn&#8217;t require me to be online all the time. Here&#8217;s what I wanted:</p><ul><li><p>Markdown-based notes organized in PARA folders (Projects, Areas, Resources, Archive)</p></li><li><p>A file browser with a nice tree view on the side</p></li><li><p>A clean editor for writing that doesn&#8217;t get in the way</p></li><li><p>Task checkboxes that you can actually click to check them off</p></li><li><p>Everything auto-saves so I never lose work</p></li><li><p>Everything auto-commits to GitHub so I have version history</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y1_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y1_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 424w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 848w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y1_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2738267,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/186294604?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y1_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 424w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 848w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!Y1_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783f2664-f51f-4cdf-96dd-3d9550cfe0c5_3840x2880.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I know, it sounds like Obsidian, but this should just be the base. I want to extend it with lots of diferrent custom solutions for time tracking, todo management, ...</p><p>Now here&#8217;s where it gets interesting. On Wednesday night, before going to bed, I told my AI assistant: &#8220;Build me a second brain app with these features.&#8221; I described what I wanted, explained why I needed each feature, and gave some examples of how I would use it. Then I went to sleep.</p><p>When I woke up on Wednesday morning, there was a working React app waiting for me. 33 files. Almost 8,000 lines of code. Most of the features I asked for were already there and working. The AI had built it, tested it, pushed it to GitHub, and sent me a message when it was done. I didn&#8217;t watch it build the app. I didn&#8217;t sit there and code with it. I literally just told it what I wanted, went to bed, and woke up to a functioning application.</p><p>I know this sounds like I&#8217;m exaggerating, but I&#8217;m not. This is what I mean when I say things are changing fast. It&#8217;s not about coding WITH AI anymore. It&#8217;s more like managing AI developers. I describe what I want (not HOW to build it, just WHAT I need and WHY it matters). My AI assistant spawns a sub-agent that goes off and builds it. The sub-agent messages me when it&#8217;s done. Then I review it, test it, and either approve it or give feedback for the next iteration.</p><p>The crazy part? The sub-agents didn&#8217;t just build what I asked for. They also fixed bugs I didn&#8217;t even mention, optimized some performance issues, and added little UX improvements I hadn&#8217;t thought about. Then they wrote documentation explaining what they changed and why. It&#8217;s like having a team of developers who actually read your mind and anticipate what you need.</p><p>Now I can talk to my bot on Telegram, and it automatically adds or removes tasks from my dashboard. I can ask it to create a new project note, and it does. I can ask it to show me all tasks due this week, and it pulls them from my markdown files. All of this built in basically one night while I was sleeping.</p><h4><strong>&#128173; What This Means For Indie Developers</strong></h4><p>I&#8217;ve been thinking a lot about what this means for people like us. The evolution has been wild to watch:</p><p>- Three years ago, we were all learning to code from scratch</p><p>- Two years ago, we started using AI coding assistants like Copilot</p><p>- Last year, we were learning how to write better prompts and have conversations with AI</p><p>- Now? We&#8217;re learning how to delegate entire projects to AI agents</p><p>Don&#8217;t get me wrong, you still need to know how to code. You need to understand what the AI is doing, what&#8217;s technically possible, and where problems might show up. You can&#8217;t just blindly trust everything an AI produces. But the day-to-day work is different now. It&#8217;s less about typing code and more about thinking clearly about problems and solutions.</p><p>For indie developers, this is absolutely huge. We never have enough time. There&#8217;s always more stuff we want to build than we can actually ship. Being able to delegate the building part to AI, and actually trust that it will do a decent job, means we can move way faster than before. We can spend more time on the things that actually matter: figuring out what users really need, making the product better, talking to customers, and growing the business. You know, the stuff that actually makes money.</p><p>I&#8217;ll be honest though, I also feel a bit conflicted about all of this. I feel really bad for junior programmers searching for a job right now. The industry is changing so fast, and the skills that got you hired five years ago might not be enough anymore. The future seems to belong to those who can see the problem clearly, design the right solution, AND orchestrate AI agents to build it. Pure coding skills without the bigger picture thinking? That&#8217;s becoming less valuable every day.</p><p>I don&#8217;t know exactly where this is all going, but I know I want to be part of it. And I want to share what I learn with you along the way.</p><h4><strong>&#127897;&#65039; Launched Podcast</strong></h4><p>On a completely different note: At the end of last year, I had the honor to be a guest on one of my favorite podcasts! Charlie Chapman invited me to the &#8220;Launched&#8221; podcast, and the episode is finally out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z4xB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z4xB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z4xB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1077967,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/186294604?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z4xB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4xB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f0ffb6-b9e1-4976-a187-b292ce6e5cc0_2400x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We talked about a lot of things that I think you&#8217;ll find interesting: the power of building in public (and how it helped me grow HabitKit), how persistence pays off when growth feels painfully slow, and why focusing on what users actually need (instead of what you think is cool) can lead to unexpected success in indie app development.</p><p><a href="https://launchedfm.com/episode/84-habitkit-sebastian-rohl">If you want to hear me ramble for about an hour about my indie journey, check out the latest episode</a>. And let me know what you think! I always love hearing from you guys.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #87]]></title><description><![CDATA[First $100 MRR with FocusKit and thoughts on AI coding]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-87</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-87</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 25 Jan 2026 09:25:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pKms!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to another issue of my weekly indie log. Hope you had a good week! This time I want to talk about the reality of post-peak revenue, celebrate some milestones with <a href="https://tryfocuskit.com">FocusKit</a>, and share my thoughts on how AI is changing the way I work as an indie developer. Let&#8217;s get into it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>&#128200; Business Updates</strong></h4><p>Revenue has been going down steadily since that crazy peak in the first week of January. And you know what? That&#8217;s completely fine. This is the normal behavior for <a href="https://habitkit.app">HabitKit</a>, and I&#8217;ve been experiencing this cycle for the past 3 years now. At this point, I kind of expect it.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KdUd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KdUd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 424w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 848w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 1272w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KdUd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png" width="862" height="158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:158,&quot;width&quot;:862,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!KdUd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 424w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 848w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 1272w, https://substackcdn.com/image/fetch/$s_!KdUd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78661394-9f43-4662-9da5-e1beec8cbd1c_862x158.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>In business, you always have &#8220;summer&#8221; times and &#8220;winter&#8221; times. Summer is when the revenue and downloads are high, everyone is excited, and it feels like you&#8217;re on top of the world. Winter is when the numbers go down, churn increases, and things feel a bit slower. As a business owner, you have to accept this cycle and not panic when winter comes. The key is to build a solid foundation during the good times so you&#8217;re prepared for the slower periods.</p><p>I&#8217;ve learned to be content when things are &#8220;down&#8221;, especially when &#8220;down&#8221; still means pretty good numbers compared to where I started. Instead of stressing about the decline, I focus on what I can control: making my apps better and preparing for the next peak. The numbers are still great, so honestly, no reason to complain on my side. I&#8217;m happy about the peaks and I&#8217;ve made peace with the valleys.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pKms!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pKms!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!pKms!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!pKms!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!pKms!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pKms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:467279,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/185524393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pKms!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!pKms!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!pKms!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!pKms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b3416e9-b47a-41f7-ace6-6be256881028_2400x1352.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now let&#8217;s talk about FocusKit, because this is where it gets exciting. We reached a new milestone this week that I&#8217;m really proud of: Over $100 in Monthly Recurring Revenue (MRR) and over $1,000 in total revenue over the past 28 days! For a new app that I launched just two months ago, this feels like real progress. It&#8217;s not life-changing money yet, but it shows that the app has potential and that people are willing to pay for it.</p><p>What&#8217;s interesting is that FocusKit isn&#8217;t ranking for any relevant keywords on the App Store right now. So where is all this growth coming from? Most of it is fueled by cross-promotion through the settings screen of HabitKit. When HabitKit users scroll through the settings, they see a little banner for FocusKit. This has been working really well. The rest comes from paid ads on Reddit and App Store Search ads. I&#8217;m curious to see what happens when (or if) the app starts ranking organically. That will be a real game changer!</p><h4><strong>&#128736;&#65039; Development Corner</strong></h4><p>This week I worked heavily on FocusKit 1.2, and I&#8217;m really excited about this update. The main focus is all about &#8220;routines&#8221;, which is basically the combination of how many sessions you want to do, how long each session should be, and how the break logic works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UbIE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UbIE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UbIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:924127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/185524393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UbIE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!UbIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0d7a66-d25a-495d-91cc-f5cdf2adb3b9_2400x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With this update, users can now create, edit, and switch between custom routines. You can adjust the durations for focus time and breaks, set the number of focus sessions you want to complete, and even set up advanced long break logic. For example, you could say &#8220;after every second focus sessions, give me a long break instead of the usual 5-minute one&#8221;. This makes FocusKit so much more flexible for different types of work and different people.</p><p>I also added a template library with pre-defined routines. This is super helpful for new users who don&#8217;t want to figure out all the settings from scratch. They can just pick a template that sounds good and start focusing right away. The templates include things like the classic Pomodoro method, deep work sessions, and quick sprints for when you just need to get something done fast.</p><p>Another small but nice addition: I added a Home Screen Quick Action so users can send feedback directly from the home screen. Just long-press the app icon and you can share your thoughts or report any issues. I really believe that making it easy for users to give feedback is super important. The easier it is, the more feedback you get, and the better you can make your app. It&#8217;s also a great way to catch people who want to uninstall the app.</p><p>Lastly, I revamped the structure of the Timeline tab to improve navigation and the overall user experience. The old layout was okay, but it felt a bit cluttered. Now everything is cleaner and easier to find and looks much more like a REAL timeline. This definitely won&#8217;t be the last change I&#8217;m making to this view.</p><h4><strong>&#128161; Indie Insights</strong></h4><p>I want to talk about something that has been on my mind a lot lately: AI and how it&#8217;s changing the way I work as an indie developer.</p><p>In the past couple of weeks, I haven&#8217;t written many lines of code myself. Instead, I&#8217;m mostly directing Cursor and Claude to write the code for me. I describe what I want, review what it produces, make adjustments, and keep iterating until it&#8217;s right. It&#8217;s like having a really fast junior developer who never gets tired and can try a hundred different approaches in the time it would take me to write one.</p><p>When I started my indie journey back in 2022, I never would have dreamed that something like this would be possible. The progress has been absolutely crazy. Now AI can build entire features, understand complex codebases, and even suggest improvements I wouldn&#8217;t have thought of myself. It&#8217;s wild to think about how much things have changed in just a few years.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Of course, you still need to know what you&#8217;re doing. You need to understand the code the AI writes, catch the mistakes it makes (and it does make mistakes), and guide it in the right direction. AI is a tool, not a replacement for thinking. But as a tool, it&#8217;s incredibly powerful. It saves me so much time on the boring stuff that I can focus more on the creative decisions and the user experience.</p><p>I&#8217;m really curious to see what the future brings. If AI keeps improving at this pace, being a solo developer is going to become even more powerful. Who knows what will be possible in another two or three years? It&#8217;s an exciting time to be building apps, that&#8217;s for sure.</p>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #86]]></title><description><![CDATA[$100K in 28 Days and the Habits That Got Me Here]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-86</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-86</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 18 Jan 2026 08:58:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0BB_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;re back in the saddle for 2026! After taking a short break over the holidays, I&#8217;m feeling refreshed and ready to go. And what a start to the year it has been - we crossed $100K in revenue over the past 28 days, which is still hard to believe. On the personal side, my habit consistency has been really solid lately and I&#8217;m super focused on making my apps better. Can&#8217;t complain at all, life is good!</p><p>Welcome back to another issue of my weekly indie log. If you&#8217;re new here, this is where I share what I&#8217;m working on and what&#8217;s happening with my indie app business. Let&#8217;s get into it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0BB_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0BB_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0BB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:617945,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/184750763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0BB_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!0BB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcba9d06b-1da4-4170-8c4c-e7c5040525b2_2400x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>$100K in 28 Days</strong></h4><p>Same as last year, the New Year&#8217;s season is in full swing. Or maybe I should call it the &#8220;New Year&#8217;s hype&#8221; because that&#8217;s really what it is. Every January, people all over the world are looking for ways to improve their lives and build better habits. And of course, they&#8217;re searching for apps that can help them with that. This is where <a href="https://habitkit.app">HabitKit</a> comes in. During this time of the year, my downloads and revenue numbers go through the roof compared to the rest of the year. It&#8217;s crazy how much of a difference these few weeks make.</p><p>When I checked my RevenueCat dashboard this week, I saw that magical number again: Over $100K total revenue in the past 28 days. I still can&#8217;t really wrap my head around this. For a solo indie developer like me, this is completely mindblowing. I&#8217;m super grateful for everyone who decided to make a positive change in their life and chose my app as a tool to help them along the way. It really means a lot to me.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>FocusKit Development Progress</strong></h4><p>This week I made a lot of progress on my new app, <a href="https://tryfocuskit.com">FocusKit</a>. If you haven&#8217;t checked it out already, make sure to give it a download. And if you like it, a positive review on the App Store would really help me out a lot. Every review counts when you&#8217;re an indie developer trying to get noticed.</p><p>I finished all the remaining work for version 1.1.1. The main focus of this update is changes to the Notes section. I completely revamped the look and feel of the notes modal to make it cleaner and easier to use. But I also added a cool little feature that I&#8217;m really excited about: Users can now choose from the last couple of notes they added to past sessions and quickly add them to the current session with just one tap.</p><p>I personally was really wanting this feature for a long time. Here&#8217;s why: When I use FocusKit myself, I usually type in things like &#8220;FocusKit Development - Feature X&#8221; as a note for my session. And most of the time I need multiple focus sessions to finish a feature, so I end up typing the same thing over and over again. Now I don&#8217;t have to do that anymore. It&#8217;s a small thing, but it makes the experience so much better. I decided to release this update next Monday, so watch out for it on the App Store!</p><p>After I wrapped up the 1.1.1 work, I switched my focus to the big feature I&#8217;ve been planning for version 1.2. This is actually something I wanted to include in the very first version of the app, but I had to cut it because I didn&#8217;t have enough time before launch. Now I&#8217;m fully committed to bringing it to the app.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0dAH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0dAH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0dAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:924127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/184750763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0dAH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!0dAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66de7de2-8562-407e-abd8-c880d49556e8_2400x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With version 1.2, users will be able to create fully customized &#8220;Routines&#8221;. A routine is basically the structure of how you want to organize your focus sessions and breaks. For each routine you create, you can set custom durations for focus sessions, short breaks, and long breaks. You can also define how many focus sessions you want to do in total and how often you want to take a long break. This will make FocusKit so much more flexible for different types of users and workflows.</p><p>I also added a &#8220;template library&#8221; that shows up when users create a new routine. Instead of starting from scratch, they can pick one of these templates as a starting point and adjust it to their needs. Here are the templates I included:</p><ul><li><p><strong>Classic Pomodoro</strong> (25 min focus, 4 sessions): The original technique by Francesco Cirillo. Short intervals prevent mental fatigue while frequent breaks help consolidate information and maintain sustained focus throughout the day.</p></li><li><p><strong>Deep Work</strong> (50 min focus, 2 sessions): Based on Cal Newport&#8217;s research. Longer focus periods allow for deep, undistracted work on cognitively demanding tasks. Ideal for complex problem-solving, coding, or creative work.</p></li><li><p><strong>Flow State</strong> (45 min focus, 3 sessions): Optimized for achieving flow state. The 45-minute duration aligns with research showing this is the sweet spot for sustained concentration before attention naturally begins to wane.</p></li><li><p><strong>Quick Sprint</strong> (15 min focus, 4 sessions): Perfect for building focus habits or overcoming procrastination. Short bursts reduce the psychological barrier to starting and help build momentum for larger tasks.</p></li></ul><h4><strong>My Key Habits I&#8217;m Tracking with HabitKit</strong></h4><p>I want to talk about the main habits I&#8217;m tracking with <a href="https://habitkit.app">HabitKit</a> as an indie hacker. These habits help me live a better and healthier life, and I truly believe that this is what makes me more productive in my app business. When you feel good about yourself and your life, you have so much more energy to work on the things that matter. It&#8217;s all connected.</p><p>Before I go into the specific habits, I want to share one thing that really helps me stay consistent: The 2 Minute Rule. We all have those stressful days that are full of unexpected obligations. Things come up, meetings run long, life happens. In the past, these days would completely derail my habit streaks and make me feel bad about myself. To prevent this from happening, I introduced the 2 Minute Rule for myself. The rule is simple: I get to check off a habit in HabitKit even if I &#8220;only&#8221; do it for 2 minutes. The goal is to have no zero days. Even 2 minutes is better than nothing, and it keeps the streak alive.</p><p>Okay, let me go through the main habits I&#8217;m tracking right now.</p><p>The first one I call &#8220;Deep Life&#8221;. This habit is all about staying away from shallow media that eats up your time without giving you anything back. I made the rule for myself to completely avoid Instagram, Reddit and YouTube. These platforms have been the worst time killers in my personal life. I used to spend hours scrolling through feeds without even realizing it. Since I stopped using them, I have so much more focus during the day and I honestly feel a lot happier. It&#8217;s crazy how much these apps can affect your mental state without you even noticing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hvm2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvm2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png" width="1456" height="861" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:861,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:792063,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/184750763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvm2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!hvm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e5c588-0362-47ed-a5bf-f5d876ffb06f_2020x1195.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The second habit is &#8220;Fitness&#8221;, and this is probably the most important one on the list. You know what they say: Healthy body, healthy mind. I&#8217;ve been moving my body almost every day for the past three years now, and I can&#8217;t imagine going back to my old lifestyle. The benefits are just too good. Working out makes me feel great, keeps me healthy, and gives me the energy I need to tackle whatever problem comes up with my app business. When you feel strong physically, you also feel more confident in other areas of your life.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aD-N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aD-N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aD-N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png" width="1456" height="861" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:861,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:873550,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/184750763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aD-N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!aD-N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F437366c5-b76b-42d7-9582-e95041f6bf49_2020x1195.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The third habit is &#8220;Daily Walk&#8221;. Going for a walk outside might sound like a small thing, but it&#8217;s been one of the most impactful habits for me. There&#8217;s something about being outside and just walking that calms your mind like nothing else. It helps me so much to reduce stress, especially after a long day of coding. It&#8217;s also a great way to bond with your partner when you do it together. My girlfriend and I try to go for a walk every evening, and it&#8217;s become one of my favorite parts of the day. Definitely a life-changing habit for me.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N69_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N69_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!N69_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!N69_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!N69_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N69_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png" width="1456" height="861" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:861,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:832662,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/184750763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N69_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 424w, https://substackcdn.com/image/fetch/$s_!N69_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 848w, https://substackcdn.com/image/fetch/$s_!N69_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 1272w, https://substackcdn.com/image/fetch/$s_!N69_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe92b1afe-0651-49dc-bd4c-fe6404518122_2020x1195.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The fourth habit is &#8220;Post On X&#8221;. Building my indie app business in public has been a huge part of my journey. It started with X (or Twitter, as it was called back then), and over the years I added some other platforms too. But the core idea is the same: I try to write a post every day about what I&#8217;m working on. It doesn&#8217;t matter if it&#8217;s boring or if nobody reads it. The point is to stay accountable to myself and to document my progress. It helps me move the needle every single day, even if it&#8217;s just a little bit. And sometimes the posts actually help other indie developers who are on a similar journey, which is a nice bonus.</p><p>Maybe you want to incorporate some of these habits into your own daily routine as well. They&#8217;ve helped me a lot over the years and I believe they played a big part in whatever success I&#8217;ve had so far. Give them a try and see what works for you!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building An Indie App Business #85]]></title><description><![CDATA[New Year's Hype and Grand Goals]]></description><link>https://sebastianroehl.substack.com/p/building-an-indie-app-business-85</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/building-an-indie-app-business-85</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 11 Jan 2026 07:50:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tU_7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to the very first issue of my weekly indie log in 2026! I&#8217;m really determined to write a new issue (almost) every week and keep you informed about everything happening with my app business. One thing I want to do more this year: Make this blog as useful as possible and try to share lessons from my daily work that you can actually apply to your own projects. Less random updates, more stuff you can learn from. Let&#8217;s see how that goes!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>New Year&#8217;s Hype</strong></h4><p>If you missed it: <a href="https://sebastianroehl.substack.com/p/2025-the-year-that-changed-everything">I published a big &#8220;Year In Review 2025&#8221; article on Dec 31st</a>, celebrating every cool thing that happened to me and my business last year. I shared some crazy numbers ($600k in total revenue!), told you about the whole launch experience of <a href="https://tryfocuskit.com">FocusKit</a>, and summarized all my public appearances in podcasts and videos. Make sure to check it out if you haven&#8217;t read it yet.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;e872ee36-aa56-46b3-ad42-e619f94f41ab&quot;,&quot;caption&quot;:&quot;2025 was my first full year (12 consecutive months) of indie hacking. No backup plan, no safety net, just me and my apps. And honestly? The numbers my business reached this year completely blew my mind.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;2025 - The Year That Changed Everything&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110152028,&quot;name&quot;:&quot;Sebastian R&#246;hl&quot;,&quot;bio&quot;:&quot;I'm an independent app developer from Germany trying to build a profitable app business on my own. I write about app development, marketing, and productivity.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0865fe31-24b4-44db-b676-a68e6bd69e3b_500x500.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-31T12:12:22.141Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3a965fa-75c1-420e-ad43-65402a7832cc_1200x644.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://sebastianroehl.substack.com/p/2025-the-year-that-changed-everything&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:181776302,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:15,&quot;comment_count&quot;:8,&quot;publication_id&quot;:3087319,&quot;publication_name&quot;:&quot;Building A Profitable App Business&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Gwyv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a8cd192-e1da-49ff-977e-1e644547e996_500x500.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Honestly, writing these year-in-review posts has become one of my favorite things to do. It&#8217;s such a great form of reflection to look back at the end of the year and celebrate your personal milestones. I would recommend this to everyone I know. It doesn&#8217;t have to be public like mine, even a private document for yourself works great. This is kind of the final test for whether you reached your goals or not. And if you didn&#8217;t? That&#8217;s okay too. It&#8217;s a great way to find some missing spots in your life and figure out what you actually want to focus on. It helps you improve your life, both business AND personal stuff.</p><h4><strong>HabitKit Is Going Crazy</strong></h4><p>As you probably know, my most important app is <a href="https://habitkit.app">HabitKit</a> - a habit tracking app for iOS and Android. And let me tell you: End of December and the start of January are absolutely crazy times for habit tracking apps. Like, really crazy. Everybody is making New Year&#8217;s resolutions and trying to improve their lives. They want to exercise more, eat healthier, read more books, drink less alcohol. And to achieve all of this, they are looking for tools and apps to help them stay on track.</p><p>Over the past three years, <a href="https://habitkit.app">HabitKit</a> has reached a really solid position on the App Store and Google Play in terms of ranking for relevant keywords (&#8221;habit tracker&#8221; for example). This leads to exploding download and revenue numbers every year around this time. It&#8217;s like Christmas all over again, just for indie hackers. I couldn&#8217;t be happier with the results!</p><p>Let me give you some actual numbers because I know you like those: <a href="https://habitkit.app">HabitKit</a> made a crazy jump in terms of MRR alone. We went from $28k to $31.5k in just 10 days. Ten days! That&#8217;s $3,500 in new monthly recurring revenue added in less than two weeks. That&#8217;s huge progress for me and I really hope that many of the people who bought the app will stay on track to build great habits and change their lives for the better. That&#8217;s the whole point of the app after all.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tU_7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tU_7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tU_7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg" width="1200" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!tU_7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tU_7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F781f4c1e-1abc-4bbd-a3a0-37ae5a00ce28_1200x680.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>My new app <a href="https://tryfocuskit.com">FocusKit</a> also grew nicely: from $50 to $80 MRR and made almost $800 in the past 28 days. Okay, I know these numbers look tiny compared to <a href="https://habitkit.app">HabitKit</a>, but remember: <a href="https://tryfocuskit.com">FocusKit</a> is still super young. It launched less than two months ago. Every bit of growth counts and I&#8217;m really happy to see people finding value in it. I hope the app keeps delivering results like these.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ha6l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ha6l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ha6l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg" width="1199" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:1199,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ha6l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ha6l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f25d599-244f-425d-947f-7d2543668e17_1199x489.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Another great thing happened in 2026 already: <a href="https://habitkit.app">HabitKit</a> gained another position on the US App Store for the keyword &#8220;habit tracker&#8221; and is now sitting at #2. I really can&#8217;t believe this. It&#8217;s crazy to think that most people who search for something as general as &#8220;habit tracker&#8221; almost instantly see my app on the App Store. Right there, second position. Super happy about it. If you want to learn more about my ASO (App Store Optimization) strategy, <a href="https://sebastianroehl.substack.com/p/my-app-store-optimization-strategy">check out this article I&#8217;ve written in the past</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qx1L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qx1L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 424w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 848w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 1272w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qx1L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png" width="1200" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Qx1L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 424w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 848w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 1272w, https://substackcdn.com/image/fetch/$s_!Qx1L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dc8dfc6-3cdf-4eae-95d4-64a8d2e3c823_1200x767.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>New Goals (But Not Too Grand)</strong></h4><p>This week was all about easing back into my work habits after the holiday break. You know how it is: you take some time off and suddenly it feels impossible to sit down and actually work again. I started doing regular Pomodoro sessions with <a href="https://tryfocuskit.com">FocusKit</a> already and it helped me a lot with maintaining focus again. Always a great feeling when my own app is helping me improve my own life.</p><p>I also sat down and really thought about my goals for the year. And I gained a valuable insight: Don&#8217;t think about GRAND GOALS. </p><p>Let me explain what I mean. At the end of last year, I was already thinking about revamping my existing apps completely. New architecture! New design! Everything better! Or maybe adding new apps to my portfolio? A whole new app that does something completely different! Sounds exciting, right?</p><p>But here&#8217;s the thing: I actually want to dedicate the next few months to stabilizing my already existing apps. I have some cool updates and features planned for <a href="https://tryfocuskit.com">FocusKit</a> and I will make sure to follow through on my plans. Small and consistent updates are so much better than huge rebuilds that never happen because you lose motivation in the middle of the project. We&#8217;ve all been there. You start with so much energy and then... nothing. The project sits there, half-finished, making you feel guilty every time you think about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>You always think that once you reached the grand goal (&#8221;When I finally rewrote the architecture of <a href="https://habitkit.app">HabitKit</a>...&#8221;) everything will be fun and good. Like there&#8217;s this magical finish line and once you cross it, work becomes easy and enjoyable forever. But the hard truth is: It&#8217;s always hard to continue work on existing projects. The grass always looks greener on the other side. A new project sounds more exciting than fixing bugs in your current one. But the boring work is often the most important work.</p><p>So my plan for the next few months is simple: Keep shipping small updates. Keep improving what already works. And resist the temptation to start something completely new just because it sounds more fun. Let&#8217;s see if I can stick to this plan. I&#8217;ll keep you updated!</p>]]></content:encoded></item><item><title><![CDATA[2025 - The Year That Changed Everything]]></title><description><![CDATA[Made over $600k in total revenue with HabitKit, learned SwiftUI, launched a brand new app, and finally understood what being truly independent means.]]></description><link>https://sebastianroehl.substack.com/p/2025-the-year-that-changed-everything</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/2025-the-year-that-changed-everything</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Wed, 31 Dec 2025 12:12:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c3a965fa-75c1-420e-ad43-65402a7832cc_1200x644.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DkMb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DkMb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DkMb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7812545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DkMb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!DkMb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F469600f5-789b-44ea-bcac-eb73b7ec1186_5000x2000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>2025 was my first full year (12 consecutive months) of indie hacking. No backup plan, no safety net, just me and my apps. And honestly? The numbers my business reached this year completely blew my mind.</p><p>I have to pinch myself sometimes. I can work on whatever I want, wherever I want, however I want. No meetings about meetings. No performance reviews. No asking for permission to take a day off. Just building cool stuff and hoping people find it useful.</p><p>I know it sounds cheesy, but I am literally living the Indie Hacker Dream. And I never want to wake up. I have the best job in the world.</p><blockquote><p>Do you want to improve your life? Check out my apps <a href="https://habitkit.app">HabitKit</a> and <a href="https://tryfocuskit.com">FocusKit</a>!</p></blockquote><h3><strong>The Year in Numbers</strong></h3><p>If you came for the numbers, this is the section you were looking for! Keep it mind that these numbers exclude today (Dec 31st).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O7MW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O7MW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O7MW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:808781,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O7MW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!O7MW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64895b99-0407-4a72-837a-6f7678dacb8f_2400x1352.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>&#128241; Apps</strong></h4><ul><li><p><strong><a href="https://habitkit.app">HabitKit</a></strong></p><ul><li><p>Downloads</p><ul><li><p>App Store: 272,000 Downloads</p></li><li><p>Google Play: 290,000 Downloads</p></li></ul></li><li><p>Ratings</p><ul><li><p>App Store: 4.8 &#11088; / 6,630 Ratings</p></li><li><p>Google Play: 4.6 &#11088; / 9,443 Ratings </p></li></ul></li></ul></li><li><p><strong><a href="https://tryfocuskit.com">FocusKit</a> (App Store since Nov 2025)</strong></p><ul><li><p>Downloads: 1,600 Downloads</p></li><li><p>Ratings: 4.7 &#11088; / 40 Ratings </p></li></ul></li></ul><h4><strong>&#128176; Business</strong></h4><ul><li><p><strong>Total Revenue:</strong> $602,000</p></li><li><p><strong>MRR:</strong> $28,000</p></li><li><p><strong>Active Subscribers</strong>: 25,100</p></li></ul><h4><strong>&#128227; Building in Public</strong></h4><ul><li><p><strong>Substack Newsletter:</strong> 1,225 Subscribers (36 articles written)</p></li><li><p><strong>X/Twitter:</strong> 20,000 Followers (countless posts)</p></li><li><p><strong>LinkedIn:</strong> 6,000 Followers (countless posts)</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>The Highlights</strong></h2><h4><strong>January Was Absolutely Crazy</strong></h4><p>The year started with a bang. A combination of the traditional New Year&#8217;s resolution hype for habit tracking apps AND <a href="https://www.youtube.com/watch?v=vC9N7PgIvEM">HabitKit being featured in a video by &#8220;The Studio&#8221; called &#8220;Apps You&#8217;ll ACTUALLY Use&#8221;</a> created the perfect storm.</p><p>January alone brought in $112k in revenue.</p><p>Let that sink in for a moment. I made more in one single month than I earned in my entire year at my old 9-to-5 job. I remember staring at the numbers thinking &#8220;this can&#8217;t be right.&#8221; But it was.</p><h4><strong>Finally Cracking the US App Store</strong></h4><p>After years of trying, 2025 was the year <a href="https://habitkit.app">HabitKit</a> finally broke into the top 5 for the keyword &#8220;habit tracker&#8221; in the US App Store. This is THE market that matters, and ranking there changed everything.</p><p>The impact was massive. My monthly revenue stabilized above $40k over the year, which is still hard to believe when I type it out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oZKr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oZKr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 424w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 848w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oZKr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png" width="1456" height="936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:936,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:283519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oZKr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 424w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 848w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!oZKr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53607a3a-e9b7-4886-b020-4c4eab35327d_2334x1500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>The Starter Story Interview</strong></h4><p>I had the honor of being a guest on Pat Walls&#8217; Starter Story show. If you haven&#8217;t seen it, <a href="https://www.youtube.com/watch?v=gpn1jEoWT4A">here&#8217;s the link.</a> After the video was released, <a href="https://habitkit.app">HabitKit</a> saw a nice boost in downloads, which improved my rankings even more. Turns out, talking about your journey publicly actually helps and leads to success!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LzPR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LzPR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 424w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 848w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LzPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2063997,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LzPR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 424w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 848w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!LzPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d854274-3bd8-4e25-bafb-630237ff5ca9_2394x1396.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>About Those Copycats...</strong></h4><p>Last year I stopped sharing revenue numbers because I was scared of copycats. The numbers were getting bigger and I thought &#8220;if I shut up about it, maybe they&#8217;ll leave me alone.&#8221;</p><p>Spoiler: They didn&#8217;t.</p><p>The copycats kept coming anyway. So for this article, I decided to be fully transparent again. If they&#8217;re going to copy me regardless, I might as well share the real numbers with the people who actually care about my journey and draw inspiration and motivation from it.</p><h4><strong>HabitKit Updates</strong></h4><p>The start of the year was... slow. Some personal stuff got in the way. But I caught myself around April/May and managed to ship some solid updates:</p><p><strong>Version 1.11 - Unlimited Tracking</strong></p><p>Removed the &#8220;completions per day&#8221; limit. Want to track 100 pages read? 45 minutes meditated? 17 glasses of water? Go for it. Habits are now as flexible as they should be.</p><p><strong>Version 1.12 - Emoji Support</strong></p><p>Finally! Users can now choose emojis instead of the classic FontAwesome icons. Plus a text-based search to actually find what you&#8217;re looking for. This was a long-requested feature and I&#8217;m happy it&#8217;s done.</p><p><strong>Version 1.13 - Fresh Habit Details</strong></p><p>A complete visual overhaul of the habit detail view. Integrated calendar, more information at a glance, much cleaner. Sometimes you need to step back and redesign things properly.</p><p><strong>Version 1.14 - Reminder Revamp</strong></p><p>Completely rebuilt the reminder system. Multiple reminders per habit, daily check-in reminders, the whole thing. Reminders are now actually useful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W3up!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W3up!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W3up!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W3up!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W3up!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W3up!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg" width="1200" height="676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:676,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W3up!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W3up!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W3up!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W3up!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e900b6a-08b7-49c1-843b-60c9e5e9d524_1200x676.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Building FocusKit: A New Chapter</strong></h4><p>Later that year, iOS 26 dropped.</p><p>And with it came Liquid Glass, Apple&#8217;s new design language. I was immediately hooked. Something about it made me want to learn proper native iOS development. So I did.</p><p>I spent the second half of the year learning SwiftUI from scratch and building a completely new app: <strong><a href="https://tryfocuskit.com">FocusKit</a></strong> - a focus timer that I actually wanted to use myself.</p><p>I launched it on November 29th, so it&#8217;s about one month old now. Early numbers look promising: 1,600 downloads, $874 total revenue, $52 MRR.</p><p>But more importantly: I use it every single day. There&#8217;s something special about building an app that solves your own problem. I&#8217;m excited to keep improving it throughout 2026. My goal: Building the PERFECT focus timer app.</p><p>Also, having all my eggs in the <a href="https://habitkit.app">HabitKit</a> basket is scary. Diversifying my income with <a href="https://tryfocuskit.com">FocusKit</a> or other apps just makes sense.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1YK8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1YK8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 424w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 848w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 1272w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1YK8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Features&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Features" title="Features" srcset="https://substackcdn.com/image/fetch/$s_!1YK8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 424w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 848w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 1272w, https://substackcdn.com/image/fetch/$s_!1YK8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3d8658b-3f44-4737-8306-14a69fc79b63_3840x2560.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Why SwiftUI?</strong></h4><p>I wrote a <a href="https://sebastianroehl.substack.com/p/from-flutter-to-swiftui-a-case-study">whole article about switching from Flutter to SwiftUI</a> if you&#8217;re curious. Short version: I&#8217;m really happy with the switch and will probably use SwiftUI for all future projects.</p><h4><strong>Living a Deeper Life</strong></h4><p>This year wasn&#8217;t just about apps. It was about how I work and live.</p><p>I got really into Cal Newport&#8217;s ideas about &#8220;deep work&#8221; and living a more intentional life. <a href="https://calnewport.com/">Check out his content if you&#8217;re interested in improving your life!</a></p><p>Here&#8217;s what changed:</p><ul><li><p> <strong>Less doomscrolling.</strong> I&#8217;m actively fighting the urge to endlessly scroll through algorithm-based timelines. It&#8217;s hard. I fail sometimes. But I&#8217;m getting better.</p></li><li><p><strong>No more YouTube binges.</strong> Instead of watching &#8220;just one more video&#8221; for three hours, I try to fill my free time with actual hobbies:  making music, drawing, reading books.</p></li><li><p><strong>Pomodoro is back.</strong> Thanks to FocusKit (yes, I&#8217;m using my own app every day), I brought back the Pomodoro technique. My concentration improved a lot. My productivity went up.</p></li></ul><p>I&#8217;m not perfect. Not even close. But I&#8217;m better than I was a year ago, and that&#8217;s what counts. 2026 will be even better.</p><h4><strong>The Not-So-Fun Parts</strong></h4><p>Not everything was sunshine and rainbows. Here are some moments that gave me minor heart attacks:</p><p><strong>Apple Removed HabitKit From the App Store</strong></p><p>In August, I woke up to discover that HabitKit was... gone. Completely removed from the iOS App Store.</p><p>The reason? I had updated my address in App Store Connect, and Apple couldn&#8217;t verify the new information. Instead of reverting to my old (already verified) address, or maybe sending me a warning, they just... removed the app. No deadline, no heads up, nothing.</p><p>It was back within 24 hours, but those were some stressful hours. <a href="https://sebastianroehl.substack.com/p/building-an-indie-app-business-72">Read the full story here</a>.</p><p><strong>Google Didn&#8217;t Like My Newsletter Links</strong></p><p>Google threatened to remove HabitKit from the Play Store because I was linking to my Substack newsletter from within the app. Their problem? If users clicked through enough links, they might eventually land on a paywall somewhere.</p><p>So I had to remove all external links from the Android version. Fun times. <a href="https://sebastianroehl.substack.com/p/building-an-indie-app-business-69">More details here</a>.</p><p>The moral of the story? Platform risk is real. Never forget that you&#8217;re building on someone else&#8217;s land.</p><h4><strong>My Secret Weapon: Cursor</strong></h4><p>I wrote a couple of articles about my productivity stack and the tools I use to run my indie business (<a href="https://sebastianroehl.substack.com/p/my-app-development-stack-tools-that">Part 1</a> | <a href="https://sebastianroehl.substack.com/p/my-app-development-stack-tools-that-bcd">Part 2</a>).</p><p>But if I had to pick the most important addition this year, it&#8217;s <strong>Cursor</strong>. This AI-powered code editor completely changed how I write code. It&#8217;s like having a really smart pair programmer who never gets tired or annoyed at my questions. Crazy productivity boost.</p><h4><strong>Podcasts &amp; Appearances</strong></h4><p>I also had the honor of appearing on two German-speaking podcasts to talk about my indie journey:</p><ul><li><p><strong>Engineering Kiosk Podcast:</strong> <a href="https://engineeringkiosk.dev/podcast/episode/202-indie-hacking-build-in-public-der-traum-vom-eigenen-produkt-mit-sebastian-r%C3%B6hl">Listen here</a></p></li><li><p><strong>Happy Bootstrapping:</strong> <a href="https://happy-bootstrapping.de/podcast/von-5-000-auf-30-000-dollar-mrr-sebastians-ruckkehr-mit-habitkit/">Listen here</a></p></li></ul><p>If you speak German, check them out. We talked about building in public, the ups and downs of indie hacking, and what it actually takes to make a living from your own apps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2nbV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2nbV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2nbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e60071ed-4945-4405-9705-756765f4cb11_2400x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2011945,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181776302?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2nbV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 424w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 848w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!2nbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe60071ed-4945-4405-9705-756765f4cb11_2400x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Books I Loved This Year</strong></h4><p>Reading was a big part of my year. Here are the standouts:</p><p>&#128218; <strong>&#8221;The 1% Rule&#8221;</strong> - One of the best productivity books I&#8217;ve ever read. Simple concepts, but they actually stick.</p><p>&#128218; <strong>&#8221;My Indie Book&#8221; by Tony Dinh</strong> - Super inspiring story from one of my favorite indie hackers. If you&#8217;re on this path, read it.</p><p>&#128218; <strong>&#8221;Stormlight Archives&#8221;</strong> - This fantasy series completely took over my reading time in the second half of the year. Brandon Sanderson knows how to write addicting books.</p><h4><strong>Looking Ahead to 2026</strong></h4><p>I don&#8217;t want to make big promises. But here&#8217;s what I&#8217;m thinking:</p><ul><li><p>Keep improving HabitKit (it&#8217;s my bread and butter)</p></li><li><p>Turn FocusKit into something special</p></li><li><p>Maybe start a third app? (I have ideas...)</p></li><li><p>Continue fighting the algorithm addiction and live a focused life</p></li><li><p>Read more books</p></li><li><p>Stay grateful</p></li></ul><p>2025 was incredible. Better than I could have imagined when I quit my job. And I&#8217;m going into 2026 with more confidence, more skills, and more appreciation for what I&#8217;ve built.</p><p>Thank you to everyone who downloaded my apps, subscribed to my newsletter, or just sent a nice message. You&#8217;re the reason I get to do this.</p><p>Here&#8217;s to another year of building cool stuff. &#128640;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[From Flutter to SwiftUI - A Case Study]]></title><description><![CDATA[Why I Made The Switch After Three Years As An Indie Developer]]></description><link>https://sebastianroehl.substack.com/p/from-flutter-to-swiftui-a-case-study</link><guid isPermaLink="false">https://sebastianroehl.substack.com/p/from-flutter-to-swiftui-a-case-study</guid><dc:creator><![CDATA[Sebastian Röhl]]></dc:creator><pubDate>Sun, 14 Dec 2025 13:20:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I_vH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I_vH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I_vH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I_vH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24464,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sebastianroehl.substack.com/i/181586416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I_vH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!I_vH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848cc4a7-99c8-4fb3-9867-cd7c4b52141f_1536x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When I decided to start my own business, I had only business ideas that were perfectly suited for the mobile space. I wanted to build habit trackers, workout trackers, stuff like that. The problem was that on my first real software engineering job after university I only dealt with web technologies like ASP.NET, Angular, and Azure. So I didn&#8217;t have much experience with mobile development at all.</p><p>Back at university, I was really into watching Udemy courses. One course that particularly stood out was &#8220;The Complete Flutter Development Bootcamp with Dart&#8221; by Angela Yu. It guided me through building several demo applications with Flutter and I really enjoyed it.</p><p>Coming from Angular and building SPAs on the web, Flutter instantly felt like home. The declarative approach to building UIs and the reactive state management were super similar to what I already knew. So when I decided to build my apps, I opted for Flutter. It felt like a no-brainer to have one codebase and deploy it to multiple platforms.</p><p>Since then I have built three different apps with Flutter and one in particular got really popular and was a huge success for me: HabitKit. But after a while cracks started to show, and for my new app FocusKit I decided to try SwiftUI and go all-in on the Apple ecosystem. In this article I try to explain my pain points with Flutter and what brought me to SwiftUI.</p><p><strong>Disclaimer:</strong> I don&#8217;t want to blame any technology, everything has its ups and downs. I am sure most of my issues with one technology could be solved. I am just describing my experiences as an indie developer with limited time, resources and skills. Experiences may heavily differ for enterprise development teams!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>The Flutter Honeymoon Phase</strong></h4><p>The first 12 months of my indie app journey were a breeze, at least from a technical point of view. I built my first two apps and HabitKit got popular pretty quickly.</p><p>I was really fast developing new things and shipped so many feature updates for my apps. I was able to reuse a lot of code for different projects, which was great. The UIs of my apps were super different though and I was only able to make my second app, HabitKit, look really good in my eyes. The first one was more of a learning project.</p><p>The best part was that I was able to ship all my apps to iOS and Android at the same time. HabitKit made decent revenue on Android as well, despite the well-known fact that users on iOS are much more willing to pay for apps than Android users. At one point, the revenue share across platforms for my app business was 50-50. That&#8217;s pretty amazing if you think about it.</p><p>I also really liked the vibrant ecosystem of packages and services. Adding Firebase libraries or picking a cool state management solution was super easy and it felt like everybody was having fun with Flutter. My app HabitKit uses over 50 different external packages, which shows how rich the ecosystem is. You can find a Flutter package for almost everything (but watch out, always think about long-term maintainability)!</p><h4><strong>The Cracks Start To Show</strong></h4><p>Performance problems started to show after HabitKit got more successful. I faced the famous &#8220;Flutter Shader Compilation Jank&#8221; and even the introduction of Flutter&#8217;s new rendering engine Impeller didn&#8217;t feel like it fixed all issues. I was constantly trying to optimize my code and the calculations that each component made. I needed to be super thoughtful about how and where I updated the state. Even today, the animations still jank on certain devices when a bottom modal sheet in HabitKit gets opened or when the user has a huge amount of habits. It&#8217;s frustrating because I never found a proper solution for this.</p><p>Then there is the native code problem. With Flutter you&#8217;re able to build the core app UIs with one codebase and deploy it to multiple platforms. This sounds great in theory, but it quickly falls apart when your users want native capabilities. Home Screen widgets, Lock Screen widgets, or Shortcuts can only be implemented with native code. This forces you to maintain two additional mini-codebases and learn Swift and Kotlin and all the native APIs as well. On the iOS side of things, developing the home screen widgets for HabitKit was actually entertaining and cool, I liked it. The Android part was a huge pain to me and I always cringe in horror whenever I have to touch that code again.</p><p>Another thing that hit me was what I call the &#8220;backend problem&#8221;. Once your app gets popular and you started with a local-only database that just lives on the user&#8217;s device, people will start asking for sync. They want to use the app on multiple devices and have their data sync across them. When you&#8217;re using Flutter you&#8217;re forced to build a backend or use third-party services like Firebase or PowerSync (which also produces hard-to-determine costs that can be scary for indie app developers). When you&#8217;re using SwiftUI and focus on the Apple ecosystem, you can just enable iCloud sync for your database and you&#8217;re done. It&#8217;s so much simpler. Adding a cross-device data synchronization retroactively is super hard and a huge barrier!</p><p>The revenue split between iOS and Android also shifted over time. I did a lot of price experimenting, but never found a good combination of products and prices that could match the performance I was able to have on iOS. Nowadays the revenue split between iOS and Android is 75-25 (and the gap is growing and growing). Don&#8217;t get me wrong, 25% of my revenue is still a lot of money, but after having introduced native features like home screen widgets the &#8220;one-codebase-multiple-platforms-for-free&#8221; argument doesn&#8217;t really work anymore. I had to maintain three codebases anyway.</p><p>On top of that there were some really weird disputes with the Google review team. They threatened to remove my app from Google Play because I was linking to my newsletter in the settings. This led to some additional frustration on my end about supporting Android at all.</p><h4><strong>An Honest Comparison</strong></h4><p>Let me compare both frameworks directly. I&#8217;ve been using both for a while now and have some thoughts on the differences.</p><p><strong>Development Tooling:</strong> Here Flutter has a real and huge advantage. Being able to use VSCode as your official development environment was the best decision the Flutter team could have made. Being tied to Xcode for SwiftUI is a huge turn-off and I sadly have to say that Xcode is the absolute worst IDE I ever had to work with. It&#8217;s slow, not very customizable, and the error messages are confusing. Luckily, I was able to find a weird solution that allows me to code in Cursor and only run the app in Xcode, but this doesn&#8217;t feel right and is still a disadvantage compared to Flutter.</p><p>Hot-reload on Flutter is also the best thing ever and it&#8217;s a bummer that Swift doesn&#8217;t support this. Before someone says it: using solutions like &#8220;Inject&#8221; feels more like a weird hack and doesn&#8217;t come close to the official Flutter experience. As someone coming from web development, not having hot-reload just sounds dumb in 2025. The SwiftUI Previews are super slow and never clicked for me. I always end up just running the app instead.</p><p><strong>Native Systems Integration:</strong> This is where SwiftUI really shines. Shortcuts, Live Activities, Native Alarms, Dynamic Island, Lock Screen and Home Screen Widgets &#8212;&gt; everything is easier when you&#8217;re 100% on SwiftUI. You don&#8217;t need any bridge layers, no platform channels and no weird hacks. It just works. If you want to support many native-only features in your apps, do yourself a favor and pick SwiftUI instead of Flutter.</p><p><strong>UI Design:</strong> With iOS 26 Apple made a huge leap in terms of user interface design. I might be biased, but in my opinion the Liquid Glass design is the best thing that ever happened to the Apple ecosystem. I love every part of it and really wanted to add it to my app HabitKit. But because the official &#8220;Cupertino&#8221; widget library for Flutter was and still is heavily lacking, there is no way to achieve this look in a Flutter app in the near future. If you need a cross-platform solution but still want the Liquid Glass look, you&#8217;re probably better off with React Native at this point.</p><p><strong>Learning Curve:</strong> If you&#8217;re coming from Flutter, SwiftUI is pretty easy to learn. Both are declarative and feel similar conceptually. So there wasn&#8217;t a huge barrier of entry for me. The real pain is actually learning the ecosystem, the native APIs and how to deal with the terrible documentation. In terms of learning resources and documentation, Flutter has the lead by far. The Apple stuff is sparse and often outdated. The most valuable resources are WWDC videos which is pretty weird to be honest. I don&#8217;t want to watch a 45 minute video when I&#8217;m just trying to understand how an API works.</p><p><strong>Long Term Maintainability:</strong> SwiftUI will always be a first-class citizen on Apple platforms. There is no threat of Apple killing the framework. I know there were some rumors about Google not being 100% behind Flutter anymore and this is pretty scary for an indie app developer. You don&#8217;t want to invest years into a technology that might be abandoned. With SwiftUI I feel more secure about the future of my apps.</p><h4><strong>Conclusion</strong></h4><p>So, should you switch from Flutter to SwiftUI? It really depends on your situation.</p><p>If you&#8217;re just starting out and want to build apps for both iOS and Android with one codebase, Flutter is still a great choice. The developer experience is really good, you can move fast, and you can reach both platforms from day one. Just be aware that once you want to add native features like widgets, you&#8217;ll have to write platform-specific code anyway.</p><p>If most of your users are on iOS, if you want to use all the cool native features that Apple provides, and if you&#8217;re okay with only supporting Apple devices, then SwiftUI is probably the better choice. The integration with the Apple ecosystem is just so much smoother and you don&#8217;t have to deal with maintaining multiple codebases.</p><p>For me personally, the switch was worth it. FocusKit is built entirely in SwiftUI and the development experience has been great, despite the terrible tooling. I can use all the native features without any workarounds and I don&#8217;t have to worry about Android-specific bugs anymore. The Liquid Glass design looks amazing on FocusKit and I couldn&#8217;t have achieved this with Flutter.</p><p>I still maintain HabitKit in Flutter and I&#8217;m not planning to rewrite it. That would be a huge undertaking and the app works fine as it is. But for all my future projects, I&#8217;ll probably stick with SwiftUI, although I can&#8217;t guarantee it! Right now, the peace of mind of being fully native is worth a lot to me though.</p><p>At the end of the day, both are good technologies. Pick the one that fits your needs and your business goals. And don&#8217;t be afraid to switch if your situation changes. I did it and I don&#8217;t regret it. When it comes to React Native, I can&#8217;t give you advice on that because I never worked with it.</p><p>PS: This will be the last newsletter issue before my huge &#8220;Year In Review 2025&#8221; article on Dec 31st!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://sebastianroehl.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Building A Profitable App Business! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>