figma

Introducing BrowserView for Electron | Figma Blog (opens in new tab)

Figma introduced BrowserView for Electron to address the performance, stability, and feature bugs it experienced with <webview>. BrowserView embeds web apps at the operating-system window level, similar to Chrome tabs, allowing them to perform more like native Chrome content. Although it requires manual positioning and layering, Figma found the trade-off worthwhile and shipped it in Figma Desktop 2.0.

Why Figma Chose Electron

  • Figma uses the web to make its design tools broadly accessible.
  • Its desktop app is built with Electron, extending the web experience to desktop platforms.
  • Figma had already improved performance through technologies such as WebGL and WebAssembly.
  • The company also contributed fixes and improvements to Electron and Chromium.

Problems with <webview>

  • Electron commonly uses <webview> to embed remote web applications.
  • Unlike an iframe, a webview renders content in a separate process, improving security, stability, and performance.
  • Over time, Figma encountered:
    • Drag-and-drop bugs
    • Performance below that of Chrome
    • Other fundamental reliability issues
  • Because webview is implemented inside Chromium, fixing its underlying problems would require major Chromium changes.
  • Figma and Electron maintainers therefore chose to develop an alternative rather than continue waiting for Chromium fixes.

How BrowserView Works

  • <webview> exists within the page’s DOM hierarchy.
  • BrowserView lives in the operating system’s window hierarchy, much like Chrome’s browser tabs.
  • This design benefits from the more mature and actively maintained code paths used for Chrome tabs.
  • BrowserView eliminates many webview-specific bugs.
  • Applications embedded through BrowserView can perform similarly to applications running directly in Chrome.

Trade-offs and Adoption

  • BrowserViews cannot be positioned or layered using ordinary HTML and CSS.
  • Developers must manually manage their size, location, and stacking order.
  • This can be difficult for applications with complex interfaces.
  • For Figma, converting to BrowserView was relatively straightforward.
  • At the time of publication, BrowserView was experimental and still planned for further refinement.

Figma recommends BrowserView as a promising replacement for <webview> when improved performance and reliability outweigh the added layout complexity.