ImportError: cannot import name 'stealth_sync' from 'playwright_stealth'
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
- Check the installed version
python -m pip show playwright-stealth | head -2Expected: 2.x. The helpers only exist on 1.x.
- 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.
- 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.
- 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_syncfromplaywright_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_asyncis 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.