Blink stays for layout and paint. The browser, V8 and Node are gone; JavaScript is compiled ahead of time. An Electron app runs from its own source.
$ → dist/balenaEtcher.app 73 MB · one process $ → dist/balenaEtcher.dmg 35 MB
balena Etcher as Electron ships it, and balena Etcher as Attar builds it from the same source. Medians; lower is better.
The same app, to one scale. Hover a part.
A real Chromium fork. Blink stays and runs your app; the browser around it does not ship.
Anything the compiler cannot prove is a build error, not a silent guess.
Explore support across Attar, Attar AOT and Attar Electron: HTML, CSS, JavaScript, React and desktop APIs. Each feature has a scope note and an assessment date.
Support applies to the scope in each feature’s note. Counts are not completion percentages or a certification of the current release.
Size and speed are consequences. The product is knowing exactly what remains, why, and what it cannot do.
balena Etcher, rebuilt by Attar from its own source, driven through the same user journeys as the Electron original.
No eval, no runtime HTML parser, no markup from the network. Not mitigated; missing from the file.
React-shaped components, HTML and CSS, typed TSX. Or an existing Electron app, as is.
export function Counter() { const [n, setN] = useState(0) return ( <button class="tally" onClick={() => setN(n + 1)}> pressed {n} times </button> ) }
.tally { font: 600 15px/1 system-ui; padding: 10px 16px; border-radius: 8px; background: #ffb23e; color: #1a1206; } .tally:active { transform: scale(.97); }
Boundaries are explicit. What Attar can't prove in a closed world is a compile error that names the reason.
One method: keep the giant as the source of truth, move it out of runtime and into the build.
No public install yet. Early access opens in small groups while the first product ships. Leave an address; we write once, when it is your turn.