Show HN: I made a customizable iOS browser for minimalists and myself (apps.apple.com)

224 points by nckh ↗ HN
Hello HN!

So early this year I decided to build an iOS browser offering a large range of customization options, to accommodate anyone’s usage and visual preferences. Been using it as my default browser for 6 months and not looking back.

On first launch it looks and behaves a bit like Safari, but to give you an idea, here are the various ways I customized it on my phone.

- More screen real estate for the webpage, less for the toolbar.

- A compact toolbar containing only the buttons for actions I use the most: new tab, close tab, open tab list. Since I use them hundred times a day, I need them available with button taps instead of swipe gestures.

- A toolbar button layout adapted to my left-handedness.

- A toolbar that disappears on scroll to allow full-screen reading.

- The toolbar and address bar at the bottom, as they should be.

- A popup menu showing the full URL and the buttons I use less frequently: back/forward (already available as screen edge gestures), share, reload, settings, etc.

- Showing the page title in the toolbar.

- Read time estimation for each tab.

- Opening the keyboard automatically when I open a new tab.

- Sorting tabs by read time, so that I can decide what to read based on how much time and focus I have.

- Grouping tabs by domain.

- A flat, condensed tab list, without snapshots.

- A full-black toolbar in dark mode to read at night.

It’s still early days but things like content blockers, reader mode, iPad support, and more should arrive soon enough.

And of course, no analytics/monitoring/telemetry, no account creation, no backend. It’s not open source, but you can also inspect the app’s web views with Safari developer tools to see what’s going on under the hood.

Would love to hear if the level of personalization my app provides resonates with like-minded people.

Have a great day!

173 comments

[ 2.8 ms ] story [ 209 ms ] thread
What do you use to block ads, cookie nags and email-subscription popovers? Or you just live with them?
For now, yes. But content blockers are the next big feature on my todo list.
Is it possible for third-party browser apps to integrate with content blockers for Safari, or would you have to integrate your own content blocker into your app?
Unfortunately this is not possible. Unless Apple opens that up, it's up to each app to embed its own content blocker.
This is one of my foremost requirements from a browser these days; how well does it block ads. As much as I like Safari it doesn’t seem to block ads as well as Brave, so Brave is my daily driver.
Safari doesn't have an adblocker, but delegates to the ones you can install from the App Store.

I totally understand that lacking a content blocker can be a deal breaker for some people. I wanted to ship my app to the App Store quickly in order to get user feedback.

What I see so far, I like very much. However, there are 2 features that are stopping me from using it as my main browser. an adblocker, and swiping the tab bar to switch between tabs. But what you have created so far, I really like!
Thank you so so much for those nice words! During the beta period I was totally amazed that quick tab swiping was the absolute #1 most requested feature :)
At least for me, it’s one of those things I never knew I needed… until I had it, and now it’s like second nature. It’s like a much better version of the “switch tabs with scroll wheel” extensions I used to use on desktop.
I totally agree. Brave on ios does an interesting thing, where you can drag to switch tabs. It’s much quicker to switch many tabs, but i found myself overshooting and ending up on the wrong tab. I also like how the default safari shows you the edges of other tabs to make it clear what you can switch to.
Wow I never noticed that tab switching gesture thing on Brave. Quite lacking precision as you said though. Thanks for pointing it out!
Have we not all just migrated to DNS based ad blocking yet?
No, that doesn't block YouTube ads (for example) and with DNS over Https will stop working soon anyway.
I am not sure how the transport layer affects the DNS that is used, but I think you are mistaken. If you require an off-site DNS ad blocking solution compatible with DoH, try NextDNS.
StopTheMadness on Safari allows you to rewrite URLs to alternates.

For YouTube you can rewrite to an invidious instance. No ads.

https://yewtu.be is one example.

The best solution is to run both at the same time.
That only does the bare minimum.
I didn’t notice the lack of adblocking until this comment, thanks to a DNS based adblocker.

I wonder if it’s possible to support all Safari extensions seamlessly?

There are a number I use which make it hard to switch completely.

I’m using Orion but it seems like extensions here are either hit or miss for the most part.

Can you share which extensions you are using with Safari?

Vinegar

Banish

Dark Knight

1Blocker Scripts

StopTheMadness

The last two are essential for me, can live without the others.

Looks great so far! Really looking forward to content/ad blocking.

Any chance you're planning on adding tab groups?

Thanks a lot! I'd love tab groups as well, but I would like to come up with something a bit more efficient than Safari, and this will take a lot of time to experiment.
About to download this for the easy access to "Close Tab" alone, thanks for sharing!
Haha thanks a lot! As stupid as it may sound, that close tab button has been a total game changer to my daily browsing :)
I use a lot the left/right swipe gesture on the address bar to switch tabs on Safari. It saves many clicks from the show all tabs button. This plus the close tab is a perfect combo for minimalism and fast browsing ! Great UI options
Just installed it on my phone and played around with the configuration options for a few seconds. I really that there are so may themes and presets already installed. While I think that the ability to configure software is great software that doesn't need configuration is obviously still better. Carefully designed presets can be a good middle ground between personal and niece preferences and shipping a product that's actually finished.
Honestly I agree. I'd like to make buttons arrangement easier, but also something like an assistant that could come up with your ideal toolbar and menu. Plenty of work to do, but so much fun!
Does it save the content of open tabs?

This is my number one frustration with existing iOS browsers - when I come back to tabs without an internet connection everything is gone.

It should remember the scroll position, and the content of <input> and <textarea> tags.
Does it re-request contents when it reload tabs after the app is suspended? Safari makes it very difficult to read content later if you don’t have service.
It does. Not sure WebKit has an easy solution for that specific scenario at the moment, besides saving a web archive to disk.
All iOS browsers just use some webview under the hood. I doubt they have any control at all over this extremely irritating behavior.
Buy why can't they store page cache as local data and continue to use webview to open it?
It is likely the OS that is clearing those tabs from memory. The app may not get any notifications. IOS does not have virtual memory that can be saved to storage and restores on request. IPadOS does now have that on the newer M1 processor versions. They also have 8GB of RAM so they are less likely to need to purge or swap.
Still not clear why the app can't save the page itself to storage on every page load, then let OS clear the memory and not notify anyone, then if it's purged, reload from local file
That sounds like the app would need to implement their own RAM paging and that is a complicated and error prone endeavor and likely not worth the effort for he developer. I don't even know if an iOS app would have the system hooks to be able to do it.
why not just save the page as html? Isn't that what official Safari does with the reading list?
Pages can rewrite themselves at any time.
so? having something good most of the time beats having nothing all of the time
Because it's some opaque component, and it's the only thing you can use on iOS. Firefox and chrome are just chrome/shells around safari's engine and all suffer from this problem.
I love this, man! Looks great! make me smile! :) I hope you go really far with this!!! :) [like all the way to browser-killer far]

It's got that "je ne sais quoi" of a good product. Some sort of internal coherence and a deja vu type feeling where you feel you've used this before / or it should exist so it seems it already must have.

Well fluffin done!!! :)

BTW - technical question, how did you write it? I'm just getting into iOS dev myself wonder how you made the UI look so good? What lang, framework, etc??

Thanks so much for those super kind words!

The app was made with good ol' Swift+UIKit+WebKit+Core Data, with some sprinkles of hosted SwiftUI views. Throw me an email from the support link in the app if you need more details :)

Will do! :) It was a pleasure, and you're welcome. It ain't that kind if it's true, and in this case, it's true! I think so anyway.
Awesome! Thank you for sharing. Here’s a tiny little feature idea I’ve always wanted: when a link opens a new tab, the back button should close the tab and take you back where you were!

Congratulations on launching!

(For what it’s worth, Safari on iOS does that)
Absolutely! That's something I would like to implement as well.
It does, but it’s really quirky! Any browser getting it right without so many weird quirks would be a compelling option for me.
In addition, it would be great if after going back that way there would be a way to go forward again (= undo the going back and closing the tab), in particular if the tab one has returned to has no other forward history. I frequently miss this in Safari.
I'd kill to have something like this on Android.
That's the nicest thing someone has ever said to me <3 Thanks a lot!!
Thank You! <3 I love minimal UIs and customizability.

Is there any way I can keep updated if that ever happens?

You can follow on Twitter and Mastodon! Would it work for you? Do you prefer newsletters maybe?
I'd prefer a newsletter as I'm not actively using Twitter, but give me your handle and I'll follow you for the time being.
Understood, I'll think about starting a newsletter then :) Please follow @quichebrowser on Twitter.
Really? It sure looks like the OP did a great job with this browser, but it's still iOS... On Android I can use Firefox for Android with uBlock Origin, Bypass Paywall, Cookie Auto Delete, and more. Whenever I try browsing on an iPhone I'm reminded it's always Safari behind the scenes, without extensions, making web browsing so painful.

Again - great job with with the OP's browser. Android is just so much customizable to begin with, IMHO.

Thank you! I won't deny you can customize and extend greatly on Android, but to be fair, my little browser is precisely about UI customization.
Looks good. How about adding some more screenshots/a video on the appstore page?
Thank you! I totally agree and am planning to revamp the screenshots for the next release. Initially I went with landscape screenshots in order to show multiple toolbar variations at a decent size, but the tradeoff is I couldn't show settings screens. A video would be great but I'm gonna have to grow some video editing skills first :)
Interesting meta-observation - This thread is filled with people satisfied with this new web browser, and not a single mention of the engine.

IMHO this apps existence proves that you can build a new web browser with innovative features on top of the engine restrictions on iOS, and consumers are not harmed because this runs WebKit.

Except it still sucks to develop websites for it and they often get a worse experience because of that.
100% agree. WebKit is incredible, and people underestimate all the great things you get out of the box for free. That means more time to experiment with creating something different around the web views.
Yeah, as someone who’s built a WebKit browser for kicks in the past, WebKit is designed to have applications built around it and you can definitely feel that when working with it.

It may have changed since then, but last I knew a good example of this is its multiprocess architecture. In WebKit, that’s part of the engine while with Blink it’s part of the browser. So while using WebKit gets you multiprocess regardless of how your app is built, if you’re using Blink you need to bring Chromium along for the ride or roll your own to get that.

And of course Gecko is joined at the hip with XUL, so to do anything with it your only real choice is fork Firefox.

Really hoping Ladybird turns out well and/or Servo takes off because there’s a dearth of properly embeddable web engines right now.

I'm not sure if this observation is as novel as you make it sound: every product that's successful is so because of what it does, not because of the technology it's built on. Your SaaS/webshop/etc can be powered by scribbles on the back of a napkin, as long as it does what the customers need they don't care.
Well, yeah I didn’t think it was particularly novel, and it reaffirmed my belief that iOS restricting non-WebKit browsers isn’t actually a big issue.

I was genuinely surprised to find no other mention of the engine restrictions in the comments though!

The commenters in a story about an iOS app won't know what they're missing by not having access to non-Webkit browsers, which is one reason they use iOS to begin with.
If I may offer an explanation, I think it's because the OP is upfront about the browser being about customization and personalization.

I clicked on the link first thinking "another reskin" and expecting to see the comments you were probably also expecting. When I saw that being a good reskin was the whole point my attitude changed.

(somewhat orthogonal to this post):

Although I think your meta-observation is also true for other browsers like Brave (which I've seen gaining traction recently). While I bet a power user on HN could go and make chromium (or firefox) comparable, would it look the same? Would it be as easy as just installing a new one?

Although although I think a lot of the "reskin" complainers are sad or upset that chromium is dominating (has dominated?) the web, and I can commiserate with them.

Any reason why it needs iOS 16.4?
The minimum version should have been iOS 16.0, but a bug with keyboard layout guides got fixed by Apple only on iOS 16.4.
Wanted to try it out on my SE 2016, but I guess I'm out of luck. :)
Sincerely sorry about that :/ I work on this browser alone and sometimes have to take shortcuts and leverage features from the latest SDKs to ship faster.
Is there a way to get the toolbar to the top?

Never liked it down blow.

Not yet, but this will come when I add iPad support. I'd love to know why you prefer it at the top. Can you please elaborate, here or by email?
When I am reading a book, the chapter and title are at the top of the page.
Good point for the address/title bar. But would you also want the toolbar buttons at the top?
Yes, because I turn my book pages from the top right corner as well. :)
I see your point now :) Thanks for sharing!
Cause I read down the page, and I don't want there any text (adressbar where I prefer the full URL) to distract me.
Oh same for me :) Then you can setup the toolbar to hide on scroll: Settings → Display → Behavior on Scroll → Hide
Adblock? I've been hoping for an iOS browser with adblock that isn't bloated.
That's the next big feature on the todo list :)
Thanks for the post, this is very nice. While I am not switching browsers yet, this is looking very promising, and so far I love the direction you are taking with this.

Incidentally, discovered your reader app[0] thanks to this post, and it looks exactly like what I've been looking for for quite a while. And the fact that it is on macOS as well is a very welcome cherry on top.

0. https://apps.apple.com/us/app/quiche-reader/id1387881185

Haha that proves my reach has been extremely bad: I released the reader's v1 four years and half ago :) Thanks a lot though! I've got a few ideas on how to make the browser and reader work together smoothly.
To be fair, I am not sure it was your perceived lack of reach in my specific case. I simply got burned out on trying to use reader apps, given there are so many of them out there, all just not feeling quite right to me at the end of the day (similar to how there are bajillion different todo apps of all kinds and sizes).

So it isn't like i had some specific set of requirements that i was looking for in a reader app and was actively searching for it. It was more of a case of "i don't know what i actually want until i see it, and i gave up on actively searching for it". Tastefully opinionated defaults and workflows draw me in, can't argue with that.

Realistically, no matter how wide your reach could've been, I probably wouldn't have noticed the app unless I saw an HN thread about it like this one. That's a datapoint of one though.

Does the reader have dark mode? Or does that depend on the website’s implementation?
Not yet, but that's a feature I would like to bring to both apps for sure.
Any chance you could implement WebBLE capability?
Not in the immediate future, but I'm hoping Apple will add support into WebKit at some point, and I can just inherit from it.
Piece of feedback- the screenshots in the App Store look like fake iPhones (wrong shape) which (I believe) hurts the overall polish / trustworthiness of the app.

(After a quick browse in App Store) Splitwise and Feedly do this well. AllTrails is a bit more abstract but gets the shape right.

That's a very good point. That's a tradeoff I made to get some extra space inside those constrained landscape screenshots, but I will probably revert to actual device frames once I revert to portrait screenshots. Thanks for the great examples!
I wouldn’t bother changing it. IMO the average user won’t notice or even care.
I agree, and find it quite overstimulating too. I’m not even sure what it’s trying to show me.
Got it. I will try to make them more self explicit :)
Hi. Nice browser. Looking forward to daily drive this.

One thing that caught me off guard after using safari is swiping up the address bar doesn't bring up the tabs in this. Idk, I guess it's more intuitive that way.

Thanks for your feedback! Safari gestures do work very well and really became the benchmark on iOS. It may be a bit trickier to pull out in my case when the address bar is very narrow, and become less convenient to pull and drag around. I'll see what I can do :)
Missing this too. Swiping up feels much more natural than pressing a button. Similar to opening iOS multitasking - multitasking for web apps.
Great app!

I've noticed on iOS 17 beta the keyboard doesn't show when tapping the address bar once. Other than that, feels very nice to use.

Thank you very much! An adventurous friend on iOS 17 reported me that as well, but it seems Safari has the same problem as well? Anyhow I'll make sure it works well when the iOS 17 RC is released.
I've been wanting something like this for a long time: fullscreen with a full address bar available on scroll, reload button beside the address, full URL etc. Really really great job on this!

But unfortunately I'm already dependent on some Safari extensions, and the missing extensions seems to be the problem of all custom iOS browsers right now.

I'll still keep it for a few websites that don't have ads and I like to use in fullscreen. With all my hacks [0], I still can't install all the websites I need as PWAs

[0] https://notes.alinpanaitiu.com/Install%20any%20website%20as%...

Thank you very much for the nice words! Besides ad/content blockers, can I ask what are your must-have extensions?
(comment deleted)
1Password is a must have nowadays for me, which is why I couldn't use even Orion [0] which supposedly has support for both Chrome and Firefox extensions. I miss automatic password saving and instant 2FA autofill without the extension.

Mate Translate is another. The builtin translate feature of Safari is good but it supports very few languages.

The others are nice-to-haves, but I could live without:

    - uBlacklist: block websites from appearing in search results
    - Rekt: removes annoying "use our app" popups
    - Dark Reader: well-made dark mode for websites that don't support it
    - Super Agent: automatically accepts cookies and hides those cookie nags and popups
[0] https://browser.kagi.com/
Thanks a lot for sharing! I'm afraid I can't do much regarding automatic password saving until Apple extends support to third-party browsers, but I'll see if I can implement your nice-to-haves on my end!
1Password will support Orion with the next release (already available in nightly)
Ooh thanks for letting me know! I'll give it another try then.
I assume you need to use 1Password 8 in order for this to work? I "downgraded" (it felt much more like an upgrade) back to 1Password 7 and at the moment, I feel like I'd rather switch apps than go back to 1P8.
I love this. My number one ask is to add a context menu action to open an image in a new tab.
Adding to the todo list. Should not be too hard to implement :) Thanks for the suggestion!
Amazing! It’s a good differentiator also as this was removed in safari.
Dashlane seems compatible with the browser. As well as Omnivore. I want to be able to set Kagi as my primary search engine.

Also, the input fields seem to be wiped if I switch tabs.

I think I will try to switch for a while.

In theory the state of input fields is preserved, but maybe some websites mess up with that. Can you please share which website did you try with?
This website actually. :)
Hmmm I gave it a try and it does not work 100% of the time. I'll have a look. Thanks a lot, good catch! :)
Support for script-driven fullscreen mode is a big plus. You keep support for that and I will keep the browser.
Can you please elaborate what do you mean by "script-driven fullscreen mode"? Does any other iOS browser have such feature?
So the problem is that the "user gestures" break any JS that attempts to engage or disgage fullscreen on a video object.

Imagine!!! ...there eixsts an app that implements a playlist using video objects (.mp4s). This app will NOT be able to engage/disengage fullscreen in Chrome/Edge without some serious hacks.

Potential solution: - Simply implement a brower setting that enables/disables user-gestures for specific URL(s).

Edge error: Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user-gesture.

MDN Docs fullscreen link: - https://developer.mozilla.org/en-US/docs/Web/API/Element/req... MDN Docs user gesture link: - https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_A... MDN Docs gesture event link: - https://developer.mozilla.org/en-US/docs/Web/API/GestureEven... Stack Overflow Link: - https://stackoverflow.com/questions/27649264/run-chrome-in-f...

"Does any other iOS browser have such feature?" - Not to my knowledge?

Can you dig it?

Thanks for linking your app! While I'd love to try it, there's unfortunately an issue - it requires iOS 16.4 or later. I understand that this is a really minor/insignificant thing for 99%+ of users, but as someone on iOS 14/15 (iPad/phone), I can't use it :( Are there any iOS 16 specific APIs used, and/or does Apple prevent targeting older versions of iOS?

Btw I'd also recommend looking at Soul & Kiwi browser for android if anyone's interested, they're great too.

As an iOS dev, every year there are significant amounts of APIs that make doing your day to day job easier that you can't use if you don't stay on the latest, especially with actively developed ones like SwiftUI. So probably nothing needed specifically, but definitely something productive.
A few reasons below :)

- iOS 15 introduced a "proper" way to restore scroll position and page state. - iOS 16 introduced the super nice "expanded" font width, used in certain address bar setup. - iOS 16.4 fixed a bug where the address bar could not be properly attached to the keyboard.

That’s quite understandable, thanks!
Hi I like it very much, it reminds me of Firefox Focus (https://apps.apple.com/us/app/firefox-focus-privacy-browser/...). Please add optional toolbar buttons to force web page text size increase/decrease like in MacOS Safari. You can consider it an accesibility option for us older people with worsening eyesight. Thanks!
Hello and thanks for the great suggestion! May I ask if you would prefer having -/+ buttons in the toolbar, or in the menu instead?
I also support this issue. Love the browser, will switch as soon as I can increase font size!

Buttons in the menu are fine. Though some setting for a minimum font size might also be a good solution

Very well noted! Bumping that feature higher on my priority list then :) Thanks for the nice words.