The Start
I’m someone who really enjoys trying out new software and products. Because of that, I’ve already seen and tested quite a few things. That’s how I also ended up trying out different browsers. For a while, I wasn’t fully happy with the standard browsers, because they were missing important features for me — like workspaces and syncing tabs across multiple devices. After testing several options, I decided to build my own browser. It should be minimalistic, but still include the features I need.
The Search for the Right Framework
I searched online to find out how to build a relatively secure browser as quickly as possible. I came across several options. However, there were only two real ways to properly carry out the project:
1. QT
QT is a cross-platform framework for developing desktop and mobile apps. I read that it has a module called QtWebEngine. This module provides a complete web browser and is based on Chrome. That sounded like the perfect starting point.
2. Electron
With Electron, you can create desktop applications using web technologies like HTML, CSS, and JavaScript. Electron offers a tag that can be used to display websites, and it basically acts like a Chrome browser. However, it’s not really made for building browsers and uses a lot of performance because of Electron itself.
The Decision
At first, I decided to go with QT, because using C++ gave me more control over my browser, and the performance was expected to be much better. However, I hadn’t worked much with C++ before, so it was a bit of an adjustment. Working with pointers and some other complicated things isn’t really an issue anymore in more modern programming languages.
After a few weeks, I finished my first prototype. I especially struggled with pointers in some parts. For some reason, variables weren’t available during runtime, which caused the browser to crash. But with some patience, I got it working.
Now I had a prototype with workspaces and tabs. I had also started developing tab synchronization, and at least the basics were already working.

The Big Problem
While properly testing some websites, I noticed a problem. On certain sites, the hover effects on buttons and divs didn’t work. These websites worked normally in other browsers — but not in mine.
After doing a lot of research, I found the cause of the issue: the QtWebEngine module uses an outdated version of Chromium, which still has this problem.
I tried to fix it with workarounds, but unfortunately, the issue still remains.
New Hope
It was hard, but I had to say goodbye to my QT browser. I had worked on it as a hobby for about three months. That definitely hurt.
But I didn’t want to give up on the browser project. So I switched to using Electron. The progress was much faster than before — probably because I come from the web development world and already have a good understanding of it.
Within one month, I built a prototype similar to the one from my QT project. Right now, I’m working on workspace and tab synchronization, and I should be finished with that in the next few days.
I even built my own dashboard website, where users can define and add their own bookmarks and widgets. The dashboard was especially important to me — minimalistic, but still functional and clear. That’s exactly what I wanted.
Unfortunately, security is still something I need to focus on. Electron can have some security issues, which could allow websites to cause problems.
I really hope I can solve the security part in the next few weeks. To be honest, I’m hoping I’ll be able to fully switch to using my own browser soon. I’ve been wishing for that for weeks now :D

This article is just an excerpt. You can read the full article here:
Medium