v4.0.0
4.0.0 (2026-07-20)
π Features
- Expose missing platform env vars via Actor.get_env() (#984) (f6e9b3b) by @vdusek
- Re-export apify-client errors from apify.errors (#990) (165a3f6) by @vdusek
π Bug Fixes
- scrapy: Correct proxy middleware exception log and import (#953) (5bd6eb9) by @vdusek
- scrapy: Skip a request that fails to convert instead of crashing the run (#952) (db9444f) by @vdusek
- scrapy: [breaking] Serialize requests and HTTP cache as JSON instead of pickle (#951) (a87e8d1) by @vdusek
- scrapy: Make logging configuration idempotent (#954) (2cc5602) by @vdusek
- Bump typing-extensions floor to 4.4.0 (#960) (b7e7d9c) by @vdusek
- Preserve decorated symbol types in docs_group and docs_name (#964) (6c359a7) by @vdusek
- Exit already-entered contexts when Actor or event manager init fails (#969) (c1a15a7) by @vdusek
- scrapy: Dump pydantic models in JSON mode when serializing requests (#961) (f2ccae1) by @vdusek
- Accept arbitrary JSON userData in ApifyRequestList (#966) (2cfd8a5) by @vdusek
- Coerce null stats in Apify request queue metadata (#974) (63eb771) by @vdusek
- Allow Actor.reboot() to be retried after a failed or cancelled attempt (#968) (7d46ec5) by @vdusek
- Correct reclaim_request count adjustment for already-handled requests (#973) (86f4cd5) by @vdusek
- scrapy: Drop deprecated spider arg from Scrapy proxy middleware methods (#977) (49dd836) by @vdusek
- Redirect input key in all file-system key-value store operations (#976) (1fbdce2) by @vdusek
- Respect explicit zero custom_after_sleep in metamorph and reboot (#971) (e8cda0a) by @vdusek
- Reconnect to platform events websocket after connection drop (#967) (5653a22) by @vdusek
- Forward all
Webhookfields to ad-hoc webhooks (#963) (726620b) by @vdusek - scrapy: Avoid mutating request userData during Scrapy-Apify conversion (#978) (b0b7df7) by @vdusek
- scrapy: Async-thread startup race, shutdown lifecycle, and timeout setting (#979) (ae12935) by @vdusek
- Commit request queue dedup cache only after batch_add_requests succeeds (#975) (078ab87) by @vdusek
- Prevent request queue softlock by adding
is_finishedand correctingis_empty(#1008) (4ead0c6) by @Mantisus - [breaking] Honor explicit exit codes and control-flow signals in Actor exit (#1048) (573e3a3) by @vdusek
- Limit timeout to minimum of 1 seconds when timeout='inherit' (#1051) (54e52e6) by @Pijukatel
- Don't disable Actor exit_process just because scrapy is importable (#1049) (9d154ae) by @vdusek
π Refactor
- [breaking] Remove deprecated APIs (#918) (3e5728d) by @vdusek
- [breaking] Mark secondary arguments as keyword-only (#917) (eb94c99) by @vdusek
- [breaking] Adapt to apify-client v3 (#719) (10203bc) by @vdusek
- [breaking] Remove wait_for_finish from Actor.start (#962) (0daca28) by @vdusek
- [breaking] Polish logging across the codebase (#1005) (f949c24) by @vdusek
- [breaking] Remove unused disable_outdated_warning and fact Configuration fields (#1044) (275e770) by @Pijukatel
β‘ Performance
βοΈ Miscellaneous Tasks
Fetched July 20, 2026


