Show HN: Open sourcing Harmonic, my Android Hacker News client github.com 305 points by swesnow 15 days ago
I'm the developer of one of the most popular Android clients for HN, Harmonic for Hacker News. Over the years I have recieved many requests to open source the app which I am finally doing - sorry about taking so long :)
Having been very busy working on my PhD during the last two years - Harmonic has not recieved the attention it deserves. I therefore hope that open sourcing it can give it a new lease on life. I also hope that by posting here many of the nice people who have reached out to me will notice that the app is finally open source. I'm also happy to answer questions about the app but cannot make any hard promises about future features.
(As a note; I wouldn't call the architecture of the app a beauty by any means - it is very much cobbled together using my (somewhat outdated) knowledge about Android development.)
Cobbled together or not, the app is functional, has an awesome UI and I love that I don't have to leave the app to actually read articles. Awesome work!
Conversely I love that I can set it to use the system browser, I absolutely loathe in-app browsers.
Thank you! I agree that those are for sure the most important things. Glad it does the trick for you :)
It really is very sleek and beautifully minimalistic. Don't downplay your achievements! It's a great app.
Thank you for building Harmonic. It's been my HN client for years. I will definitely take a look on the code and try to contribute.
You're very welcome! Always nice to hear that someone has been happy with the app for a long time. Would be very cool if you could make some form of contribution. Again I apologize for the code being somewhat of a mess - it was not made with open source in mind but if you have any issues I'll try to help you out :)
Sometimes it can be hard to let something like this go. Kudos to open sourcing!
You're very right - and it's kind of hard to explain even to myself why. I'm glad its done now and people seem to be actually looking into the code
Please learn to spell "receive". Most people will say nothing about this detail, it does however impact your texts.
Anyways, fantastic work with the app. I'm using it right now for writing this comment. Thank you for making it available.
First of all, I love the app (I'm writing this comment on it write now)!
I'd always wondered, is the UI inspired by Relay for Reddit? The sliding between, colour-coded comment chains you tap to collapse, I absolutely love it and it's the only other place I've seen it. I wish more apps used this style, it's so intuitive, pretty, and pleasant to use
Thank you! It is partly - I use Sync for reddit as my reddit client and that is an inspiration for much of the UI however I did actually download Relay because I know it had some interesting UI choices and stole some ideas from there. It's amusing that it is noticable
Another daily Harmonic user of a few years standing here. I tried a good few HN clients until I clicked with Harmonic and never looked back. I find it to be one of those rare apps that works so well and unobtrusively that you hardly notice it until it dawns on you how good it is. Great work, thanks for making and open-sourcing it!
Always good to hear from the day 1 OG:s :) I also went through the ritual of trying almost all available HN clients back in 2020 and being unhappy and Harmonic was the result. I'm glad it worked out the same way for you!
Small suggestion: link to the play store (and fdroid?) From the readme for easier access.
Good thought, fixed that now, thanks!
I usually refrain from installing apps from Aurora Store instead of F-Droid, but Harmonic is the one app for which I oblige.
Thanks a lot for open-sourcing it.
I wait for the day, where I can finally get a good HN client at F-Droid :)
Posting from Materialistic which I downloaded from F-Droid. On CalyxOS too
Good that I could convince you :) I hope to get around to posting it on F-Droid soon, it doesn't seem like too much work
Others have mentioned Materialistic and Glider. Both are great options that I used for a few years. However, I've recently changed to Hacki. It's also in the core F-Droid repo and works great for me as a HN client. Since it will even try to notify you of replies
I love it, releases on GitHub to so I can avoid F-Droid builds. Dev is nice and receptive too and the app is feature filled. Finally replaced Materialistic for me.
I'm glad you liked it. But I'm curious, why would you want to avoid f-droid builds?
Other way around is a better choice IMO.
Glider is quite nice
This is what I often use, though I have noticed some weirdness where votes won't stick despite the app saying that they did and comment threads that are too big constantly refresh until all the comments are loaded. Might give some of the other apps in this thread a try.
First of all, thank you for creating this app. A couple of years ago you've finally put an end to my decade of looking for a decent HN client for Android and I haven't looked back. I actually run Harmonic in Windows Subsystem for Android and on ChromeOS to use it as my primary way of browsing HN on all devices!
That said, if you have any spare time to dedicate to it, it would be great if you could open some issues on GitHub to express what you have been wanting to do but didn't manage to. I don't have any gripes with the app as-is (other than adding Material You support, but that's likely to require some large changes) and it would be great to have some guidance on what would be useful to contribute.
Wow I never thought anyone would be so hardcore as to actually run Harmonic on windows subsystem and Chrome OS - I figured not a lot of people don't use the big screen mode and I mostly made the tablet changes for when I bought myself an Android tablet a couple of years back to use Harmonic more comfortably in the couch.
The GitHub issues is a very good point! I have a long Google Keep list with things I've been meaning to do and hadn't even thought about opening issues to guide to help. I'll try to get some of those up tomorrow :)
Hey there Simon, thanks for writing this great app. Although you said that you wouldn't call the architecture of the app a beauty, I think the UI really stands out as a pretty app that provides only the features that are really needed without delving into anything unnecessary. Really well done and congratulations on the OSS release.
Thank you! I am glad you appreciate the choice of focus! It does however make tweaking the app a bit harder at times but as long as it looks and behaves good I am happy as well :)
I've had Harmonic on my phone for maybe two years now. Best UI out of all the HN reader apps I've tried. Still I go through perioids of using the app to read HN and then switching back to the website in mobile Chrome. I like to skim through the headlines, open interesting articles and comments in new tabs and then go through them after I've read through the front page headlines. No app really supports that, and I'm not sure if an app would even be able to do that better than a browser.
Aside from that the other thing that makes me go back to Chrome are occasional crashes. Seeing how many people daily drive the app and nobody else has mentioned this, I have to wonder if it's something to do with my setup specifically. I do remember it happening on my previous phone (Samsung Galaxy A40, I think) in addition to my current one (Motorola Edge 20) so I just assumed it was something the app does for everyone. I think it usually happens when the app has been on the background for a while, and then I reopen it and it'll start to fetch the new stories and then crash.
Do you receive some sort of reports automatically from such crashes? I have zero Android app development experience so I don't know where to look for logs or what to try next.
Hey thanks for the kind words! About the "tabbing" behavior; I know Sync for Reddit on tablets introduced a version of this a while back but as you say getting the UX of this correct on phones is very challenging but it is an interesting design challenge.
I get automatic reports on crashes and about 99% of them are WebView crashed in native code. I've Googled this a bit and am under the impression that these are unavoidable but I definitiely do not understand it. My impression is that they are due to bad performance but it is unclear if anything can be done from the app side to mitigate the issue.
The actual Java crashes (i.e. crashes in the Harmonic code) are relatively few according to the console data I have and mostly non-deterministic but if you have a crash you can replicate I'd appreciate if you can describe it so I can see if I can get the same behavior on my side.
Love love love Harmonic! I actually stopped using an iPhone because Harmonic was giving me a better experience than Octal on iOS.
A couple feature requests! 1. Enable deep linking. Capture the news.ycombinator links on my phone and they auto open in Harmonic 2. Something is broken in the login form that blocks my autofill from working (1password, but it should be the same for any as it's an Android level API)
Haha wow that's actually crazy that you switched phone partly because of Harmonic!
1. Deep linking used to work a couple years back but I think there was some Android change making it harder meaning you had to verify that you had ownership of the domain. Perhaps this is possible to bypass but I haven't looked into it.
2. This totally slipped my mind; I just found out there's an autofillHints attribute which you can give to text boxes - I'll try to get this fixed. Thanks :)
Big fan of the app. One thing that have bothered me a bit though are bookmarks. Is there any way to sync them with the built in HN functionality? I often bookmark threads with 200+ comments to take notes later on the computer but I haven't found a decent way to transfer them without sending links one by one.
Also a big fan here, who would love to have the ability to sync bookmarks to his desktop PC. I'm usually just bookmarking while commuting (or sitting on the toilet), but prefer reading on a larger screen.
Yeah this is something that has been on my mind. It is possible because I know other apps do this but I haven't looked into details of the API. I totally get the appeal and have received many requests to add this.
THere is an option to export bookmarks in the bottom of the settings and technically if you are a very hardcore person you could set up a Python script to import them but of course this is way too hardcore for most people.
Is there a way of automating the export of bookmarks in the app?
I'm thinking of exporting bookmarks regularly to a network drive and then having a script check for new content in that drive to sync with my desktop PC.
That's the client I use on daily basis and it's been one of my favorite apps
Glad to hear that it is doing its thing for you and that you enjoy it!
I do all my HN browsing on this "minimalist" mobile client called Glider. It's actually great, feels modern and you upvote and reply with swipe actions instead of buttons, which I actually like.
I've tried glider for some time but it had a very unpleasant tendency to freeze my phone completely. I've since switched to Hacki which is really responsive and has similar swipe controls.
Lately I've used the lite app with Hermit, but I'll give Harmonic a shot.
Been using Harmonic daily for a few years now and I love it so much, it's an incredibly well made app. Thanks for making it, awesome that it's open source now as well!
That makes me very happy to read! And I'm glad that making it open source can increase your enjoyment
Awesome work! Just discovered this client and instantly fell in love with it! Used it for a couple of minutes and thought "hey, it would be cool to be able to click on the story to get to the comments." Guess what, there is an option for that. <3 Also really like the "Jump to the next top-comment" option. Always missed this from reddit.
One question though. Is it possible to change the accent color when using the Material You (light) theme?
Glad you like it and thanks! There's been many feature requests over the years of that nature so I am glad they address the same pain points of multiple people.
As can be found in/values/themes.xml line 119, the accent color is one of the automatically extracted material you colors. Therefore you could change your wallpaper to change the color but I haven't got any plans to change the material you color used. However I don't use light mode and perhaps it is bad - in that case a change may perhaps be in order.
Thank you for your answer. I uploaded a screenshot to Imgur of what it looks like on my screen .
Unfortunately I am running Android 9 and this automatically picking color feature doesn't seem to really work since my background is just black with a few blue dots. Not sure about that I am not really into the Android Game.
Oh I see, yeah on Android 9 you are getting a fallback color for when automatic theming is not available. I would recommend using the regular light theme as this has a green accent which I think is nicer on the eyes. I'll add a note to change to light material you fallback color because that does not look nice.
I absolutely love Harmonic! Great UI/UX and nice attention to details. Almost prefer browsing HN using it rather than the website :) Thank you for open sourcing!
Thanks you and thanks for noticing the details :)
I love Harmonic! Browsing HN is so much more enjoyable with it than with the website. The UI is great too. Thanks for making and open sourcing the app!
That is very kind of you to say - you're welcome!
Been using Glider on Fdroid for quite a while, but giving Harmonic a try now. Love it so far, great work and thanks for open sourcing!
Glider is a nice app for sure and I totally get the F-droid appeal - nice to hear that you are still able to be impressed by the app :)
I tried it for a few minutes, I really like it But the lack of widget support is a deal breaker for me I usually just unlock my phone, see top stories directly and then click on one of the to open Materialistic (HN app, haven't been updated in a few years do it got delisted from the play store)
Yeah a widget is something that would be nice - I don't use them heavily myself so I guess that's a big reason for why they are not there right now. I do remember Materialistic having a OK widget.
Awesome! Been using it for about a year now. (I'm writing this from Harmonic)
There's one functionality of another HN app that I really liked that Harmonic doesn't have - mark topic as visited when I scroll past it in the topic list view. I loved this feature and I really miss it because it allowed me to quickly see all the new topics that I haven't seen before. All the topics that I scrolled past I either visited or are not of my interest.
I'll see if I can add this functionality to the app and a preference for enabling/disabling it.
Thank you so much for building such a beautiful app!
Very nice - I look forward to a PR. Contact me if you have some question about the code and I'll try to help you out :)
I'm reading this on Harmonic right now, and I've been recommending it to everyone since I've discovered it. Thanks for the great work!
You're welcome and thanks for spreading the good word :)
Thank you for your work! Harmonic is one of my most used apps. It's a joy to use, and I love the design (including the logo)!
Thank you very much! I actually made the logo with matplotlib by just plotting a bunch of sines with integer frequencies and put it together in Photoshop and feel like it's held up OK
Love Harmonic! Writing this reply on it right now!
Thank you, I hope you'll keep loving it! And good that the comment system is still working :)
I'm banned from github. These Reddit Sync features are also great if someone want to add them:
- Mark as read on scroll
- Title customization I don't like the font weight
- On thread view an option to hold a comment to hide its child comments. I think sync moved to single tap for the other actions
- E-ink friendly options like pagination instead of scrolling
Great app thanks for open sourcing it
Harmonic is my main way to interact with HN.(writing this on Harmonic) Love the ux of just pushing articles down for the articles and was curious how it was implemented and why other applications don't do it. Thanks for creating and open sourcing Harmonic.
Glad that you like it! It is a BottomSheet (https://m2.material.io/components/sheets-bottom) which is a Material design component from Google and they handle a lot of the complexity (although the implementation in the app has a few bugs) which is nice
Thanks for the reply! Your implementation looks like a very ingenious way to use bottom sheet.
Like others in the comments, I've also been happily using Harmonic after having tried almost every other HN app.
I've got a strong preference for open source apps, so this is the best news I could get from this app.
Thank you for your great work!
Hi Simon, have 2 favorite apps for Android and Harmonic is one of them. Really good job.Its nice that you share you code.Hope app will get better with other people contribution.
Harmonic has been my favourite, but only as an HN client but as an overall app. Have been using it for ~2 years now. Huge thank you for building this and thank you for open sourcing it!
Wow that is very kind of you to say! Maybe it's because I've spent so much time with it that I see the cracks but it makes me glad that you view it so fondly :)
Great project! Would be nice to have screenshots in the README.md.
Thanks! You're right that the README needs a little prettifying, I added a link to the Play Store for now where screenshots are available but for sure it would be better to have something in the README as well.
Thanks for developing, and now open sourcing, Harmonic. It has been my favorite HN client for a few years now, something to it that make you not want to leave!
I used to use materialistic but then started just using Firefox to browse. Kudos to HN Devs for making it work so well on a browser in the day and age of apps.
Silly question perhaps, but (iOS user here, I can't install it) what are the primary advantages of this over just using the web site?
Not having to load a whole browser runtime has some nice performance benefits to it, which makes the whole experience just kind of feel a bit better.
Thanks for that ! I had a terrible HN app, and discovered Harmonic through this post. And it's so much better. <3
What’s the best alternative for iOS?
I'm reading this on Harmonic from a Chromebook right now. Thanks for all the hard work!
It's a really great app just used it. has a great UI, and feels fast too.
Been using it for years, fantastic that it's going to be open-source now too!
Fun that you've followed along through the updates :) And it feels good to finally put something "real" out as open source
Thank you for Harmonic, it is beautiful. Open sourced just makes it perfect.
oo I've been using this on my daily commute. Thanks for building it!
You're very welcome, it's great to hear you're enjoying it!
This is my daily driver. It's great! Thanks for your work on it.
You're welcome! I use it daily as well and like the idea that others are too :)
Thank you, can't express how beautiful the Harmonic client is.
Thanks! I don't have any design background but have spent a lot of time zooming into pixels and comparing alternatives so it's nice to hear that the choices resonate with others
Would be nice to filter news by ie above 100 points.
Love the app. How do i export my bookmarks?
Harmonic is the best HN client I ever used.
Happy to hear that, Harmonic is great
Installing now, thank you!
You're welcome, hope you enjoy it!
I use Glider.