Show HN: I made a customizable iOS browser for minimalists and myself (apps.apple.com)
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 ] threadI 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.
For YouTube you can rewrite to an invidious instance. No ads.
https://yewtu.be is one example.
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.
Can you share which extensions you are using with Safari?
Banish
Dark Knight
1Blocker Scripts
StopTheMadness
The last two are essential for me, can live without the others.
Any chance you're planning on adding tab groups?
This is my number one frustration with existing iOS browsers - when I come back to tabs without an internet connection everything is gone.
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??
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 :)
Congratulations on launching!
Is there any way I can keep updated if that ever happens?
Again - great job with with the OP's browser. Android is just so much customizable to begin with, IMHO.
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.
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 was genuinely surprised to find no other mention of the engine restrictions in the comments though!
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.
Never liked it down blow.
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
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.
(After a quick browse in App Store) Splitwise and Feedly do this well. AllTrails is a bit more abstract but gets the shape right.
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.
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.
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%...
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:
[0] https://browser.kagi.com/Also, the input fields seem to be wiped if I switch tabs.
I think I will try to switch for a while.
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?
Btw I'd also recommend looking at Soul & Kiwi browser for android if anyone's interested, they're great too.
- 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.
Buttons in the menu are fine. Though some setting for a minimum font size might also be a good solution