Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Building and selling macOS apps is a pretty good niche to be in right now.

I escaped my stressful corporate job 1 year ago and I’ve been living comfortably since then from app revenue only.

I’m making between $3.5k and $9k per month with https://lunar.fyi/ and the smaller apps I create at https://lowtechguys.com/

It’s not much for some parts of the world. But I’m well enough from this that I even took the time to build a small calendar app (https://lowtechguys.com/grila) from which all the funds will go to my brother’s college costs so he can stop working 12h/day jobs.

Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.

Desktop apps on the other hand, most that I use and love are made by single developers.

With the ascent of Apple Silicon, and the ease of SwiftUI, this has the potential of bringing a modest revenue while also being more fulfilling than a corporate job.

In case you’re curious how the code looks for something like that, here’s a small open-source app that I built in a single (long) day, which has proven to be useful enough that people want to pay for it: https://github.com/alin23/Clop




> from which all the funds will go to my brother’s college costs so he can stop working 12h/day jobs.

This is cool. I hope you make a bunch of extra sales from your (correctly) upvoted comment here :-)


I would love to read some blog with more details about your experience.

As a long time backend and full stack developer my brain is stucked in web services. Which works Well as employee but when it comes to have your own product you are playing against Google,AWS,meta and so on.

Maybe I try developing desktop applications too.


I have a few writings here: https://alinpanaitiu.com/blog/

And here: https://notes.alinpanaitiu.com/

The most desktop app technical + marketing related article would be: https://alinpanaitiu.com/blog/apps-outside-app-store/

I worked as a web dev for 5 years first, and those skills transferred well into the marketing and API part of the apps.

For example my Lunar app even has a CLI that is implemented as client-server and the app also provides an API for controlling displays remotely or through a Raspberry Pi server. That would have been very hard had I not known how to write an API.


Thanks.


It’s a fun niche. I’m making tens of dollars a month on my first app: https://apps.apple.com/us/app/audiowrangler/id1565701763?mt=... :)


I also made tens of dollars a month with https://lowtechguys.com/rcmd for the first few months ¯\_(ツ)_/¯

The good thing is that usually you just keep growing from this. Now it’s making $1k per month, mostly because of sharing it with the world and implementing recurrent annoyances shared by users.

It’s important to have a way for users to contact you. I love Formspark.io for that, just slap a contact form on the app website and emails will start coming.


Thanks for following up. One q: I suck at building landing pages. Do you have any tips here? I have some ok-ish copy already distinct from the App Store page, but I hate finagling HTML.


For simple one-page presentation websites, try https://carrd.co

In my experience, knowing CSS is 90% of making a pretty and informative page. HTML is mostly just h1 for title, h2 for subtitle, div for groups and p for copy text.

I don’t like writing neither HTML nor CSS so my websites are written in Plim with Tailwind classes for styling.

Here’s a snippet that defines the icon on the https://lowtechguys.com/clop page

        section#hero.min-w-[100vw].flex-center.flex-col.relative.pb-20
            img.w-28.h-28.md:w-32.md:h-32.filter.drop-shadow-2xl src="/static/img/clop-icon.png"
            h1.mb-6.text-4xl.text-zinc-600 Clop
            h5.text-gray-500.m-0.p-0 Clipboard optimizer for images
            h5.text-gray-500.m-0.p-0.-mt-1 Copy large, paste small, send fast
You can see how most of the text is just Tailwind classes which are basically CSS one liners.

It’s not easy to understand nor pretty to read, but it makes for super fast iteration time, especially because of the responsive breakpoints (e.g. .flex-col.md:flex-row for a vertical layout on mobile and horizontal on desktop)


Thanks! I'll give it another shot; by the time I get around to working on marketing web stuff in my day (after work + parenting) I am pretty tired so I never give it a fair shot. Will check out carrd.io.


Look up launch page templates. There's tons of Tailwind launch page templates to use.


You can also explore buying pre-made themes from ThemeForest. I’ve bought a few to various landing pages in the past.


Ohh ma gahd, I've been wanting something like this for ages!


So good to know there's a $dozens MRR club :) same here with https://apps.apple.com/app/supreme/id1281516834 but upgrading old iOS code to SwiftUI is a bit of a pain


Don't put yourself down, $9k/month is nothing to scoff at, Nice work!


> Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.

What kind of paid web services did you try, if you don’t mind me asking? I’m thinking about going this route myself, but I hear you - I’ve also pretty much bought exclusively from the big guys.

Any other learnings from the web service route you could share? Like what tech stack / platform did you use? How did you try to market your service? Can you see other reason (than not being big / trustworthy enough) why it didn’t work?


My most ambitious web project was https://noiseblend.com which is a web app for discovering music on Spotify.

It’s a next.js + React slow and memory hungry mess [1] which could have been static HTML with some JS for the dynamic bits.

Experience taught me to keep it simple nowadays, but I had to go through the Noiseblend mistakes first.

The stack is Python with Sanic for the backend, Postgres for db and Redis for cache.

That’s what remained after removing all the unnecessary services I implemented because I thought they were paramount: high availability, data locality, time series databases, performance monitoring, alerts etc. Forget about those until you start making money on the product.

The biggest disadvantage a web service has over a desktop app is that you have to keep it up. No matter what, you have a server to manage and make sure it keeps responding. That worry doesn’t exist on offline desktop apps.

The other is finding the market for it. Noiseblend didn’t have a market, and it being dependent on Spotify didn’t allow me to ask for money unless I did something more. That’s another problem, avoid creating functionality that depends heavily on big companies.

I thought about “pivoting” and turning it into a playlist building tool for DJs. I added filtering songs by key and mode (e.g. A minor) and asked a few people if they would use such a thing. Turns out that they use a semi-offline desktop app [2] that already does that and is much faster and powerful.

Oh well, at least now I have a way to find songs to improvise on with my Kaval and guitar.

From my observations, people are reluctant on paying for websites. I guess they don’t feel as “owned” as a desktop app.

[1] https://github.com/Noiseblend/ui/blob/master/pages/artists.c...

[2] https://mixedinkey.com/camelot-wheel/


Interesting! I actually made a web-based tool for harmonic mixing back in 2012. https://inorganik.net/mixtool/


Your apps and site look awesome, congratulations.

For whatever reason, the hero video at https://lunar.fyi/ makes Safari use 100% of all cores, Webkit.GPU goes nuts, WindowServer unresponsive… works fine on Chrome however. Monterey 12.5.1, iMac 5K, 27"


Thank you!

I think that might be because Safari uses the HEVC version of the video. I'm also seeing 25% usage on an M1 Max MacBook, which is more than I expected.

Firefox and Chrome don't have noticeable CPU usage. They only support the H264 encoded video.

I might have to reencode the video and optimize for hardware decoding. Default ffmpeg options were not enough apparently.

  -------
EDIT: it's actually because of the HDR section from https://lunar.fyi/#xdr

Safari is the only browser that can activate the HDR subsystem on these Display P3 screens, and by doing that it taxes the GPU more when playing back video.


Ah! Makes sense. Thanks for sharing


This is interesting, along with the discussion it started below. Thanks! Im a windows and linux (and andorid)user so I'm not to in tune with the mac world

How did you find paying users( or just users? i see you have free trials and free tiers) Does the app store offer that much discoverability?


For the first 3 years, Lunar was my only app, and it was completely free and not on the App Store. I just had a one page website with the app UI screenshot and a download link.

Since the app was free, I didn't seek out users too much. I just shared it on the usual channels of the time and forgot about it: ProductHunt, HN, Lobsters, Reddit

It became popular by itself because it solves a real need that people have and after picking up a bit of steam, it gets recommended a lot.

After launching rcmd, my first App Store app, it felt like it entered a black hole, no discoverability whatsoever. Until an App Store editor placed it in front: https://twitter.com/alinp32/status/1479462684315865099

That generated a large peak in downloads, and people started recommending it again. Blog posts on technical challenges I solved while developing the apps also help a lot but they're high effort and I need 2-3 months to accumulate enough research and knowledge for them.

Before Mac, I was both a Windows and Linux power user. I never saw someone buy a thing on Linux, not that it doesn't happen, but it's a rare occurence so I don't think there's much business there.

On Windows however, people buy software all the time.

Find the Windows inconvenience that annoys you the most, build something to fix it and share it with the world for free. If a handful of people find it useful, chances are there might be tens of thousands more like that who would even pay for you to work and fix more related annoyances that they have.

I have no idea in what state Windows UI programming is nowadays though, it wasn't pleasant last time I tried it 5 years ago. But even system tray utilities with minimal UI can be very useful.


Paid user here. Thanks for making old-school but super-helpful desktop software!


> old-school but super-helpful

Love this, thank you for the kind message!


How do you manage the licensing? Do you use some library to enforce the trial period in your apps?


For non-AppStore apps like Lunar, I use the macOS SDK from Paddle.com. It provides trials, license activation UI, payments and checkout UI, both in-app and on web. Here's how I use it: https://github.com/FuzzyIdeas/Lowtech/blob/main/Sources/Lowt...

For App Store apps I have my own custom solution which uses https://github.com/IdeasOnCanvas/AppReceiptValidator to see if the app has been bought, and if it isn't, I have a time and usage based expiry logic. When the timer expires, I block key functionalities of the app and show this screen: https://shots.panaitiu.com/o6qnP8


Love lunar! I have my shortcuts/hotkeys configured and it's a breeze to switch between super dim, medium brightness, and full-on-hyper-bright-it's-time-to-crank-some-work-out brightness. Thanks for this great app.


Thanks for Lunar, I have been using it b/c the native apple software wouldn't let me adjust light on my external monitor properly.

Also, I love the secret, extra brightness levels it allows on the main screen, especially when I am outside. Do you know if there is any risk of damage to the brightness by using it at the higher settings?

I once had software that me increase the volume of my macbook speakers and one day I was working and vibing to the song and pushed the volume all the way up... and blew a speaker out...


Thank you! :)

About XDR, I have an FAQ about its safety here: https://lunar.fyi/faq#xdr-safe


How do you market your apps, and how much time and money do you spend marketing and advertising them?

If conventional wisdom is to be believed, it seems like the difference between building an okay app and a great app doesn't matter that much, because success depends on investing the vast majority of the effort into marketing. That's a big deterrent for me — I'm much more interested in building awesome things than hawking them.


I spend very little time advertising them. Maybe 3 times a week I get an email with a relevant keyword mentioned on HN or Reddit, and in 2 of those cases I spend a few minutes writing a concise comment.

About 3 times a year I do promos on Twitter to get more followers and spread the word a bit more through retweets.

And then I have the blog posts I write, which do take a lot of time, but they are mostly for sharing knowledge, not for advertising. Although they do help get some eyes on the apps as well.

    > If conventional wisdom is to be believed, it seems like the difference between building an okay app and a great app doesn't matter that much
I'd say the difference matters a lot. Since being in these circles, I notice how low quality apps (or just apps where the author didn't give them much thought after launch) don't get recommended as much if at all, and bad rep is spread on them which deters people from even trying them.

I'm more inclined towards the "a good product sells itself" line. It definitely doesn't sell itself if people don't know about it, but you have a much higher chance to get picked up by vocal people and groups and recommended around if your app is high quality and makes a good impression. Even more so if you hear what people have to say after trying your app and try to improve the app for a few months after the launch.


Hey, Thanks for Lunar. There are other free alternatives but Lunar's Pro makes it easy for me to have the external monitor have some sane sync with my primary display.


Lunar looks like it's quite extensive. (And the website looks great!) How much work have you put into it, over what period, if you don't mind me asking?


Thanks for the kind words!

I’d say I had a year of full time work (on and off in 3 years of time) until I had Lunar 3 which was the most stable until Apple Silicon arrived: https://github.com/alin23/lunar/tree/lunar3

I had accumulated about $5k in donations over those years which allowed me to quit my job, do 6 months of full time work in 3 months of time, and launch Lunar 4 with support for Apple Silicon: https://alinpanaitiu.com/blog/journey-to-ddc-on-m1-macs/

After that, the hard work started because now I had paying users asking for a stable app that was very Hardware dependent on a completely new macOS architecture. 9 more months of full time work followed.

Right now it’s finally quiet. I do about a bug fix and small feature release per month and I have plenty of time to work on my other apps.


Thank you for lunar. I use it every day. The ability to rotate the inbuilt apple display has been a killer feature for me.


Huh, I had no idea that function would ever be useful :) I guess you never know. Thanks!


I see you sell apps directly and from the AppStore. What do you think about mac AppStore? The word in the street is that it's not growing and users aren't using it and developers are hating it because it lacks [INSERT FEATURE]. Is that right?


I love the App Store product and what it offers, what I don’t like is the bureaucracy that grew around it.

Because Lunar uses lots of private and reverse engineered APIs, it isn’t allowed on the App Store, so I had to replicate a lot of the distribution myself:

    - payments and refunds 
    - license activation
    - anti cracking measures
    - automatic (and rolling) updates
    - making a website for the app
    - SEO (the App Store is quite good at this)
    - error reporting and crash data collection
    - anonymous analytics
    - making sure I’m not mishandling any user data
I mostly opt for the App Store nowadays because it saves me the hassle for all of the above, but it comes with a number of pains and disadvantages:

    - no trial mode for one-time purchase apps
    - the sandbox is very limiting: no private APIs, no full disk access, no Accessibility Permissions etc. 
    - the review process is more annoying than helpful
    - the user ratings can hurt the business a lot when the product is harder to understand and users leave an angry review because they didn’t read the description before buying the app
For the trial thing I have my own solution where I publish a trial-only build on my website and a link to buying on the App Store when the trial ends.

The sandbox, well I found workarounds for most of my needs [1] but I still skip building some ideas because I know they would never be approved.

The reviews are as annoying as ever [2], I even got my name in a Wired article [3] because of that. They can be very discouraging.

[1] https://alinpanaitiu.com/blog/window-switcher-app-store/

[2] https://notes.alinpanaitiu.com/App%20Store%20review%20timeli...

[3] https://www.wired.com/story/apples-app-store-review-fix-fail...


Can you not publish the app with limited functionality and/or ads for free and make the full version an in-app purchase?


I can but:

    - in-app purchases come with more disadvantages than a one-time purchase (harder to implement, more UI and explaining needed, restoring purchases is a confusing thing)
    - I don't want ads in my products
    - there's not much functionality to limit, since the apps are very focused on a single thing
    - App Store reviewers don't approve apps that limit functionality too much
The App Store way of doing this is with an additional $0 in-app purchase named "7-day Trial", but I tried it and it creates an incredibly confusing experience for users.


I'm a fan of your apps. Huge kudos, especially rcmd is super nice. Use it all the time.


The contact option on the site is broken. I wanted to know if grila supports ics imports?

Because if yes I'm gonna get it ;-)


> I actually don’t use any indie web product

The only indie web product I use (and have used for many years now) is workflowy. So simple, so beautiful. Wish I invented it.


How do you decide on whether you should open source an app? What impact do you think this has on your revenue/profits/clone-ability?


Ah I did notice you encrypt/hide pro features. Still curious to hear your thoughts!


I usually open source free apps, that I don't think I'll ever be able to sell because "who else could have the same problem as me?"

If it turns out that people have a need and want to pay for Pro features, I try my best to keep the source available for the free part of the app, and only encrypt the code that constitutes the paid features.

That happened with Lunar, and it seems to start happening with Clop as well.

I have no idea if it did impact my profits at all, but it did help other people to start competing with me. The only competitors to Lunar (MonitorControl and DisplayBuddy) started by using Lunar's code [1] for controlling monitors on Apple Silicon [2], as Lunar was the first app to get that feature.

Competition is still good though, as long as it's not break-neck competition. I learned how to make Lunar simpler in terms of menubar UI from MonitorControl, and got some ideas on how to implement Custom Presets from testing DisplayBuddy.

[1] https://github.com/alin23/Lunar/blob/master/Lunar/DDC/DDC.c#...

[2] https://alinpanaitiu.com/blog/journey-to-ddc-on-m1-macs/


That’s quite interesting. Thanks for sharing. How did you go about marketing your apps and attracting customers/installs?


My secret is f5bot.com ^_^

I’m notified when keywords related to “human wants thing, my app can do thing” appear on HN, Reddit and Lobsters.

If I can then contribute with information to that discussion, I’ll also leave a link to my app.

Don’t just self plug, people (myself included) appreciate more detailed information on how they can solve their own personal problem, instead of being thrown into “here’s an app, figure it out”


Here's something related telegram users might appreciate: https://github.com/lawxls/HackerNews-personalized

This is a telegram bot for managing personalized feed of stories from Hacker News. Just add keywords, and maybe set score threshold.

Was this a good self plug? :D


That’s actually really useful! I avoid some keywords in f5bot because they tend to be verbose and I don’t want to receive 100 emails per day on them.

A chat makes it perfect for this use case, I’ll use it right away, thanks for making and sharing it!


Pretty cool, congrats! Can you recommend learning material about developing macOS apps with SwiftUI?


Thanks! I only learn by building small ideas and looking into the Apple documentation through Dash (https://kapeli.com/dash) and searching "how to do X" on Google. So I can't recommend material from first-hand experience.

But I've heard good things about this university video course: https://www.youtube.com/playlist?list=PL9VJ9OpT-IPSM6dFSwQCI...

On a first glance it seems to cover a lot of stuff I use regularly in SwiftUI, but also some videos are quite long. It depends if you like learning by watching, or by doing.


Thanks for link, I will have a look at it. Keep up the good work and all the best!


building for app-stores is also kinda niche sorta these days. most businesses want to be on the web mainly with a presence the app stores. i make about $10k each month with Red Goose [1] with focus on the app stores.

[1] https://goose.red


That's a really good product for businesses, yes. They need a web presence as most are just stores and catalogs. A mobile app is a good complement to that.

What I'm building and noticing on other macOS developers are system utilities, that have no web equivalent. Things like window managers, app switchers, clipboard history, hardware controllers etc.

It's a smaller niche, but closer to the users. It makes a dev feel like less of a cog in a big system, and more of a craftsman giving people a way to solve their frustrations.

By the way, do you think noiseblend.com would fit into Red Goose? I tried both Ionic and Cordova but there were two big disadvantages to them:

    - way too much work to pack a Webpack+Next.js+React frontend into an app (and I didn't want to sell it, so not much incentive to put in that work)
    - both were still using older WebViews on iOS instead of the newer WKWebView and the memory requirements of Noiseblend triggered iOS OOM killing the app
I'm curious if you're using a newer (or simply stabler) packing technology.


Red Goose uses a Swift WKWebView wrapper for iOS (fairly latest) and Kotlin for Android. It’s stable enough but also just a step behind the bleeding edge.

I like to keep all my app specific developer controls (UX/UI, functionality etc.) in my web-app and put in only very specific native modules that an appstore forces me to use.

NoiseBlend should be an easy conversion from what I can see prima-facie.


Supporting your brother like that is very cool! For me, the calendar app is not available in Brazil though..


Thank you! The app is still awaiting approval from App Store, it will be available in every country soon.

You can use the trial build until then :)


Just want to say that Lunar is amazing.


Thanks for sharing! Have you considered selling your Apps outside the AppStore? Would it be worth it?


Lunar, my best selling app, is outside the App Store. But I had to do 2 to 4 months more work to replicate what App Store is doing. See my more detailed comment here: https://news.ycombinator.com/item?id=33621601


How do you do marketing?

I built this www.anxispace.com .. and I literally cannot do marketing to save my life!


Sharing the link on the appropriate platforms is my best working version of marketing. Word of mouth takes over after this. See my comment here: https://news.ycombinator.com/item?id=33621814

I tried paid ads on all major platforms, but unless you have money to sink in, you’ll mostly just lose money and annoy a few people.


Interesting. The code looks like the love child of F# and TypeScript.


wow, zoom hider! just yesterday i was in a zoom saying i wish i had something that could keep the damn floating controls hidden when i hit escape, and there it is. fantastic


Heh glad it’s helpful ^_^

I have it constantly running with the menubar icon hidden, so even I forgot it existed. It just does its job when I go into a Zoom meeting.


Grila doesn't seem to be available on the US mac app store?


It’s still awaiting approval from App Store reviewers, I just launched it today.

You can still use the trial build from the website until then.


Nice work. This is a great accomplishment, keep going :)


Your lunar app looks awesome, excited to try it out!


How do you promote / seed your apps ?


Mostly links in comments and word of mouth :) see my comment here: https://news.ycombinator.com/item?id=33621814


that is awesome thanks!




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: