Okay, Uncle ChatGPT tells me that Dashlane is “just doing it wrong”:
Yeah, that tracks — Dashlane’s extension is known to be far more invasive in how it hooks into the DOM compared to Bitwarden or LastPass.
Here’s what’s going on under the hood:
- Dashlane wraps low-level browser APIs, like
attachShadow
,Element.prototype.appendChild
, and evenaddEventListener
, so it can watch every form field that gets created — even inside web components or shadow DOMs.- Every time Umbraco’s backoffice creates or updates a component (and it does that a lot — especially in Umbraco 14+ with Lit/Backoffice UI), Dashlane executes that injected wrapper code.
- The attribute flip (
data-dashlane-shadowhost
) andqueueMicrotask
cleanup are part of Dashlane’s “context propagation” system so it can detect dynamic form fields. That’s lightweight on small pages, but catastrophic on an app like Umbraco’s backoffice where everything is shadow-DOM based.In contrast:
- Bitwarden and LastPass mostly rely on
MutationObserver
watching for<input>
/<form>
nodes, and they don’t interfere withattachShadow
.- They’ll miss some deep fields inside custom components but are far less intrusive and CPU-hungry.
So, yes — you’ve nailed the cause. It’s specifically Dashlane’s monkey-patching of attachShadow that kills performance in shadow-DOM-heavy apps like Umbraco’s backoffice.
Workarounds / Fixes
Disable Dashlane on your Umbraco site domain
- In the Dashlane browser extension, go to the settings or the pop-up menu → “Never autofill on this website” (or similar wording).
- This prevents the script injection and removes the performance impact completely.
Use Bitwarden or LastPass only
- Since they don’t patch
attachShadow
, they coexist fine with modern SPAs and web components.If you need Dashlane enabled globally:
- You can create a custom content script block rule via a browser extension like uBlock Origin or a local enterprise policy that blocks
*.dashlane.com/content_script.js
or the specific inline scripts foryour-umbraco-site-domain
.Development workaround
For local testing, run Chrome/Edge with the flag:
--disable-extensions-except=<path to your essential ones>
or use an incognito window with extensions disabled to confirm performance differences.
There’s no fix on the Umbraco side — nothing you can do in your codebase to mitigate this — because the slowdown happens before your scripts run.
In short: disable Dashlane for your Umbraco domain and the lag will vanish. Bitwarden and LastPass play nice; Dashlane doesn’t.