NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2965 most downloaded on npm
Fastest full featured PostgreSQL client for Node.js
Last release 6 months ago
05 Apr 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 31 of 32 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
48 releases · first in 2015
Fix #1143 1e92809 v3.4.8...v3.4.9
Prevent out of bound errors from commit-time failures de64f7a
One column per quarter.
Fix reserved queries failing on connect e34826d
Fix failures in sql.reserve() connect shadowing real errors e8bb3b8
Don't reassign to errors 4baef5e , f58cd4f
Ensure retryRoutines are only used for prepared statements - fixes #830 3e28f3a
Ensure reserved connections are initialized properly - fixes #718 c084a1c
Ensure transactions throw if connection is closed while there is no active query - fixes #658 788c819
set "types" exports first as ts 4.7 requirement ( #709 ) 00dd98a
Add Support for Cloudflare Workers & Pages ( #599 ) b88e261
feat: use ; as a delimiter for _box 26d08c8
https://github.com/porsager/postgres/compare/v3.3.4...v3.3.5
Set servername on tls connect - fixes #543 498f2ae
https://github.com/porsager/postgres/compare/v3.3.3...v3.3.4
Fix connection uri encoding (#497) 4467d11
https://github.com/porsager/postgres/compare/v3.3.2...v3.3.3
Fix null json array transform error b153202
https://github.com/porsager/postgres/compare/v3.3.1...v3.3.2
Fix listen after reconnect - fixes #490 52dfe9a
https://github.com/porsager/postgres/compare/v3.3.0...v3.3.1
Fix subscribe stream close 19c9684
undefined types issues (#447) 097d272.values() typings - fixes #385 (#393) ac1bca4https://github.com/porsager/postgres/compare/v3.2.4...v3.3.0
Allow setting keep_alive: false bee62f3
https://github.com/porsager/postgres/compare/v3.2.3...v3.2.4
Fix Only use setKeepAlive in Deno if available 28fbbaf
https://github.com/porsager/postgres/compare/v3.2.2...v3.2.3
Properly handle errors thrown on commit 99ddae4
https://github.com/porsager/postgres/compare/v3.2.1...v3.2.2
Exclude target_session_attrs from connection obj 43f1442
https://github.com/porsager/postgres/compare/v3.2.0...v3.2.1
Add sslmode=verify-full support e67da29
sslmode=verify-full support e67da29as dynamic helper 3300c40Result when using simple protocol - fixes #350 1e2e298onlisten callback to listen() on TypeScript (#360) 6b749b2.writable() and .readable() to return promises (#347) 51269cehttps://github.com/porsager/postgres/compare/v3.1.0...v3.2.0
Add close method to close but not end connections forever 94fea8f
https://github.com/porsager/postgres/compare/v3.0.6...v3.1.0
Properly close connections in Deno 13950af
https://github.com/porsager/postgres/compare/v3.0.5...v3.0.6
returning - fixes #317 04644c0Fix transaction execution timing 28bb0b3
https://github.com/porsager/postgres/compare/v3.0.4...v3.0.5
Ensure drain only dequeues if ready - fixes #303 3f9118b
https://github.com/porsager/postgres/compare/v3.0.3...v3.0.4
Run tests with github actions b536d0d
https://github.com/porsager/postgres/compare/v3.0.2...v3.0.3
Fix unsubscribing (#300) b6c597f
https://github.com/porsager/postgres/compare/v3.0.1...v3.0.2
Improve connection queue handling + fix leak cee1a57
https://github.com/porsager/postgres/compare/v3.0.0...v3.0.1
This is a complete rewrite to better support all the features that I was trying to get into v2. There are a few breaking changes from v2 beta, which s…
This is a complete rewrite to better support all the features that I was trying to get into v2. There are a few breaking changes from v2 beta, which some (myself included) was using in production, so I'm skipping a stable v2 release and going straight to v3.
Here are some of the new things available, but check the updated docs.
ParameterDescription.describe() to only get query input types and column definitionsmax_lifetime for connectionsResult arrays (previously cursor 1 would return a row object, where > 1 would return an array of rows).writable() and .readable() is now async (returns a Promise that resolves to the stream).execute() is manually called..stream() is renamed to .forEachResult class extending Array instead of an Array with extra properties (actually shouldn't be breaking unless you're doing something funny)sql() in queries are now always quotedidle_timeoutselect count(*) because count() returns a 64 bit integer (int8), so if you know your count() won't be too big for a js number just cast in your query to int4 like select count(*)::inthttps://github.com/porsager/postgres/compare/v1.0.2...v3.0.0
https://github.com/porsager/postgres/compare/v2.0.0-beta.11...v3.0.0-rc.3
https://github.com/porsager/postgres/compare/v2.0.0-beta.11...v3.0.0-rc.3
Fix race condition with transactions on end 315407e
https://github.com/porsager/postgres/compare/v3.0.0-rc.1...v3.0.0-rc.2
This is a complete rewrite to better support all the features that I was trying to get into v2. There are a few breaking changes from v2 beta , which…
This is a complete rewrite to better support all the features that I was trying to get into v2. There are a few breaking changes from v2 beta , which some (myself included) are using in production, so I'm skipping a stable v2 release and going to v3.
Here are some of the new things available..
ParameterDescription.describe() to only get query input types and column definitionsResult arrays (previously cursor 1 would return a row object, where > 1 would return an array of rows).writable() and .readable() is now async (returns a Promise that resolves to the stream).execute() is manually called..stream() is renamed to .forEachResult class extending Array instead of an Array with extra properties (actually shouldn't be breaking unless you're doing something funny)sql() in queries are now always quotedselect count(*) because count() returns a 64 bit integer (int8), so if you know your count() won't be too big for a js number just cast in your query to int4 like select count(*)::inthttps://github.com/porsager/postgres/compare/v2.0.0-beta.11...v3.0.0-rc.1
Fix listen reconnect on connection errors + simple backoff 09592ea
https://github.com/porsager/postgres/compare/v2.0.0-beta.10...v2.0.0-beta.11
Remove unnecessary portal and flush 06cc8e4
https://github.com/porsager/postgres/compare/v2.0.0-beta.9...v2.0.0-beta.10
Subscribe to changes using logical replication (#220) 51d033c
https://github.com/porsager/postgres/compare/v2.0.0-beta.8...v2.0.0-beta.9
Call socket.write with correct arguments - fixes #216 f406426
https://github.com/porsager/postgres/compare/v2.0.0-beta.7...v2.0.0-beta.8
Fix potential endless loop 8150005
https://github.com/porsager/postgres/compare/v2.0.0-beta.6...v2.0.0-beta.7
Use keepalive with 1 minute idle time 60c1f8e
sql.unsafe (#176) ae6c350https://github.com/porsager/postgres/compare/v2.0.0-beta.5...v2.0.0-beta.6
Feature: Add raw input property to error and debug parameters (#167) 9e83e7f
raw input property to error and debug parameters (#167) 9e83e7fbegin() (transactions) - fixes #162 fff6640https://github.com/porsager/postgres/compare/v2.0.0-beta.4...v2.0.0-beta.5
Better sql`` types (#84) f82d679
https://github.com/porsager/postgres/compare/v2.0.0-beta.3...v2.0.0-beta.4
Fix parallel SCRAM-SHA-256 authentication (#145) 0709db4
https://github.com/porsager/postgres/compare/v2.0.0-beta.2...v2.0.0-beta.3
double precision can be represented safely as number in js 5e5ae5a
https://github.com/porsager/postgres/compare/v2.0.0-beta.1...v2.0.0-beta.2
Fix wrong api usage errors being swallowed a891603
https://github.com/porsager/postgres/compare/v2.0.0-beta.0...v2.0.0-beta.1
Undefined values throws 758b5ee
https://github.com/porsager/postgres/compare/v1.0.2...v2.0.0-beta.0
Fix standard postgres user env var (#20) cce5ad7
https://github.com/porsager/postgres/compare/v1.0.1...v1.0.2
Fix #3 url without db and trailing slash 45d4233
https://github.com/porsager/postgres/compare/v1.0.0...v1.0.1
- Initial release
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →