Releases: apify/impit
impit-node@0.9.1
Bug Fixes
- Handle redirects/cookies in the JS layer (#375)
- Solves high-concurrency segmentation faults, processes cookies and handles redirects fully in JS instead of Rust.
impit-node@0.9.0
Changelog
All notable changes to this project will be documented in this file.
js-0.9.0 - 2026-01-29
Bug Fixes
-
Prevent double free on
Bufferby passing aBufferSlice(#369)- As a non-async function,
decode_bufferdoesn't require owning theBufferand can do with only aBufferSlice. This takes the cleanup responsibility fromnapi-rsand should prevent the double free scenarios, as theBufferis now Node runtime-managed.
- As a non-async function,
-
Use the
rustlsVerifier/CryptoProvidercache with custom fingerprints (#371)- Speeds up repeated client instantiation and lowers the memory footprint if the custom fingerprints are used. Related to #370
-
Call
adjust_external_memoryonImpitinstantiation (#372)- Large wrapped objects should
adjust_external_memoryto guide the native GC scheduler (docs). The size of 500kB is eyeballed (experiments show values around ~120kB), so this should give us enough leeway for the future.
- Large wrapped objects should
Features
-
Use rustls-platform-verifier for system CA support (#357)
- Replaces the static
webpki-rootsdependency withrustls-platform-verifierto enableimpitto rely on the operating system's trust store. ---------
- Replaces the static
-
Custom fingerprint support (#366)
- Extracts all fingerprinting logic (from e.g. the
rustlspatch) toimpit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
- Extracts all fingerprinting logic (from e.g. the
-
Add more Chrome and Firefox fingerprints (#367)
- Adds more browser fingerprints and passes these to the Node.JS and Python bindings.
impit-node@0.8.2
Bug Fixes
- Avoid excessive wait on a non-aborted
Response(#355)- Replaces the thread polling the
AbortSignalfor a channel.
- Replaces the thread polling the
impit-node@0.8.1
Changelog
All notable changes to this project will be documented in this file.
js-0.8.1 - 2026-01-09
Bug Fixes
js-0.8.0 - 2026-01-09
Bug Fixes
- Don't leak memory on failed requests (#350)
- Related to napi-rs/napi-rs#3086
Features
- Add support for JS
AbortSignal(#349)
js-0.7.6 - 2026-01-05
Bug Fixes
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Throw
Erroron invalid header value (do not panic) (#347)- Unparseable response header values now only return
Errorin the Node bindings instead of panicking and killing the process. Related to #344
- Unparseable response header values now only return
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ES...
- Lists the "named" exports from the
impit-node@0.8.0
Changelog
All notable changes to this project will be documented in this file.
js-0.8.0 - 2026-01-09
Bug Fixes
- Don't leak memory on failed requests (#350)
- Related to napi-rs/napi-rs#3086
Features
- Add support for JS
AbortSignal(#349)
js-0.7.6 - 2026-01-05
Bug Fixes
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Throw
Erroron invalid header value (do not panic) (#347)- Unparseable response header values now only return
Errorin the Node bindings instead of panicking and killing the process. Related to #344
- Unparseable response header values now only return
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error: ``` import { Impit } from "impit"; ^^^^^ SyntaxError: Named exp...
- Lists the "named" exports from the
impit-node@0.7.6
Changelog
All notable changes to this project will be documented in this file.
js-0.7.6 - 2026-01-05
Bug Fixes
-
Do not panic on missing attributes for encoding-related
metaelements (#346)- Ignores encoding-related
metaelements with missingcontentorcharsetattributes. Related to #344
- Ignores encoding-related
-
Throw
Erroron invalid header value (do not panic) (#347)- Unparseable response header values now only return
Errorin the Node bindings instead of panicking and killing the process. Related to #344
- Unparseable response header values now only return
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error: ``` import { Impit } from "impit"; ^^^^^ SyntaxError: Named export 'Impit' not found. The requested module 'impit' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example us...
- Lists the "named" exports from the
impit-node@0.7.5
Changelog
All notable changes to this project will be documented in this file.
js-0.7.5 - 2025-12-17
Bug Fixes
- Do not drop request-scoped options (
timeoutandforceHttp3) (#340)
js-0.7.4 - 2025-12-09
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
js-0.7.3 - 2025-12-03
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
js-0.7.2 - 2025-12-02
Bug Fixes
-
Raise Python exception on response body read error (#313)
- Originally, Python Impit bindings would return a response with an empty body on a body read error. This didn't make much sense and caused issues in the downstream dependencies. Now we rethrow the error so it can be properly handled. Closes apify/apify-sdk-python#672
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)
js-0.7.1 - 2025-11-11
Bug Fixes
- Align anonymous client API with httpx (#310)
js-0.7.0 - 2025-11-07
Features
- Align
Impit.fetchwithfetchinterface (#309)- Enables passing
RequestandURLinstances toImpit.fetch. Related to #227
- Enables passing
Refactor
- Introduce
ImpitRequeststruct for storing all request-related data (#307)- Refactors the
impit.make_requestmethod by splitting it intobuild_requestandsend. Prerequisite for the solution to #227 proposed in #227 (comment)
- Refactors the
js-0.6.1 - 2025-10-22
Bug Fixes
- Downgrade
napi-rstooling to fix random Windows hang ups (#296)
js-0.6.0 - 2025-10-16
Bug Fixes
-
Fallback to HTTP/2 on HTTP3 DNS error (#255)
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
Error, impit will returnfalsefor every call tohost_supports_h3(unless, e.g.alt-svcheader has been registered for this domain).
- Makes DNS client in HTTP/3 record resolution optional. If the initial connection fails with
-
Do not panic on constructor param errors (#285)
- Introduces better error handling for constructor parameter errors.
Features
-
Improve error typing for certain HTTP errors (#250)
- Improves error typing (mostly for Python version) on HTTP (network / server) errors and aligns the behaviour with HTTPX.
-
Add
local_addressoption toImpitconstructor (#225)- Adds a
local_addressoption to the Impit HTTP client constructor across all language bindings (Rust, Python, and Node.js), allowing users to bind the client to a specific network interface. This feature is useful for testing purposes or when working with multiple network interfaces.
- Adds a
-
Include error message in
ConnectError(#258)- Injects
causeto theConnectErrordisplay string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389
- Injects
js-0.5.4 - 2025-08-13
Bug Fixes
- Allow passing request body in all HTTP methods except
TRACE(#238)
js-0.5.3 - 2025-07-24
Bug Fixes
- Log correct timeout duration on
TimeoutException(#222)- Logs the default
Impit-instance-wide timeout if the request-specific timeout is missing.
- Logs the default
Refactor
- Improve thread safety, make
ImpitSync(#212)
js-0.5.2 - 2025-06-25
Features
- Client-scoped
headersoption (#200)- Adds
headerssetting toImpitconstructor to set headers to be included in every request made by the built [Impit] instance. This can be used to add e.g. custom user-agent or authorization headers that should be included in every request. These headers override the "impersonation" headers set by thewith_browsermethod. In turn, these are overridden by request-specificheaderssetting.
- Adds
js-0.5.1 - 2025-06-11
Bug Fixes
- Solve memory leak on response read (#191)
- Memory leak in
napi-rs's implementation ofReadableStreamwas causingimpitto leak small amounts of memory on response read (.text(),.json(),.bytes()etc.).
- Memory leak in
Features
- Support
socksproxy (#197)- Enables support for
socksproxies toimpit-node. This theoretically enablessocksproxies for CLI and the Python binding as well, but this behaviour is untested due to a lack of working socks proxy server implementations in Python.
- Enables support for
js-0.5.0 - 2025-05-29
Bug Fixes
- Support
nullrequest payload, don't modify options (#190)- Removes parameter reassignment code smell. Fixes errors on
null(or other nullish, but not expected) body.
- Removes parameter reassignment code smell. Fixes errors on
Features
- Support for custom cookie stores for Node.JS (#181)
- Adds
cookieJarconstructor parameter forImpitclass, acceptingtough-cookie'sCookieJar(or a custom implementation thereof, implementing at leastsetCookie(cookie: string, url: string)andgetCookieString(url: string)).impitwill write to and read from this custom cookie store. Related to #123
- Adds
js-0.4.7 - 2025-05-20
Features
- Add
resp.arrayBuffer, improve Node <22 compatibility (#188)- Adds new
response.arrayBuffermethod (MDN) and implementsresponse.bytesusingarrayBuffer()to improve compatibility with Node < 22 (.bytes()support was rather experimental until this version).
- Adds new
js-0.4.6 - 2025-05-16
Features
-
Add support for custom cookie store implementations (#179)
- Allows to pass custom cookie store implementations to the
ImpitBuilderstruct (using the newwith_cookie_storebuilder method). Without passing the store implementation,impitclient in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
- Allows to pass custom cookie store implementations to the
-
Show the underlying
reqwesterror on unrecognized error type (#183)- Improve error logs in bindings by tunneling the lower-level
reqwesterrors through to binding users.
- Improve error logs in bindings by tunneling the lower-level
js-0.4.5 - 2025-05-07
Bug Fixes
- Render helpful error message on import errors (#171)
- Wraps the original
napi-rsENOENTerror with a more descriptive error message. UnderstandsIMPIT_VERBOSEenvvar for printing the original error message.
- Wraps the original
js-0.4.2 - 2025-04-30
Features
-
Better errors (#150)
- Improves the error handling in
impitand both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as inhttpx.
- Improves the error handling in
-
Switch to
Vec<(String, String)>for request headers (#156)- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
RequestInit.headerstype in theimpit-nodebindings. Closes #151
- Allows sending multiple request headers of the same name across all bindings / tools. Broadens the
-
Accept more
request.bodytypes (matchfetchAPI) (#157)
js-0.4.0 - 2025-04-23
Bug Fixes
-
Set
response.text()return type tostring(#136)- The type definitions for
response.text()return type usedString(see capital S) instead ofstring(likefetchAPI does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
- The type definitions for
-
Do not publish ambient
const enums (#144)- Switches from exporting
const enums from the.d.tsfile (which is problematic) to exporting union types. Makes thebrowseroption accept lowercase browser names.
- Switches from exporting
Features
response.headersis aHeadersobject (#137)- Turns the
response.headersfrom aRecord<string, string>into aHeadersobject, matching the originalfetchAPI.
- Turns the
js-0.3.2 - 2025-04-15
Bug Fixes
-
response.encodingcontains the actual encoding (#119)- Parses the
content-typeheader for thecharsetparameter.
- Parses the
-
Case-insensitive request header deduplication (#127)
- Refactors and simplifies the custom header logic. Custom headers now override "impersonated" browser headers regardless on the (upper|lower)case.
Features
- Add
urlandcontentproperty forResponse, smart.textdecoding, options for redirects (#122)- Adds
url,encodingandcontentproperties forResponse. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------
- Adds
js-0.3.1 - 2025-03-28
Bug Fixes
- Bundle native binary in
linux-arm64packages (#100)- Followup to #94 , the
impit-linux-arm64-(gnu|musl)published packages didn't have the native binary included due to naming mismatch.
- Followup to #94 , the
js-0.3.0 - 2025-03-28
Features
- Use
thiserrorfor better error handling DX (#90)- Adds
std::error::Errorimplementation withthiserror. This should improve the developer experience and error messages across the monorepo.
- Adds
js-0.2.5 - 2025-02-25
Bug Fixes
- Enable ESM named imports from
impitpackages (#78)- Lists the "named" exports from the
impitpackage verbatim so they can be imported withtypescript import { Impit } from 'impit';from ESM packages without causing the following error:import { Impit } from "impit"; ^^^^^ SyntaxError: Named export 'Impit' not found. The requested module 'impit' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example using: import pkg from 'impit'; const { Impit } = pkg;
- Lists the "named" exports from the
js-0.2.4 - 2025-02-25
Bug Fixes
- Allow
impitusage from ESM (#74)- Renames native code import to mitigate naming collision with global
exports.
- Renames native code import to mitigate naming collision with global
js-0.2.3 - 2025-02-21
Bug Fixes
- Reenable HTTP/3 features in JS bindings (#57)
- Recent package updates might have broken the
http3feature in Node.JS bindings. This PR solves the underlying problems by bui...
- Recent package updates might have broken the
impit-node@0.7.4
Bug Fixes
- Authenticate with HTTPS proxy and HTTP target (#333)
- Propagates upstream fixes from
reqwest.
- Propagates upstream fixes from
impit-node@0.7.3
Features
- Enable
TRACEmethod in the bindings (#328)- Unifies all clients by enabling the
tracemethod in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.
- Unifies all clients by enabling the
impit-node@0.7.2
Bug Fixes
-
Treat unexpected EOF error as
RemoteProtocolError(#314)- Related to apify/apify-sdk-python#672
-
Proxy authenticates with empty password (#327)