It runs on Linux, Windows, and (experimental) Android Desktop.
The rendering engine is written in Java, and features parsers and layout algorithms written from scratch.
It is also embeddable, with pre-made embedding layers for Swing and Android Jetpack Compose.
Because the renderer is modular, though, it is also possible to port the renderer to other platforms.
GitHub repository: https://github.com/BuildABrowser/BuildABrowser
Demo Video: https://www.youtube.com/watch?v=xWF7YPIoks8 (edit: there's now also a video on the channel of submitting the post from BAB)
The browser has support for the following:
* Layouts: flow/flow-root, flex, grid, table, inline variants of all prior listed
- Note: subgrid is not supported. Some alignment properties present in flex are missing from grid.
- Note: Table only supports `table-layout: auto`, not fixed
* Positioning Schemes: static, relative, absolute, sticky, fixed* Floating and cleared elements
* CSS Combinators: Child, Descendant, Next-Sibling, Subsequent-Sibling
* CSS Selectors: ID, type, class, attribute
* CSS Pseudo-Classes/Elements: :hover, :link, :focus, :focus-within, :focus-visible, :has, :is, :not, :where, :first-child, :last-child, :only-child, :nth-child, :first-of-type, :last-of-type, :only-of-type, ::before, ::after
* CSS Functions: calc (and related functions), var
* CSS layers (the `@layer` at-rules)
* Media Queries: screen type, min/max-width/height media features
* Text selection, text fields, GET/POST forms, cycle focus via tab button, and fragment navigation
* (Linux) Support for A11Y via a fork of AccessKit (Experimental, enable with `-a11y accesskit`). Designed for Orca - other tools may not work.
* (Linux/Windows/fallback) Includes a utility to view a page's DOM tree
* (Linux/Windows) Skija (Skia) and Java2D graphics backends, HttpClient network backend
* (Android Desktop) android.graphics graphics backend, OkHttp network backend
Please note that BuildABrowser does not support JS at this time
Thanks to the browser not supporting paste, I had to retype all this... Hopefully it goes through.
Also, BAB spoofs the User-Agent on HN, please check Sec-CH-UA instead.