# What changed in tedious

> 30 changes in tedious 19 to 20 from its official release notes, upgrade guides and advisories: 2 breaking, 1 deprecations, 2 security, 4 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/tedious/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## tedious 20

### Breaking changes

- The sprintf-js dependency was removed. (20.3.6) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.6)
- Node.js 22 is now the minimum supported version; Node.js 18, 20, and 21 are no longer supported. (20.0.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.0)

### Security

- Passwords are redacted in Login7 payload debug output. (20.3.8) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.8)
- Rejects TLS downgrades when encryption is required, preventing connections from silently using weaker encryption. (20.3.7) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.7)

### Deprecations

- TDS 7.1 support is deprecated. (20.1.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.1.0)

### New APIs and options

- Adds support for the COLINFO token. (20.2.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.2.0)
- Adds support for the TABNAME token. (20.2.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.2.0)

### Performance

- Bulk load rows are serialized with an async generator and coalesced into packet-sized chunks, improving performance. (20.2.3) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.2.3)
- Parsing of date and time values is faster. (20.0.5) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.5)
- Avoids capturing a stack trace in NotEnoughDataError. (20.0.5) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.5)

### Behavior and default changes

- The max data type and table-valued parameters can now be streamed from async sources. (20.3.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.0)

### Fixes and other changes

- Sends the PLP terminator when an NVarChar or VarBinary length is missing. (20.3.5) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.5)
- Preserves Unicode across streamed text chunks. (20.3.4) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.4)
- Nagle's algorithm is disabled on the connection socket. (20.3.3) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.3)
- A request can be executed again after it was canceled. (20.3.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.2)
- Output parameters are now allowed on prepared statements. (20.3.1) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.1)
- Bulk load serialization errors are now wrapped in InputError. (20.3.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.3.0)
- Token parse failures are surfaced as request errors. (20.2.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.2.2)
- Caps the TLS max send fragment size for connections using encrypt: "strict". (20.0.7) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.7)
- Large DECIMAL/NUMERIC values are serialized without overflow. (20.0.6) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.6)
- SNI is omitted for IP-based hostnames. (20.0.5) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.5)
- Canceled requests are completed when the server does not respond. (20.0.4) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.4)
- Prevents stale errors. (20.0.3) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.3)
- Connection establishment is aborted when the connection is closed. (20.0.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.2)
- Prevents a connection from hanging when the Login7 response is interrupted. (20.0.1) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v20.0.1)

## tedious 19

### New APIs and options

- Adds the databaseMirroringPartner event handler. (19.2.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v19.2.0)
- Tedious now supports Azure SQL Database in Microsoft Fabric. (19.1.0) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v19.1.0)

### Fixes and other changes

- The cancel timer is cleared when a connection is cleaned up. (19.2.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v19.2.2)
- The message stream remains aligned when canceling with a disabled cancel timeout. (19.2.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v19.2.2)
- The schema is included in TVP type declarations. (19.2.2) — [release notes](https://github.com/tediousjs/tedious/releases/tag/v19.2.2)
