(../_pwa/chrome/manifest.json) (https://www.gstatic.com/) (https://fonts.googleapis.com/) (https://www.google-analytics.com/) (../../fonts.googleapis.com/css@family=Google+Sans%253A400,500%257CRoboto%253A400,400italic,500,500italic,700,700italic%257CRoboto+Mono%253A400,500,700&display=swap.css) (../../fonts.googleapis.com/css2@family=Material+Icons&family=Material+Symbols+Outlined&display=block.css) (../../www.gstatic.com/devrel-devsite/prod/v5a0f9ff8b593048661361a49e11ab98a8b1ac025e19e60e6189f2b56796f8a43/chrome/css/app.css) (../../www.gstatic.com/devrel-devsite/prod/v5a0f9ff8b593048661361a49e11ab98a8b1ac025e19e60e6189f2b56796f8a43/chrome/css/dark-theme.css) (../../www.gstatic.com/devrel-devsite/prod/v5a0f9ff8b593048661361a49e11ab98a8b1ac025e19e60e6189f2b56796f8a43/chrome/images/favicon.png) (https://www.gstatic.com/devrel-devsite/prod/v5a0f9ff8b593048661361a49e11ab98a8b1ac025e19e60e6189f2b56796f8a43/chrome/images/touchicon-180.png) (html-in-canvas-origin-trial.html) (Chrome for Developers) (https://developer.chrome.com/s/opensearch.xml) (html-in-canvas-origin-trial.html) (html-in-canvas-origin-trial.html) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=ar) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=bn) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=zh-cn) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=zh-tw) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=nl) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=fa) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=fr) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=de) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=he) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=hi) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=id) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=it) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=ja) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=ko) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=pl) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=pt-br) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=ru) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=es-419) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=th) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=tr) (https://developer.chrome.com/blog/html-in-canvas-origin-trial?hl=vi) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=ar) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=bn) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=zh-cn) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=zh-tw) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=nl) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=fa) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=fr) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=de) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=he) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=hi) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=id) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=it) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=ja) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=ko) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=pl) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=pt-br) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=ru) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=es-419) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=th) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=tr) (https://developer.chrome.google.cn/blog/html-in-canvas-origin-trial?hl=vi) Introducing the HTML-in-Canvas API origin trial | Blog | Chrome for Developers (image/thumbnail.png) (html-in-canvas-origin-trial.html#main-content) Skip to main content (https://developer.chrome.com/) (Chrome for Developers) (https://developer.chrome.com/docs) Docs Build with Chrome Learn how Chrome works, participate in origin trials, and build with Chrome everywhere. (https://developer.chrome.com/docs/web-platform) Web Platform (https://developer.chrome.com/docs/iwa) Isolated Web Apps (IWA) (https://developer.chrome.com/docs/capabilities) Capabilities (https://developer.chrome.com/docs/automation-and-testing) Automation and testing (https://developer.chrome.com/docs/chromedriver) ChromeDriver (https://developer.chrome.com/docs/extensions) Extensions (https://developer.chrome.com/docs/webstore) Chrome Web Store (https://developer.chrome.com/docs/chromium) Chromium (https://developer.chrome.com/docs/android) Web on Android (https://developer.chrome.com/origintrials/) Origin trials (https://developer.chrome.com/release-notes) Release notes Productivity Create the best experience for your users with the web's best tools. (https://developer.chrome.com/docs/devtools) DevTools (https://developer.chrome.com/docs/lighthouse) Lighthouse (https://developer.chrome.com/docs/crux) Chrome UX Report (https://developer.chrome.com/docs/accessibility) Accessibility (https://developer.chrome.com/docs/modern-web-guidance) Modern Web Guidance Get things done quicker and neater, with our ready-made libraries. (https://developer.chrome.com/docs/workbox) Workbox (https://developer.chrome.com/docs/puppeteer) Puppeteer Experience Design a beautiful and performant web with Chrome. (https://developer.chrome.com/docs/ai) AI (https://developer.chrome.com/docs/performance) Performance (https://developer.chrome.com/docs/css-ui) CSS and UI (https://developer.chrome.com/docs/identity) Identity (https://developer.chrome.com/docs/payments) Payments (https://developer.chrome.com/docs/privacy-security) Privacy and security (https://developer.chrome.com/docs/ads) Ads Resources More from Chrome and Google. (https://developer.chrome.com/docs) All documentation (https://web.dev/baseline) Baseline open_in_new (https://web.dev) web.dev open_in_new (https://pagespeed.web.dev) PageSpeed Insights audit open_in_new (https://developer.chrome.com/case-studies) Case studies (https://developer.chrome.com/blog) Blog (https://developer.chrome.com/new) New in Chrome (Search) () / English Deutsch Español – América Latina Français Indonesia Italiano Nederlands Polski Português – Brasil Tiếng Việt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어 Sign in (https://developer.chrome.com/blog) Blog (Filter) (https://developer.chrome.com/) (Chrome for Developers) (https://developer.chrome.com/docs) Docs More (https://developer.chrome.com/case-studies) Case studies (https://developer.chrome.com/blog) Blog (https://developer.chrome.com/new) New in Chrome Build with Chrome (https://developer.chrome.com/docs/web-platform) Web Platform (https://developer.chrome.com/docs/iwa) Isolated Web Apps (IWA) (https://developer.chrome.com/docs/capabilities) Capabilities (https://developer.chrome.com/docs/automation-and-testing) Automation and testing (https://developer.chrome.com/docs/chromedriver) ChromeDriver (https://developer.chrome.com/docs/extensions) Extensions (https://developer.chrome.com/docs/webstore) Chrome Web Store (https://developer.chrome.com/docs/chromium) Chromium (https://developer.chrome.com/docs/android) Web on Android (https://developer.chrome.com/origintrials/) Origin trials (https://developer.chrome.com/release-notes) Release notes Productivity (https://developer.chrome.com/docs/devtools) DevTools (https://developer.chrome.com/docs/lighthouse) Lighthouse (https://developer.chrome.com/docs/crux) Chrome UX Report (https://developer.chrome.com/docs/accessibility) Accessibility (https://developer.chrome.com/docs/modern-web-guidance) Modern Web Guidance (https://developer.chrome.com/docs/workbox) Workbox (https://developer.chrome.com/docs/puppeteer) Puppeteer Experience (https://developer.chrome.com/docs/ai) AI (https://developer.chrome.com/docs/performance) Performance (https://developer.chrome.com/docs/css-ui) CSS and UI (https://developer.chrome.com/docs/identity) Identity (https://developer.chrome.com/docs/payments) Payments (https://developer.chrome.com/docs/privacy-security) Privacy and security (https://developer.chrome.com/docs/ads) Ads Resources (https://developer.chrome.com/docs) All documentation (https://web.dev/baseline) Baseline open_in_new (https://web.dev) web.dev open_in_new (https://pagespeed.web.dev) PageSpeed Insights audit open_in_new (https://developer.chrome.com/) Chrome for Developers (https://developer.chrome.com/blog) Blog Introducing the HTML-in-Canvas API origin trial Stay organized with collections Save and categorize content based on your preferences. (Thomas Nattestad) Thomas Nattestad (https://twitter.com/fractorious) X (Natalia Markoborodova) Natalia Markoborodova (https://twitter.com/nmarkoborodova) X (https://github.com/ewewraw) GitHub (https://www.linkedin.com/in/natalia-markoborodova) LinkedIn (https://bsky.app/profile/nmarkoborodova.bsky.social) Bluesky For years, web developers have had to make a tough architectural choice when building complex, highly-interactive visual applications on the web/ Should you lean on the DOM for its rich semantic features or render directly to the