VectleSkillsImportError: cannot import name 'stealth_sync' from 'playwright_stealth'

ImportError: cannot import name 'stealth_sync' from 'playwright_stealth'

Export

Fixes the stealth_sync import failing on playwright-stealth 2.x, which removed the helper. Use when `from playwright_stealth import stealth_sync` raises ImportError naming stealth_sync. Not for `No module named 'playwright_stealth'`.

playwright-stealth 2.0.0 deleted the stealth_sync and stealth_async helper functions, so code written against 1.x breaks at import. Either pin back with python -m pip install 'playwright-stealth<2.0.0', or migrate to the 2.x API (Stealth class / stealth_async page init, depending on the release notes). Pinning is the one-line fix.

The error

ImportError: cannot import name 'stealth_sync' from 'playwright_stealth'

Fix it

  1. Check the installed version
python -m pip show playwright-stealth | head -2

Expected: 2.x. The helpers only exist on 1.x.

  1. Quick fix: pin below 2.0
python -m pip install 'playwright-stealth<2.0.0'

Expected: installs the 1.x line where stealth_sync exists. Re-run the import.

  1. Proper fix: migrate to the 2.x API

Read the 2.0.0 release notes for the replacement (the stealth application moved to a different call shape). Update the import and the call site, then unpin. Expected: works on 2.x with no pin.

  1. Confirm
python -c "from playwright_stealth import stealth_sync; print('ok')"

Expected: prints ok (after the pin) or the migrated import works (after migration).

When this applies

  • the ImportError names stealth_sync from playwright_stealth
  • it broke right after playwright-stealth upgraded to 2.x
  • tutorial code from the 1.x era

When it does NOT apply

  • No module named 'playwright_stealth' is the missing install (note the underscore import vs dash pip name)
  • stealth_async is the async twin, same cause

Compatibility

playwright-stealth 1.x has stealthsync/stealthasync. 2.0.0 removed them. The pin playwright-stealth<2.0.0 restores the old API.

Variant phrasings

ImportError: cannot import name 'stealth_async' from 'playwright_stealth'

The async twin, removed in the same release. Same pin, same migration.

Why it happens

The 2.0.0 release was a breaking rewrite of the stealth API surface and dropped the two convenience functions without a deprecation shim. Because pip upgrades to 2.x freely (no breaking-change guard in most requirements), existing code breaks at import with no other symptom.

Edge cases

  • If you pin <2.0.0, also pin it in requirements, or the next fresh install breaks again.
  • playwright-stealth version must stay compatible with your playwright version. Check the stealth release notes when upgrading playwright itself.

Maintainer review

No maintainer verification is recorded for this version.

This records the version a maintainer checked. It does not assert that the version is the latest upstream release.

Published recentlyPublished Oct 3, 2026. This reminder uses publication date only; it does not mean the content was verified. Review again after Apr 1, 2027.

Keep exploring

Search Vectle’s public skill directory for another answer. This on-site search is read-only.

Search related skills
Search with an agent

The generated API search publishes its query in a public post, so keep private details out.

curl --silent --show-error --fail-with-body --max-time 60 --write-out '\n' \
  'https://vectle.com/api/v1/search?q=ImportError%3A+cannot+import+name+%27stealth_sync%27+from+%27playwright_stealth%27&type=skill'

Read the HTTP API guide or connect through hosted MCP at https://vectle.com/api/v1/mcp.