Skip to content

Releases: apify/impit

impit-node@0.9.1

02 Feb 13:29

Choose a tag to compare

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

29 Jan 15:50

Choose a tag to compare

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 Buffer by passing a BufferSlice (#369)

    • As a non-async function, decode_buffer doesn't require owning the Buffer and can do with only a BufferSlice. This takes the cleanup responsibility from napi-rs and should prevent the double free scenarios, as the Buffer is now Node runtime-managed.
  • Use the rustls Verifier / CryptoProvider cache 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_memory on Impit instantiation (#372)

    • Large wrapped objects should adjust_external_memory to 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.

Features

  • Use rustls-platform-verifier for system CA support (#357)

    • Replaces the static webpki-roots dependency with rustls-platform-verifier to enable impit to rely on the operating system's trust store. ---------
  • Custom fingerprint support (#366)

    • Extracts all fingerprinting logic (from e.g. the rustls patch) to impit. Prepares the codebase for new, non-hardcoded browser fingerprints. Related to #99
  • 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

12 Jan 08:37

Choose a tag to compare

Bug Fixes

  • Avoid excessive wait on a non-aborted Response (#355)
    • Replaces the thread polling the AbortSignal for a channel.

impit-node@0.8.1

09 Jan 15:18

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

js-0.8.1 - 2026-01-09

Bug Fixes

  • Add signal to the RequestInit type (#351)
    • Fixes an omission from #349

js-0.8.0 - 2026-01-09

Bug Fixes

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 meta elements (#346)

    • Ignores encoding-related meta elements with missing content or charset attributes. Related to #344
  • Throw Error on invalid header value (do not panic) (#347)

    • Unparseable response header values now only return Error in the Node bindings instead of panicking and killing the process. Related to #344

js-0.7.5 - 2025-12-17

Bug Fixes

  • Do not drop request-scoped options (timeout and forceHttp3) (#340)

js-0.7.4 - 2025-12-09

Bug Fixes

  • Authenticate with HTTPS proxy and HTTP target (#333)
    • Propagates upstream fixes from reqwest.

js-0.7.3 - 2025-12-03

Features

  • Enable TRACE method in the bindings (#328)
    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.

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)

  • 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.fetch with fetch interface (#309)
    • Enables passing Request and URL instances to Impit.fetch. Related to #227

Refactor

  • Introduce ImpitRequest struct for storing all request-related data (#307)
    • Refactors the impit.make_request method by splitting it into build_request and send. Prerequisite for the solution to #227 proposed in #227 (comment)

js-0.6.1 - 2025-10-22

Bug Fixes

  • Downgrade napi-rs tooling 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 return false for every call to host_supports_h3 (unless, e.g. alt-svc header has been registered for this domain).
  • 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_address option to Impit constructor (#225)

    • Adds a local_address option 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.
  • Include error message in ConnectError (#258)

    • Injects cause to the ConnectError display string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389

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.

Refactor

  • Improve thread safety, make Impit Sync (#212)

js-0.5.2 - 2025-06-25

Features

  • Client-scoped headers option (#200)
    • Adds headers setting to Impit constructor 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 the with_browser method. In turn, these are overridden by request-specific headers setting.

js-0.5.1 - 2025-06-11

Bug Fixes

  • Solve memory leak on response read (#191)
    • Memory leak in napi-rs's implementation of ReadableStream was causing impit to leak small amounts of memory on response read (.text(), .json(), .bytes() etc.).

Features

  • Support socks proxy (#197)
    • Enables support for socks proxies to impit-node. This theoretically enables socks proxies 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.

js-0.5.0 - 2025-05-29

Bug Fixes

  • Support null request payload, don't modify options (#190)
    • Removes parameter reassignment code smell. Fixes errors on null (or other nullish, but not expected) body.

Features

  • Support for custom cookie stores for Node.JS (#181)
    • Adds cookieJar constructor parameter for Impit class, accepting tough-cookie's CookieJar (or a custom implementation thereof, implementing at least setCookie(cookie: string, url: string) and getCookieString(url: string)). impit will write to and read from this custom cookie store. Related to #123

js-0.4.7 - 2025-05-20

Features

  • Add resp.arrayBuffer, improve Node <22 compatibility (#188)
    • Adds new response.arrayBuffer method (MDN) and implements response.bytes using arrayBuffer() to improve compatibility with Node < 22 (.bytes() support was rather experimental until this version).

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 ImpitBuilder struct (using the new with_cookie_store builder method). Without passing the store implementation, impit client in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
  • Show the underlying reqwest error on unrecognized error type (#183)

    • Improve error logs in bindings by tunneling the lower-level reqwest errors through to binding users.

js-0.4.5 - 2025-05-07

Bug Fixes

  • Render helpful error message on import errors (#171)
    • Wraps the original napi-rs ENOENT error with a more descriptive error message. Understands IMPIT_VERBOSE envvar for printing the original error message.

js-0.4.2 - 2025-04-30

Features

  • Better errors (#150)

    • Improves the error handling in impit and both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as in httpx.
  • 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.headers type in the impit-node bindings. Closes #151
  • Accept more request.body types (match fetch API) (#157)

js-0.4.0 - 2025-04-23

Bug Fixes

  • Set response.text() return type to string (#136)

    • The type definitions for response.text() return type used String (see capital S) instead of string (like fetch API does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
  • Do not publish ambient const enums (#144)

    • Switches from exporting const enums from the .d.ts file (which is problematic) to exporting union types. Makes the browser option accept lowercase browser names.

Features

  • response.headers is a Headers object (#137)
    • Turns the response.headers from a Record<string, string> into a Headers object, matching the original fetch API.

js-0.3.2 - 2025-04-15

Bug Fixes

  • response.encoding contains the actual encoding (#119)

    • Parses the content-type header for the charset parameter.
  • 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 url and content property for Response, smart .text decoding, options for redirects (#122)
    • Adds url, encoding and content properties for Response. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------

js-0.3.1 - 2025-03-28

Bug Fixes

  • Bundle native binary in linux-arm64 packages (#100)
    • Followup to #94 , the impit-linux-arm64-(gnu|musl) published packages didn't have the native binary included due to naming mismatch.

js-0.3.0 - 2025-03-28

Features

  • Use thiserror for better error handling DX (#90)
    • Adds std::error::Error implementation with thiserror. This should improve the developer experience and error messages across the monorepo.

js-0.2.5 - 2025-02-25

Bug Fixes

  • Enable ESM named imports from impit packages (#78)
    • Lists the "named" exports from the impit package verbatim so they can be imported with typescript import { Impit } from 'impit'; from ES...
Read more

impit-node@0.8.0

09 Jan 14:07

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

js-0.8.0 - 2026-01-09

Bug Fixes

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 meta elements (#346)

    • Ignores encoding-related meta elements with missing content or charset attributes. Related to #344
  • Throw Error on invalid header value (do not panic) (#347)

    • Unparseable response header values now only return Error in the Node bindings instead of panicking and killing the process. Related to #344

js-0.7.5 - 2025-12-17

Bug Fixes

  • Do not drop request-scoped options (timeout and forceHttp3) (#340)

js-0.7.4 - 2025-12-09

Bug Fixes

  • Authenticate with HTTPS proxy and HTTP target (#333)
    • Propagates upstream fixes from reqwest.

js-0.7.3 - 2025-12-03

Features

  • Enable TRACE method in the bindings (#328)
    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.

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)

  • 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.fetch with fetch interface (#309)
    • Enables passing Request and URL instances to Impit.fetch. Related to #227

Refactor

  • Introduce ImpitRequest struct for storing all request-related data (#307)
    • Refactors the impit.make_request method by splitting it into build_request and send. Prerequisite for the solution to #227 proposed in #227 (comment)

js-0.6.1 - 2025-10-22

Bug Fixes

  • Downgrade napi-rs tooling 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 return false for every call to host_supports_h3 (unless, e.g. alt-svc header has been registered for this domain).
  • 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_address option to Impit constructor (#225)

    • Adds a local_address option 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.
  • Include error message in ConnectError (#258)

    • Injects cause to the ConnectError display string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389

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.

Refactor

  • Improve thread safety, make Impit Sync (#212)

js-0.5.2 - 2025-06-25

Features

  • Client-scoped headers option (#200)
    • Adds headers setting to Impit constructor 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 the with_browser method. In turn, these are overridden by request-specific headers setting.

js-0.5.1 - 2025-06-11

Bug Fixes

  • Solve memory leak on response read (#191)
    • Memory leak in napi-rs's implementation of ReadableStream was causing impit to leak small amounts of memory on response read (.text(), .json(), .bytes() etc.).

Features

  • Support socks proxy (#197)
    • Enables support for socks proxies to impit-node. This theoretically enables socks proxies 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.

js-0.5.0 - 2025-05-29

Bug Fixes

  • Support null request payload, don't modify options (#190)
    • Removes parameter reassignment code smell. Fixes errors on null (or other nullish, but not expected) body.

Features

  • Support for custom cookie stores for Node.JS (#181)
    • Adds cookieJar constructor parameter for Impit class, accepting tough-cookie's CookieJar (or a custom implementation thereof, implementing at least setCookie(cookie: string, url: string) and getCookieString(url: string)). impit will write to and read from this custom cookie store. Related to #123

js-0.4.7 - 2025-05-20

Features

  • Add resp.arrayBuffer, improve Node <22 compatibility (#188)
    • Adds new response.arrayBuffer method (MDN) and implements response.bytes using arrayBuffer() to improve compatibility with Node < 22 (.bytes() support was rather experimental until this version).

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 ImpitBuilder struct (using the new with_cookie_store builder method). Without passing the store implementation, impit client in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
  • Show the underlying reqwest error on unrecognized error type (#183)

    • Improve error logs in bindings by tunneling the lower-level reqwest errors through to binding users.

js-0.4.5 - 2025-05-07

Bug Fixes

  • Render helpful error message on import errors (#171)
    • Wraps the original napi-rs ENOENT error with a more descriptive error message. Understands IMPIT_VERBOSE envvar for printing the original error message.

js-0.4.2 - 2025-04-30

Features

  • Better errors (#150)

    • Improves the error handling in impit and both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as in httpx.
  • 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.headers type in the impit-node bindings. Closes #151
  • Accept more request.body types (match fetch API) (#157)

js-0.4.0 - 2025-04-23

Bug Fixes

  • Set response.text() return type to string (#136)

    • The type definitions for response.text() return type used String (see capital S) instead of string (like fetch API does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
  • Do not publish ambient const enums (#144)

    • Switches from exporting const enums from the .d.ts file (which is problematic) to exporting union types. Makes the browser option accept lowercase browser names.

Features

  • response.headers is a Headers object (#137)
    • Turns the response.headers from a Record<string, string> into a Headers object, matching the original fetch API.

js-0.3.2 - 2025-04-15

Bug Fixes

  • response.encoding contains the actual encoding (#119)

    • Parses the content-type header for the charset parameter.
  • 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 url and content property for Response, smart .text decoding, options for redirects (#122)
    • Adds url, encoding and content properties for Response. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------

js-0.3.1 - 2025-03-28

Bug Fixes

  • Bundle native binary in linux-arm64 packages (#100)
    • Followup to #94 , the impit-linux-arm64-(gnu|musl) published packages didn't have the native binary included due to naming mismatch.

js-0.3.0 - 2025-03-28

Features

  • Use thiserror for better error handling DX (#90)
    • Adds std::error::Error implementation with thiserror. This should improve the developer experience and error messages across the monorepo.

js-0.2.5 - 2025-02-25

Bug Fixes

  • Enable ESM named imports from impit packages (#78)
    • Lists the "named" exports from the impit package verbatim so they can be imported with typescript import { Impit } from 'impit'; from ESM packages without causing the following error: ``` import { Impit } from "impit"; ^^^^^ SyntaxError: Named exp...
Read more

impit-node@0.7.6

05 Jan 12:45

Choose a tag to compare

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 meta elements (#346)

    • Ignores encoding-related meta elements with missing content or charset attributes. Related to #344
  • Throw Error on invalid header value (do not panic) (#347)

    • Unparseable response header values now only return Error in the Node bindings instead of panicking and killing the process. Related to #344

js-0.7.5 - 2025-12-17

Bug Fixes

  • Do not drop request-scoped options (timeout and forceHttp3) (#340)

js-0.7.4 - 2025-12-09

Bug Fixes

  • Authenticate with HTTPS proxy and HTTP target (#333)
    • Propagates upstream fixes from reqwest.

js-0.7.3 - 2025-12-03

Features

  • Enable TRACE method in the bindings (#328)
    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.

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)

  • 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.fetch with fetch interface (#309)
    • Enables passing Request and URL instances to Impit.fetch. Related to #227

Refactor

  • Introduce ImpitRequest struct for storing all request-related data (#307)
    • Refactors the impit.make_request method by splitting it into build_request and send. Prerequisite for the solution to #227 proposed in #227 (comment)

js-0.6.1 - 2025-10-22

Bug Fixes

  • Downgrade napi-rs tooling 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 return false for every call to host_supports_h3 (unless, e.g. alt-svc header has been registered for this domain).
  • 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_address option to Impit constructor (#225)

    • Adds a local_address option 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.
  • Include error message in ConnectError (#258)

    • Injects cause to the ConnectError display string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389

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.

Refactor

  • Improve thread safety, make Impit Sync (#212)

js-0.5.2 - 2025-06-25

Features

  • Client-scoped headers option (#200)
    • Adds headers setting to Impit constructor 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 the with_browser method. In turn, these are overridden by request-specific headers setting.

js-0.5.1 - 2025-06-11

Bug Fixes

  • Solve memory leak on response read (#191)
    • Memory leak in napi-rs's implementation of ReadableStream was causing impit to leak small amounts of memory on response read (.text(), .json(), .bytes() etc.).

Features

  • Support socks proxy (#197)
    • Enables support for socks proxies to impit-node. This theoretically enables socks proxies 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.

js-0.5.0 - 2025-05-29

Bug Fixes

  • Support null request payload, don't modify options (#190)
    • Removes parameter reassignment code smell. Fixes errors on null (or other nullish, but not expected) body.

Features

  • Support for custom cookie stores for Node.JS (#181)
    • Adds cookieJar constructor parameter for Impit class, accepting tough-cookie's CookieJar (or a custom implementation thereof, implementing at least setCookie(cookie: string, url: string) and getCookieString(url: string)). impit will write to and read from this custom cookie store. Related to #123

js-0.4.7 - 2025-05-20

Features

  • Add resp.arrayBuffer, improve Node <22 compatibility (#188)
    • Adds new response.arrayBuffer method (MDN) and implements response.bytes using arrayBuffer() to improve compatibility with Node < 22 (.bytes() support was rather experimental until this version).

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 ImpitBuilder struct (using the new with_cookie_store builder method). Without passing the store implementation, impit client in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
  • Show the underlying reqwest error on unrecognized error type (#183)

    • Improve error logs in bindings by tunneling the lower-level reqwest errors through to binding users.

js-0.4.5 - 2025-05-07

Bug Fixes

  • Render helpful error message on import errors (#171)
    • Wraps the original napi-rs ENOENT error with a more descriptive error message. Understands IMPIT_VERBOSE envvar for printing the original error message.

js-0.4.2 - 2025-04-30

Features

  • Better errors (#150)

    • Improves the error handling in impit and both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as in httpx.
  • 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.headers type in the impit-node bindings. Closes #151
  • Accept more request.body types (match fetch API) (#157)

js-0.4.0 - 2025-04-23

Bug Fixes

  • Set response.text() return type to string (#136)

    • The type definitions for response.text() return type used String (see capital S) instead of string (like fetch API does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
  • Do not publish ambient const enums (#144)

    • Switches from exporting const enums from the .d.ts file (which is problematic) to exporting union types. Makes the browser option accept lowercase browser names.

Features

  • response.headers is a Headers object (#137)
    • Turns the response.headers from a Record<string, string> into a Headers object, matching the original fetch API.

js-0.3.2 - 2025-04-15

Bug Fixes

  • response.encoding contains the actual encoding (#119)

    • Parses the content-type header for the charset parameter.
  • 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 url and content property for Response, smart .text decoding, options for redirects (#122)
    • Adds url, encoding and content properties for Response. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------

js-0.3.1 - 2025-03-28

Bug Fixes

  • Bundle native binary in linux-arm64 packages (#100)
    • Followup to #94 , the impit-linux-arm64-(gnu|musl) published packages didn't have the native binary included due to naming mismatch.

js-0.3.0 - 2025-03-28

Features

  • Use thiserror for better error handling DX (#90)
    • Adds std::error::Error implementation with thiserror. This should improve the developer experience and error messages across the monorepo.

js-0.2.5 - 2025-02-25

Bug Fixes

  • Enable ESM named imports from impit packages (#78)
    • Lists the "named" exports from the impit package verbatim so they can be imported with typescript 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...
Read more

impit-node@0.7.5

17 Dec 15:45

Choose a tag to compare

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 (timeout and forceHttp3) (#340)

js-0.7.4 - 2025-12-09

Bug Fixes

  • Authenticate with HTTPS proxy and HTTP target (#333)
    • Propagates upstream fixes from reqwest.

js-0.7.3 - 2025-12-03

Features

  • Enable TRACE method in the bindings (#328)
    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.

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)

  • 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.fetch with fetch interface (#309)
    • Enables passing Request and URL instances to Impit.fetch. Related to #227

Refactor

  • Introduce ImpitRequest struct for storing all request-related data (#307)
    • Refactors the impit.make_request method by splitting it into build_request and send. Prerequisite for the solution to #227 proposed in #227 (comment)

js-0.6.1 - 2025-10-22

Bug Fixes

  • Downgrade napi-rs tooling 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 return false for every call to host_supports_h3 (unless, e.g. alt-svc header has been registered for this domain).
  • 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_address option to Impit constructor (#225)

    • Adds a local_address option 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.
  • Include error message in ConnectError (#258)

    • Injects cause to the ConnectError display string. This allows for better error introspection in dependent packages. Unblocks apify/crawlee-python#1389

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.

Refactor

  • Improve thread safety, make Impit Sync (#212)

js-0.5.2 - 2025-06-25

Features

  • Client-scoped headers option (#200)
    • Adds headers setting to Impit constructor 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 the with_browser method. In turn, these are overridden by request-specific headers setting.

js-0.5.1 - 2025-06-11

Bug Fixes

  • Solve memory leak on response read (#191)
    • Memory leak in napi-rs's implementation of ReadableStream was causing impit to leak small amounts of memory on response read (.text(), .json(), .bytes() etc.).

Features

  • Support socks proxy (#197)
    • Enables support for socks proxies to impit-node. This theoretically enables socks proxies 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.

js-0.5.0 - 2025-05-29

Bug Fixes

  • Support null request payload, don't modify options (#190)
    • Removes parameter reassignment code smell. Fixes errors on null (or other nullish, but not expected) body.

Features

  • Support for custom cookie stores for Node.JS (#181)
    • Adds cookieJar constructor parameter for Impit class, accepting tough-cookie's CookieJar (or a custom implementation thereof, implementing at least setCookie(cookie: string, url: string) and getCookieString(url: string)). impit will write to and read from this custom cookie store. Related to #123

js-0.4.7 - 2025-05-20

Features

  • Add resp.arrayBuffer, improve Node <22 compatibility (#188)
    • Adds new response.arrayBuffer method (MDN) and implements response.bytes using arrayBuffer() to improve compatibility with Node < 22 (.bytes() support was rather experimental until this version).

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 ImpitBuilder struct (using the new with_cookie_store builder method). Without passing the store implementation, impit client in both bindings is by default stateless (doesn't store cookies). Enables implementing custom support for language-specific cookie stores (in JS and Python).
  • Show the underlying reqwest error on unrecognized error type (#183)

    • Improve error logs in bindings by tunneling the lower-level reqwest errors through to binding users.

js-0.4.5 - 2025-05-07

Bug Fixes

  • Render helpful error message on import errors (#171)
    • Wraps the original napi-rs ENOENT error with a more descriptive error message. Understands IMPIT_VERBOSE envvar for printing the original error message.

js-0.4.2 - 2025-04-30

Features

  • Better errors (#150)

    • Improves the error handling in impit and both the language bindings. Improves error messages. For Python bindings, this PR adds the same exception types as in httpx.
  • 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.headers type in the impit-node bindings. Closes #151
  • Accept more request.body types (match fetch API) (#157)

js-0.4.0 - 2025-04-23

Bug Fixes

  • Set response.text() return type to string (#136)

    • The type definitions for response.text() return type used String (see capital S) instead of string (like fetch API does). Note that this is a strictly type-level issue and simple cast (or type change, in this case) solves this.
  • Do not publish ambient const enums (#144)

    • Switches from exporting const enums from the .d.ts file (which is problematic) to exporting union types. Makes the browser option accept lowercase browser names.

Features

  • response.headers is a Headers object (#137)
    • Turns the response.headers from a Record<string, string> into a Headers object, matching the original fetch API.

js-0.3.2 - 2025-04-15

Bug Fixes

  • response.encoding contains the actual encoding (#119)

    • Parses the content-type header for the charset parameter.
  • 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 url and content property for Response, smart .text decoding, options for redirects (#122)
    • Adds url, encoding and content properties for Response. Decodes the response using the automatic encoding-determining algorithm. Adds redirect-related options. ---------

js-0.3.1 - 2025-03-28

Bug Fixes

  • Bundle native binary in linux-arm64 packages (#100)
    • Followup to #94 , the impit-linux-arm64-(gnu|musl) published packages didn't have the native binary included due to naming mismatch.

js-0.3.0 - 2025-03-28

Features

  • Use thiserror for better error handling DX (#90)
    • Adds std::error::Error implementation with thiserror. This should improve the developer experience and error messages across the monorepo.

js-0.2.5 - 2025-02-25

Bug Fixes

  • Enable ESM named imports from impit packages (#78)
    • Lists the "named" exports from the impit package verbatim so they can be imported with typescript 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;

js-0.2.4 - 2025-02-25

Bug Fixes

  • Allow impit usage from ESM (#74)
    • Renames native code import to mitigate naming collision with global exports.

js-0.2.3 - 2025-02-21

Bug Fixes

  • Reenable HTTP/3 features in JS bindings (#57)
    • Recent package updates might have broken the http3 feature in Node.JS bindings. This PR solves the underlying problems by bui...
Read more

impit-node@0.7.4

09 Dec 00:00

Choose a tag to compare

Bug Fixes

  • Authenticate with HTTPS proxy and HTTP target (#333)
    • Propagates upstream fixes from reqwest.

impit-node@0.7.3

03 Dec 15:18

Choose a tag to compare

Features

  • Enable TRACE method in the bindings (#328)
    • Unifies all clients by enabling the trace method in all of them. Required for type parity (HttpMethod) in downstream repositories - Crawlee et al.

impit-node@0.7.2

02 Dec 15:04

Choose a tag to compare

Bug Fixes