Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Experimental Servo browser built in HTML

Subscribe to updates I use browserhtml

Statistics on browserhtml

Number of watchers on Github 2631
Number of open issues 33
Average time to close an issue 7 days
Main language JavaScript
Average time to merge a PR 2 days
Open pull requests 25+
Closed pull requests 19+
Last commit almost 2 years ago
Repo Created almost 5 years ago
Repo Last Updated over 1 year ago
Size 36 MB
Organization / Authorbrowserhtml
Latest Release0.15.0
Page Updated
Do you use browserhtml? Leave a review!
View open issues (33)
View browserhtml activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating browserhtml for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

build slack


Browser.html is a research project aimed at building an experimental Servo browser in HTML. This project has 2 major pieces:

  • Graphene: a runtime for building native apps in HTML. It's currently in development and part of Servo.
  • Browser.html: an experimental browser UI for desktop.

This repository is for Browser.html (the front-end). Active development of Graphene happens in the Servo repository. Questions? Check out the FAQ.



We welcome contributions from anyone. See for help getting started.


There are two major components to the browser.html application.

  1. Local server that serves application UI.
  2. Client that is a application shell that connects to the server and renders served UI.


If you're working on the Browser.html front-end, you'll need Node.js to install all dependencies and run the development toolchain.

git clone
cd browserhtml
npm install --no-optional

Once all dependencies are installed, you can run the server component with the following command:

npm run build-server

Any changes to the source code will trigger a build, which is then automatically served. That will allow you to reload a client in order to see your changes. Alternatively you can use live-server to not only rebuild, but also trigger an automatic live code reload for the UI such that application state is preserved:

npm run live-server


In order to run the browser.html application itself, you will need a client component. This would be a Servo binary with the Graphene runtime. You can either download pre-built nightly snapshots or build it yourself and run with the --browserhtml flag. Assuming you have a pre-built snapshot in the default location on a Mac you can run the browser.html application with the following command:

 /Applications/ -b -w --pref dom.mozbrowser.enabled --pref dom.forcetouch.enabled --pref shell.builtin-key-shortcuts.enabled=false http://localhost:6060

Gecko Client

Browser.html can also be run on top of a Gecko-based version of Graphene. We used to use this variant to test and debug features that were not yet in Servo. You can either download pre-built nightly snapshots or build it yourself. Assuming you have a pre-built snapshot in default location on a Mac you can run the browser.html application with the following command:

/Applications/ --start-manifest=http://localhost:6060/manifest.webapp --profile ./.profile

Electron Client

Browser.html can also run as an Electron application. Assuming you have electron installed you can run the browser.html application with the following command (must be run from the project root):

electron .

Browser Client

You can also just load http://localhost:6060/ in your favourite web browser, but be aware that many features will not work because they require APIs not available to web content.

browserhtml open issues Ask a question     (View All Issues)
  • about 3 years Grid layout should match mental navigation map
  • about 3 years investigate rendering issue
  • about 3 years Include for `mozbrowseroverscroll` events
  • about 3 years Specification for scrolling through tabs when scrolling past page content
  • about 3 years Specification for providing information about hovered link
  • about 3 years Write specification for scrolling right past page content
  • about 3 years Get pixel data from content
  • about 3 years API for extracting data from the navigated site
  • about 3 years Swipe gestures
  • over 3 years Reformat code to follow standard
  • over 3 years Comply with standard JS style
  • over 3 years keybindings not working if iframe is focused
  • over 3 years Removing mozbrowser and creating new one with diff domain breaks UI
  • over 3 years Implement sidebar animation as a CSS transition.
  • over 3 years Implement zoom in / out animation with a CSS transition
  • over 3 years CMD+T should focus the input field in new tab page
  • over 3 years Paste from clipboard not working
  • over 3 years If you go back while page is loading, progressbar does not stops loading.
  • over 3 years Navigation buttons on mouse are ignored
  • over 3 years Show target URL on mouse hover
  • over 3 years Leaving pointer from title from the bottom leaves it hovered
  • over 3 years Indicate insecure connections instead of secure connections by default
  • over 3 years Implement better support/error reporting for file:// protocols
  • over 3 years When sidebar is pinned, the close button prevents clicking on the tab
  • over 3 years Window does not has rounded corners
  • over 3 years Handle theme-color updates even after first paint
  • over 3 years Consider supporting mozprivatebrowsing
  • over 3 years Rendering glitches during tab switch (crossfade) animation
  • over 3 years Simplify WebView/Navigation model
  • over 3 years Rename `Flags` to `Options`
browserhtml open pull requests (View All Pulls)
  • WIP history query engine implementation.
  • Draft implementation of transaction monitor.
  • Transition to ShowTabs on force touch
  • WIP move input, overlay and assistant into webview
  • Skip animation during fast tab switch.
  • WIP about:newtab input integration
  • Pass CLI args as Query args and disable chrome privileges
  • Change all uses of Task.future to Task.create
  • about:newtab page
  • UI for session record
  • (WIP) Issue reporter
  • URI to URL
  • Update tiles displayed on dashboard.
  • Add servo version to generated issue reports.
  • Add an identifying string to issue reports.
  • Optimize imports
  • Mass-reformat all JS files - WIP
  • Reformat [About/Newtab/Newtab/Wallpapers.js] to StandardJS Style (#1242)
  • Reformat [About/Newtab/Newtab/Wallpaper.js] to StandardJS Style (#1242)
  • Reformat [About/Newtab/Newtab/Tiles.js] to StandardJS Style (#1242)
  • Reformat [About/Newtab/Newtab/Tile.js] to StandardJS Style (#1242)
  • Reformat [About/Newtab] to StandardJS Style (#1242)
  • Readme fixes
  • First draft of header scroll implementation.
  • Make sure element is connected to DOM before element.setVisible()
browserhtml list of languages used
More projects by browserhtml View all
Other projects in JavaScript