---
name: Supabase JS
slug: supabase-js
type: github
source_url: https://github.com/supabase/supabase-js
changelog_url: https://github.com/supabase/supabase-js/blob/HEAD/CHANGELOG.md
organization: Supabase
organization_slug: supabase
total_releases: 228
latest_version: v2.104.0-canary.2
latest_date: 2026-04-17
last_updated: 2026-04-19
tracking_since: 2025-07-12
canonical: https://releases.sh/supabase/supabase-js
organization_url: https://releases.sh/supabase
---

<Summary type="rolling" window-days="90" release-count="94">
The SDK shifted toward hardening the error-handling pipeline and expanding type safety across PostgREST and storage. Error objects now serialize correctly to JSON across auth, functions, and storage modules, preventing silent failures in logging and debugging. PostgREST gained automatic retries for transient server errors and a stripNulls method to filter null values from queries, while signed URL handling improved with cacheNonce parameters for cache-busting and stricter type inference for computed columns. Realtime added copyBindings to duplicate channel subscriptions and now blocks postgres_changes listeners after joining, preventing accidental race conditions.
</Summary>

<Summary type="monthly" period="March 2026" release-count="26">
March brought resilience improvements to PostgREST and expanded auth capabilities. Automatic retries for transient errors now handle 503 responses and connection issues in PostgREST queries, while the auth module graduated custom OIDC/OAuth provider admin CRUD methods for managing identity providers. Realtime gained `copyBindings` functionality and now blocks setting `postgres_changes` listeners after channel join to prevent state inconsistencies.
</Summary>

<Summary type="monthly" period="February 2026" release-count="25">
Auth expanded its custom OAuth capabilities with admin CRUD methods for managing custom OIDC/OAuth providers, plus new controls like `token_endpoint_auth_method` and support for the `custom:` provider prefix. Storage gained a `setHeader` method on BaseApiClient, PostgREST enforced stricter type safety for table names in `from()`, and auth fixed Firefox content script security errors in lock handling along with a more lenient 5-second lock acquisition timeout.
</Summary>

<Release version="v2.104.0-canary.2" date="April 17, 2026" published="2026-04-17T13:20:01.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.104.0-canary.2">
## 2.104.0-canary.2 (2026-04-17)

This was a version bump only, there were no code changes.
</Release>

<Release version="v2.104.0-canary.1" date="April 17, 2026" published="2026-04-17T11:20:56.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.104.0-canary.1">
## 2.104.0-canary.1 (2026-04-17)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **storage:** extract shared header normalization utility ([#2251](https://github.com/supabase/supabase-js/pull/2251))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **realtime:** throw Error objects instead of bare strings ([#2256](https://github.com/supabase/supabase-js/pull/2256))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))
- **storage:** correct signedUrl type to allow null in createSignedUrls ([#2254](https://github.com/supabase/supabase-js/pull/2254))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.3" date="April 16, 2026" published="2026-04-16T13:37:30.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.3">
## 2.103.3 (2026-04-16)

### 🩹 Fixes

- **realtime:** throw Error objects instead of bare strings ([#2256](https://github.com/supabase/supabase-js/pull/2256))
- **storage:** correct signedUrl type to allow null in createSignedUrls ([#2254](https://github.com/supabase/supabase-js/pull/2254))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
</Release>

<Release version="v2.103.3-canary.1" date="April 16, 2026" published="2026-04-16T13:13:15.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.3-canary.1">
## 2.103.3-canary.1 (2026-04-16)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **realtime:** throw Error objects instead of bare strings ([#2256](https://github.com/supabase/supabase-js/pull/2256))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))
- **storage:** correct signedUrl type to allow null in createSignedUrls ([#2254](https://github.com/supabase/supabase-js/pull/2254))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.3-canary.0" date="April 15, 2026" published="2026-04-15T14:43:51.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.3-canary.0">
## 2.103.3-canary.0 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))
- **storage:** correct signedUrl type to allow null in createSignedUrls ([#2254](https://github.com/supabase/supabase-js/pull/2254))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.2" date="April 15, 2026" published="2026-04-15T13:57:35.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.2">
## 2.103.2 (2026-04-15)

### 🩹 Fixes

- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.2-canary.3" date="April 15, 2026" published="2026-04-15T13:49:45.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.2-canary.3">
## 2.103.2-canary.3 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.2-canary.2" date="April 15, 2026" published="2026-04-15T11:30:27.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.2-canary.2">
## 2.103.2-canary.2 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.2-canary.1" date="April 15, 2026" published="2026-04-15T11:19:36.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.2-canary.1">
## 2.103.2-canary.1 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
- Vansh Sharma @Vansh1811
</Release>

<Release version="v2.103.2-canary.0" date="April 15, 2026" published="2026-04-15T10:25:15.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.2-canary.0">
## 2.103.2-canary.0 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))
- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
</Release>

<Release version="v2.103.1" date="April 15, 2026" published="2026-04-15T08:14:34.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.1">
## 2.103.1 (2026-04-15)

### 🩹 Fixes

- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))

### ❤️ Thank You

- oniani1
- Vaibhav @7ttp
</Release>

<Release version="v2.103.1-canary.0" date="April 15, 2026" published="2026-04-15T08:12:01.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.1-canary.0">
## 2.103.1-canary.0 (2026-04-15)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))
- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))
- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
</Release>

<Release version="v2.103.1-beta.0" date="April 9, 2026" published="2026-04-09T07:01:42.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.1-beta.0">
## 2.103.1-beta.0 (2026-04-09)

### 🩹 Fixes

- **auth:** replace navigatorLock with processLock as default browser lock ([5450b509](https://github.com/supabase/supabase-js/commit/5450b509))
- **auth:** add deadlock tests ([c4fe7172](https://github.com/supabase/supabase-js/commit/c4fe7172))

### ❤️ Thank You

- Katerina Skroumpelou
</Release>

<Release version="v2.103.0" date="April 9, 2026" published="2026-04-09T06:57:09.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.0">
## 2.103.0 (2026-04-09)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))

### 🩹 Fixes

- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
</Release>

<Release version="v2.103.0-canary.2" date="April 9, 2026" published="2026-04-09T06:54:36.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.0-canary.2">
## 2.103.0-canary.2 (2026-04-09)

### 🚀 Features

- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))
- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Seydi Charyyev @TheSeydiCharyyev
- Vaibhav @7ttp
</Release>

<Release version="v2.103.0-canary.1" date="April 9, 2026" published="2026-04-09T06:32:30.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.103.0-canary.1">
## 2.103.0-canary.1 (2026-04-09)

### 🚀 Features

- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Vaibhav @7ttp
</Release>

<Release version="v2.102.2-canary.0" date="April 8, 2026" published="2026-04-08T06:57:49.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.102.2-canary.0">
## 2.102.2-canary.0 (2026-04-08)

### 🚀 Features

- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Vaibhav @7ttp
</Release>

<Release version="v2.102.1" date="April 7, 2026" published="2026-04-07T11:13:02.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.102.1">
## 2.102.1 (2026-04-07)

### 🩹 Fixes

- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))

### ❤️ Thank You

- oniani1
</Release>

<Release version="v2.102.1-canary.0" date="April 7, 2026" published="2026-04-07T11:08:34.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.102.1-canary.0">
## 2.102.1-canary.0 (2026-04-07)

### 🚀 Features

- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))

### ❤️ Thank You

- Katerina Skroumpelou @mandarini
- oniani1
- Vaibhav @7ttp
</Release>

<Release version="v2.102.0" date="April 7, 2026" published="2026-04-07T07:43:25.000Z" url="https://github.com/supabase/supabase-js/releases/tag/v2.102.0">
## 2.102.0 (2026-04-07)

### 🚀 Features

- **postgrest:** add automatic retries for transient errors ([#2072](https://github.com/supabase/supabase-js/pull/2072))
- **postgrest:** add success discriminator field to PostgREST response types ([#2198](https://github.com/supabase/supabase-js/pull/2198))
- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))

### 🩹 Fixes

- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))
- **ci:** add --ignore-scripts to platform test installs to block post install attacks ([#2206](https://github.com/supabase/supabase-js/pull/2206))
- **postgrest:** add toJSON to PostgrestError for correct JSON serialization ([#2212](https://github.com/supabase/supabase-js/pull/2212))
- **postgrest:** reject excess properties in insert, update, and upsert ([#2186](https://github.com/supabase/supabase-js/pull/2186))
- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))
- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))

### ❤️ Thank You

- Clay
- Guilherme Souza
- Katerina Skroumpelou @mandarini
- oniani1
- Vaibhav @7ttp
</Release>

<Pagination page="1" total-pages="12" total-items="228" next="https://releases.sh/supabase/supabase-js.md?page=2" />
