PostgREST

Developer Tools

Turns a PostgreSQL schema directly into a RESTful API.

Latest v16.1 · by PostgRESTWebsitePostgREST/postgrest

Release activity

Release activity — 11 releases across 11 days since Apr 3, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Apr 3, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 20261 release on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 20261 release on Jun 29, 2026No releases on Jul 6, 20261 release on Jul 13, 2026No releases on Jul 20, 20261 release on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 20261 release on Aug 11, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 20261 release on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 20261 release on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 20261 release on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

11 releases since Apr 3, 2026

Changelog

v16.1

Fixed 1
  • JWT validation uses correct current time, fixing a bug in auto-update
Fixed
  • JWT validation uses wrong current time due to a bug in auto-update by @mkleczek in #5159
View originalPermalink
How v16.1 went

v16.0

Added 9
  • Add graceful shutdown for HTTP server
  • Add server-reuseport configuration to allow starting multiple PostgREST instances using the same port on supported platforms
  • Add support for JSON Path RFC 9535 in JWT Role Extraction
  • Add numeric offsets like 05:00 or -4 to Prefer: timezone
  • Add Vary header to responses
  • Add GHC runtime metrics for observability
Changed 6
  • Optimize schema cache domain type resolution by using pg_basetype on PostgreSQL 17+
  • Prefer: count=exact no longer does a double count on requests that do not use ranges or db-max-rows
  • Prefer: timezone no longer requires the schema cache
  • Make aarch64-linux executable static instead of Ubuntu-based
  • Build aarch64-linux Docker image from scratch instead of Ubuntu-based
  • log-level configuration is now reloadable
Fixed 7
  • Fix unexpected results when embedding and filtering the same table more than once
  • Fix automatic transaction retries on serialization_failure errors to prevent replication lag
  • Fix responding with Something went wrong on Admin server when under EMFILE
  • Fix requests failing when the schema cache fails to reload by continuing to serve requests in best effort mode
  • Fix reporting 503 errors unnecessarily while the schema cache is loading at startup
  • Fix schema cache dump missing RPC transaction isolation level
  • Fix config db-channel-enabled not reloading
Removed 1
  • Drop support for PostgreSQL 13
Deprecated 1
  • Deprecate filters, orders and limits with the name of an embedded table when it has an alias
Changes
HTTP Server
  • Graceful shutdown by @mkleczek, @Vlix in #4702

  • server-reuseport allows starting multiple PostgREST instances using the same port on supported platforms by @mkleczek in #4703, #4694

Performance
  • Optimize schema cache domain type resolution by using pg_basetype on PostgreSQL 17+ by @joelonsql in #4567

  • Prefer: count=exact no longer does a double count on requests that do not use ranges or db-max-rows by @laurenceisla in #3957

  • Prefer: timezone no longer requires the schema cache by @steve-chavez in #5100

Integrations
JWT
  • JWT Role Extraction is now more flexible, supporting the standard JSON Path defined in RFC 9535 by @taimoorzaeem in #4984
API
  • Prefer: timezone now supports numeric offsets like 05:00 or -4 by @steve-chavez in #5100

  • Fix unexpected results when embedding and filtering the same table more than once by @laurenceisla in #4075

  • Deprecate filters, orders and limits with the name of an embedded table when it has an alias by @steve-chavez, @laurenceisla in #4075

    • e.g. ?select=alias:table(*)&table.id=eq.1 will not be possible anymore, use ?select=alias:table(*)&alias.id=eq.1 instead.
    • You will see a warning in the logs and a Warning header on the client response when this happens.
    • You can disable this behavior now by setting url-use-legacy-target-names = false.
  • Add Vary header to responses by @develop7 in #4609

  • Fix automatic transaction retries on 40001 (serialization_failure) errors to prevent replication lag by @laurenceisla in #3673

Observability
  • GHC runtime metrics by @mkleczek in #4862
  • client-error-verbosity to customize responses error verbosity by @taimoorzaeem in #4088, #3980, #3824
  • log-level config is now reloadable by @taimoorzaeem in #5113
  • Log error when db-schemas config contains schema pg_catalog or information_schema by @taimoorzaeem in #4359
  • Log schema cache queries timings on log-level=debug by @steve-chavez in #4805
Admin Server
Deployment
  • Make executable for aarch64-linux static instead of Ubuntu-based by @wolfgangwalther in #4193
  • Docker image for aarch64-linux is now built from scratch instead of being Ubuntu-based by @wolfgangwalther in #4193
  • Besides Docker Hub, docker images are now published to Github Container Registry by @wolfgangwalther in #2836
Schema Cache
  • Fix requests failing when the schema cache fails to reload, when this happens PostgREST will continue serving requests in "best effort" by @mkleczek in #4873 #4869
  • Fix reporting 503s errors unnecessarily while the schema cache is loading at startup by @mkleczek in #4880
  • Fix schema cache dump missing RPC transaction isolation level by @taimoorzaeem in #5079
Listener
  • Fix config db-channel-enabled not reloading by @taimoorzaeem in #4894
Migration to v16
  • Drop support for PostgreSQL EOL version 13 by @wolfgangwalther in #4193

    • PostgreSQL 13 end of life was on 2025 (ref)
    • Upgrade your PostgreSQL version to at least 14 to use this new PostgREST version.
  • Fail at startup when db-schemas contains schema pg_catalog or information_schema by @taimoorzaeem in #4359

    • Previously it failed at runtime with PGRST205 on requests related to these schemas.
    • Remove pg_catalog and information_schema from db-schemas.
  • Prefer: timezone no longer complies with handling=lenient and instead always fails by @steve-chavez in #5128

    • Supporting this required caching pg_timezone_names, which was expensive.
    • Ensure your requests always have a valid timezone.
  • jwt-role-claim-key no longer uses the JSPath DSL and instead uses JSON Path by @taimoorzaeem in #4984

    • Now all config values must start with $ character. Example: .roles.read -> $.roles.read
    • Keys with special characters, with the exception of _ char must be quoted. Example: .roles.write-role -> $.roles["write-role"]
    • String comparison operators (^==, ==^ and *==) are replaced with regular expression search. Example: .roles[?(@ ^== "postgrest_test_")] -> $.roles[?search(@, "^postgrest_test_")]
    • Update the jwt-role-claim-key value accoring to the above rules. Also see the syntax reference: RFC 9535.
View originalPermalink
How v16.0 went

v14.16

Fixed 1
  • Fix admin server crashing without a way to recover
Fixed
  • Fix admin server crashing without a way to recover by @taimoorzaeem in #5096
View originalPermalink
How v14.16 went

v14.15

Fixed 1
  • Fix admin server dying silently
Fixed
  • Fix admin server dying silently by @Vlix, @mkleczek, @steve-chavez in #5012
View originalPermalink
How v14.15 went

v14.14

Fixed 1
  • Fix admin server not logging cause of failure
Fixed
  • Fix admin server not logging cause of failure by @taimoorzaeem in #5012
View originalPermalink
How v14.14 went

v14.13

Fixed 2
  • Remove redundant "Retrying the connection." from PGRST000 error message because it is logged separately
  • Fix request failures when work_mem is set on a role
Fixed
  • Fix connection retrying message in PGRST000 error by @netqo in #4980
    • Remove redundant "Retrying the connection." from message because it is logged separately
  • Fix request failures when work_mem is set on a role by @laurenceisla in #4955
View originalPermalink
How v14.13 went

v14.12

Fixed 1
  • Fix race condition in pool_available metric causing negative values during network instability
Fixed
  • Fix race condition in pool_available metric causing negative values during network instability by @mkleczek in #4622
View originalPermalink
How v14.12 went

v14.11

Fixed 4
  • Fix login with uppercase and mixed case role names
  • Restore Listener query shape so it can be found in pg_stat_activity
  • The LISTEN channel now automatically recovers when it stops working due to a PostgreSQL bug
  • Fix misleading "Functions" name on schema cache summary in startup logs
Fixed
  • Fix login with uppercase and mixed case role names by @taimoorzaeem in #4678
  • Restore Listener query shape so it can be found in pg_stat_activity by @mkleczek in #4857 #4859
  • The LISTEN channel now automatically recovers when it stops working due to a PostgreSQL bug @laurenceisla in #3147
  • Fix misleading "Functions" name on schema cache summary in startup logs by @taimoorzaeem in #4821
View originalPermalink
How v14.11 went

v14.10

Added 1
  • Log when the pool is released during schema cache reload on log-level=debug
Fixed 1
  • Fix unnecessary connection pool flushes during schema cache reloading
Added
  • Log when the pool is released during schema cache reload on log-level=debug by @mkleczek in #4668
Fixed
  • Fix unnecessary connection pool flushes during schema cache reloading by @mkleczek in #4645
View originalPermalink
How v14.10 went

v14.9

Added 1
  • Log host, port and pg version of listener database connection
Fixed 1
  • Remove red herring warp logs on default log-level, only emit them on log-level=debug
Added
  • Log host, port and pg version of listener database connection by @mkleczek in #4617 #4618
Fixed
  • Remove red herring warp logs on default log-level, only emit them on log-level=debug by @steve-chavez in #4799
View originalPermalink
How v14.9 went

v14.8

Added 1
  • Log a HINT when the LISTEN channel stops working due to a PostgreSQL bug
Fixed 1
  • Fix invalid OpenAPI 2.0 format for integer types (smallint, integer, bigint)
Added
  • Log a HINT when the LISTEN channel stops working due to a PostgreSQL bug by @laurenceisla in #4581
Fixed
  • Fix invalid OpenAPI 2.0 format for integer types (smallint, integer, bigint) by @arturbent0 in #4641
View originalPermalink
How v14.8 went
View all

Discussion