{"id":"prod_OPS1I78_BAf7y8q2RnAnJ","name":"Client SDK","slug":"supabase-client","orgId":"org_ztgz74kNM_9w5C9paux1D","url":null,"description":"JavaScript/TypeScript client library","category":"developer-tools","kind":"sdk","avatarUrl":null,"createdAt":"2026-04-10T16:07:05.462Z","embeddedAt":"2026-04-15T16:19:41.929Z","deletedAt":null,"sources":[{"id":"src_gAlsGhT1r-mPlMBgIk1Oh","slug":"supabase-js","name":"Supabase JS","type":"github","url":"https://github.com/supabase/supabase-js","metadata":"{\"changelogUrl\":\"https://github.com/supabase/supabase-js/blob/HEAD/CHANGELOG.md\",\"changelogDetectedAt\":\"2026-03-31T14:06:52.578Z\",\"wellKnownSweptAt\":\"2026-06-24T06:00:01.224Z\"}","kind":"sdk"}],"tags":["javascript","sdk"],"aliases":[],"notice":null,"releases":[{"id":"rel_i9eV-_0NWGmDwf0mYSI_4","version":"v2.108.2","type":"feature","title":"v2.108.2","summary":"Preserves a valid session on auth refresh failure and cooldown repeat failures. Clarified a realtime httpSend() 404 error and server migration note.","titleGenerated":"Supabase Client SDK v2.108.2 preserves session on auth refresh failure","titleShort":"Auth session preserved on refresh failure","content":"## 2.108.2 (2026-06-15)\n\n### 🩹 Fixes\n\n- **auth:** preserve valid session on refresh failure and cooldown repeat failures ([#2436](https://github.com/supabase/supabase-js/pull/2436))\n- **realtime:** clarify httpSend() 404 error and server migration note ([#2444](https://github.com/supabase/supabase-js/pull/2444))\n- **release:** pin Deno and bound JSR publish to survive stranded-task hangs ([#2439](https://github.com/supabase/supabase-js/pull/2439))\n- **release:** restore JSR publish flags and enable for beta ([#2440](https://github.com/supabase/supabase-js/pull/2440))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini","publishedAt":"2026-06-15T06:49:22.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.108.2","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":627,"contentTokens":196,"composition":{"bugs":3,"features":0,"enhancements":1}},{"id":"rel_NBw9vPhv4GPntbvcHgfRB","version":"v2.108.1","type":"feature","title":"v2.108.1","summary":"Fixed PostgREST then typing issue.","titleGenerated":"Supabase Client SDK v2.108.1 fixes PostgREST then typing","titleShort":"PostgREST then typing fixed","content":"## 2.108.1 (2026-06-09)\n\n### 🩹 Fixes\n\n- **ci:** forward DOGFOOD_APP_CLIENT_ID to dogfood workflow ([#2434](https://github.com/supabase/supabase-js/pull/2434))\n- **postgrest:** then typing ([#2349](https://github.com/supabase/supabase-js/pull/2349))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- Vaibhav @7ttp","publishedAt":"2026-06-09T15:50:17.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.108.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":318,"contentTokens":121,"composition":{"bugs":2,"features":0,"enhancements":0}},{"id":"rel_9SM_kX5AE2ayrW-NeM2ER","version":"v2.108.0","type":"feature","title":"v2.108.0","summary":"The auth.resend() method now provides a consistent confirmation flow. Fixed auth errors being logged to console when already returned through the API contract, and request headers are now passed as plain objects for React Native and custom-fetch compatibility.","titleGenerated":"Supabase Client SDK v2.108.0 improves auth resend flow and fixes error logging","titleShort":"Auth resend now has consistent confirmation; console errors reduced","content":"## 2.108.0 (2026-06-08)\n\n### 🚀 Features\n\n- **auth:** auth.resend() consistent confirmation flow ([#2144](https://github.com/supabase/supabase-js/pull/2144))\n\n### 🩹 Fixes\n\n- **auth:** do not console.error AuthApiError already returned through contract ([#2428](https://github.com/supabase/supabase-js/pull/2428))\n- **postgrest:** pass request headers as plain object for RN/custom-fetch compatibility ([#2414](https://github.com/supabase/supabase-js/pull/2414))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- Lawrence Li @weilirs\n- MaitreyeeDeshmukh","publishedAt":"2026-06-08T12:01:33.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.108.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":558,"contentTokens":180,"composition":{"bugs":2,"features":1,"enhancements":0}},{"id":"rel_58l4QFoiSyn9PNshxPH3V","version":"v2.107.0","type":"feature","title":"v2.107.0","summary":"Removed navigator.locks-based mutex from auth in favor of a commit guard with dispose() method. Fixed getClaims to return AuthInvalidJwtError for expired JWTs, implicit grant gate to recognize ?error= redirects, and PostgREST to return structured errors for non-JSON bodies on successful responses. Also reverted a prior OAuth client-id encoding fix and updated X-Client-Info to use structured metadata format.","titleGenerated":"Supabase Client SDK v2.107.0 removes navigator.locks mutex and fixes auth errors","titleShort":"Auth mutex replaced with commit guard; expired JWT errors fixed","content":"## 2.107.0 (2026-06-02)\n\n### 🚀 Features\n\n- **auth:** remove navigator.locks-based mutex; introduce commit guard + dispose() ([#2392](https://github.com/supabase/supabase-js/pull/2392))\n- **realtime:** allow httpSend to send binary payload ([#2400](https://github.com/supabase/supabase-js/pull/2400))\n- **supabase:** update X-Client-Info to structured metadata format ([#2359](https://github.com/supabase/supabase-js/pull/2359))\n\n### 🩹 Fixes\n\n- **auth:** return AuthInvalidJwtError from getClaims for expired JWT ([#2395](https://github.com/supabase/supabase-js/pull/2395))\n- **auth:** recognize ?error= redirects in implicit grant gate ([#2407](https://github.com/supabase/supabase-js/pull/2407))\n- **auth): revert fix(auth:** encode client-id in oauth requests ([#2383](https://github.com/supabase/supabase-js/pull/2383), [#2417](https://github.com/supabase/supabase-js/pull/2417))\n- **postgrest:** return a structured error for non-JSON body on successful responses ([#2398](https://github.com/supabase/supabase-js/pull/2398))\n- **release:** pin workspace:* sibling deps before JSR publish ([#2418](https://github.com/supabase/supabase-js/pull/2418))\n- **release:** publish gotrue-js legacy mirror via pnpm ([#2419](https://github.com/supabase/supabase-js/pull/2419))\n\n### ❤️ Thank You\n\n- Claude Opus 4.7 (1M context)\n- Claude Sonnet 4.6\n- Eduardo Gurgel\n- Guilherme Souza\n- Katerina Skroumpelou @mandarini\n- Omar Al Matar @Bewinxed\n- youcef zr @youcefzemmar\n- youcefzemmar","publishedAt":"2026-06-02T14:09:01.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.107.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":1477,"contentTokens":480,"composition":{"bugs":4,"features":3,"enhancements":0}},{"id":"rel_Ju-P9MHaqi8JnnJqBbWtJ","version":"v2.106.2","type":"feature","title":"v2.106.2","summary":"## 2.106.2 (2026-05-25)\n\n### 🩹 Fixes\n\n- **auth:** restore signup user response ([#2391](https://github.com/supabase/supabase-js/pull/2391))\n- **misc:...","titleGenerated":null,"titleShort":null,"content":"## 2.106.2 (2026-05-25)\n\n### 🩹 Fixes\n\n- **auth:** restore signup user response ([#2391](https://github.com/supabase/supabase-js/pull/2391))\n- **misc:** add react-native export condition for Hermes-safe resolution ([#2393](https://github.com/supabase/supabase-js/pull/2393))\n\n### ❤️ Thank You\n\n- Myroslav Hryhschenko @BLOCKMATERIAL\n- Vaibhav @7ttp","publishedAt":"2026-05-25T11:05:26.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.106.2","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":347,"contentTokens":119,"composition":null},{"id":"rel_FR7MMYvz6riHuBXc4WOPy","version":"v2.106.1","type":"feature","title":"v2.106.1","summary":"## 2.106.1 (2026-05-20)\n\n### 🩹 Fixes\n\n- **auth:** encode client-id in oauth requests ([#2383](https://github.com/supabase/supabase-js/pull/2383))\n- *...","titleGenerated":null,"titleShort":null,"content":"## 2.106.1 (2026-05-20)\n\n### 🩹 Fixes\n\n- **auth:** encode client-id in oauth requests ([#2383](https://github.com/supabase/supabase-js/pull/2383))\n- **misc:** hide dynamic import from hermesc ([#2381](https://github.com/supabase/supabase-js/pull/2381))\n\n### ❤️ Thank You\n\n- Etienne Stalmans @staaldraad\n- Katerina Skroumpelou @mandarini","publishedAt":"2026-05-20T12:31:15.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.106.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":336,"contentTokens":121,"composition":null},{"id":"rel_3fmo-bCy2hmtxd65kkNAQ","version":"v2.106.0","type":"feature","title":"v2.106.0","summary":"## 2.106.0 (2026-05-18)\n\n### 🚀 Features\n\n- **supabase:** W3C/OpenTelemetry trace context propagation ([#2163](https://github.com/supabase/supabase-js...","titleGenerated":null,"titleShort":null,"content":"## 2.106.0 (2026-05-18)\n\n### 🚀 Features\n\n- **supabase:** W3C/OpenTelemetry trace context propagation ([#2163](https://github.com/supabase/supabase-js/pull/2163))\n\n### 🩹 Fixes\n\n- **auth:** return null user and session for email_change single-confirmation verifyOtp ([#2378](https://github.com/supabase/supabase-js/pull/2378))\n- **release:** mark @supabase/tracing private and snapshot it for JSR ([#2370](https://github.com/supabase/supabase-js/pull/2370))\n- **storage:** make StreamDownloadBuilder implement Promise and memoize executor ([#2367](https://github.com/supabase/supabase-js/pull/2367))\n\n### ❤️ Thank You\n\n- Claude Sonnet 4.5\n- Guilherme Souza\n- Katerina Skroumpelou @mandarini\n- oniani1","publishedAt":"2026-05-18T13:26:50.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.106.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":700,"contentTokens":228,"composition":null},{"id":"rel_TR368Rd8xHUYjmRSePyVy","version":"v2.105.4","type":"feature","title":"v2.105.4","summary":"## 2.105.4 (2026-05-08)\n\n### 🩹 Fixes\n\n- **auth:** return null from getItemAsync on JSON parse failure ([#2336](https://github.com/supabase/supabase-j...","titleGenerated":null,"titleShort":null,"content":"## 2.105.4 (2026-05-08)\n\n### 🩹 Fixes\n\n- **auth:** return null from getItemAsync on JSON parse failure ([#2336](https://github.com/supabase/supabase-js/pull/2336))\n- **postgrest:** restore non-Error abort detection in fetch catch ([#2335](https://github.com/supabase/supabase-js/pull/2335))\n- **realtime:** guard sessionStorage access in restricted-storage browsers ([#2339](https://github.com/supabase/supabase-js/pull/2339))","publishedAt":"2026-05-08T14:20:49.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.105.4","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_ixHRfOs8V139AbrQh01Du","version":"v2.105.3","type":"feature","title":"v2.105.3","summary":"## 2.105.3 (2026-05-04)\n\n### 🩹 Fixes\n\n- **auth:** narrow OAuth/CustomProvider types to fix downstream consumer typecheck ([#2326](https://github.com/...","titleGenerated":null,"titleShort":null,"content":"## 2.105.3 (2026-05-04)\n\n### 🩹 Fixes\n\n- **auth:** narrow OAuth/CustomProvider types to fix downstream consumer typecheck ([#2326](https://github.com/supabase/supabase-js/pull/2326))","publishedAt":"2026-05-04T16:01:38.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.105.3","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_hJ20Ss6HKtD7HeXHnnl_i","version":"v2.105.2","type":"feature","title":"v2.105.2","summary":"## 2.105.2 (2026-05-04)\n\n### 🩹 Fixes\n\n- **auth:** forward lockAcquireTimeout to SupabaseAuthClient ([#2309](https://github.com/supabase/supabase-js/p...","titleGenerated":null,"titleShort":null,"content":"## 2.105.2 (2026-05-04)\n\n### 🩹 Fixes\n\n- **auth:** forward lockAcquireTimeout to SupabaseAuthClient ([#2309](https://github.com/supabase/supabase-js/pull/2309))\n- **auth:** add toJSON to WebAuthnError for correct JSON serialization ([#2317](https://github.com/supabase/supabase-js/pull/2317))\n- **misc:** widen enum-like unions with (string & {}) for forward compat ([#2303](https://github.com/supabase/supabase-js/pull/2303))\n- **misc:** reduce any usage across packages ([#2314](https://github.com/supabase/supabase-js/pull/2314))\n- **postgrest:** unify insert/upsert signatures ([#2315](https://github.com/supabase/supabase-js/pull/2315))\n\n### ❤️ Thank You\n\n- Muzzaiyyan Hussain @MuzzaiyyanHussain","publishedAt":"2026-05-04T14:30:15.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.105.2","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_SD_uuD-smXdrzupaIt01m","version":"v2.105.1","type":"feature","title":"v2.105.1","summary":"## 2.105.1 (2026-04-28)\n\n### 🩹 Fixes\n\n- **postgrest:** query reassignment regression ([#2292](https://github.com/supabase/supabase-js/pull/2292))\n- *...","titleGenerated":null,"titleShort":null,"content":"## 2.105.1 (2026-04-28)\n\n### 🩹 Fixes\n\n- **postgrest:** query reassignment regression ([#2292](https://github.com/supabase/supabase-js/pull/2292))\n- **realtime:** surface real Error on transport-level CHANNEL_ERROR ([#2299](https://github.com/supabase/supabase-js/pull/2299))\n\n### ❤️ Thank You\n\n- Vaibhav @7ttp","publishedAt":"2026-04-28T12:08:52.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.105.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_M3s9i5UuVEHENDtaoklzI","version":"v2.105.0","type":"feature","title":"v2.105.0","summary":"## 2.105.0 (2026-04-27)\n\n### 🚀 Features\n\n- **auth:** add passkey support with WebAuthn registration, authentication, and management ([#2283](https://...","titleGenerated":null,"titleShort":null,"content":"## 2.105.0 (2026-04-27)\n\n### 🚀 Features\n\n- **auth:** add passkey support with WebAuthn registration, authentication, and management ([#2283](https://github.com/supabase/supabase-js/pull/2283))\n- **realtime:** Realtime deferred disconnect ([#2282](https://github.com/supabase/supabase-js/pull/2282))\n\n### 🩹 Fixes\n\n- **postgrest:** narrow column types after not(column, is, null) ([#2264](https://github.com/supabase/supabase-js/pull/2264))\n- **realtime:** annotate Timer/Vsn getters to avoid deep phoenix imports ([#2284](https://github.com/supabase/supabase-js/pull/2284))\n- **storage:** apply metadata, headers, and cacheControl dedupe to uploadToSignedUrl ([#2275](https://github.com/supabase/supabase-js/pull/2275))\n- **storage:** forward duplex option for stream uploads via uploadToSignedUrl ([#2289](https://github.com/supabase/supabase-js/pull/2289))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- oniani1","publishedAt":"2026-04-27T16:00:10.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.105.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_m4-6LDFtqKOY4E2dAT_De","version":"v2.104.1","type":"feature","title":"v2.104.1","summary":"## 2.104.1 (2026-04-23)\n\n### 🩹 Fixes\n\n- **auth:** emit PASSWORD_RECOVERY event for PKCE recovery flows ([#2272](https://github.com/supabase/supabase-...","titleGenerated":null,"titleShort":null,"content":"## 2.104.1 (2026-04-23)\n\n### 🩹 Fixes\n\n- **auth:** emit PASSWORD_RECOVERY event for PKCE recovery flows ([#2272](https://github.com/supabase/supabase-js/pull/2272))\n- **postgrest:** restore runtime test files to tstyche scope ([#2266](https://github.com/supabase/supabase-js/pull/2266))\n- **supabase:** propagate custom fetch to realtime client ([#2267](https://github.com/supabase/supabase-js/pull/2267))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini","publishedAt":"2026-04-23T13:28:59.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.104.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_-WE2wiOHt-UZG87rK7jmv","version":"v2.104.0","type":"feature","title":"v2.104.0","summary":"## 2.104.0 (2026-04-20)\n\n### 🚀 Features\n\n- **storage:** extract shared header normalization utility ([#2251](https://github.com/supabase/supabase-js/...","titleGenerated":null,"titleShort":null,"content":"## 2.104.0 (2026-04-20)\n\n### 🚀 Features\n\n- **storage:** extract shared header normalization utility ([#2251](https://github.com/supabase/supabase-js/pull/2251))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini","publishedAt":"2026-04-20T10:33:09.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.104.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_x1PQy0wVcn4GSjoIJwPMK","version":"v2.103.3","type":"feature","title":"v2.103.3","summary":"## 2.103.3 (2026-04-16)\n\n### 🩹 Fixes\n\n- **realtime:** throw Error objects instead of bare strings ([#2256](https://github.com/supabase/supabase-js/pu...","titleGenerated":null,"titleShort":null,"content":"## 2.103.3 (2026-04-16)\n\n### 🩹 Fixes\n\n- **realtime:** throw Error objects instead of bare strings ([#2256](https://github.com/supabase/supabase-js/pull/2256))\n- **storage:** correct signedUrl type to allow null in createSignedUrls ([#2254](https://github.com/supabase/supabase-js/pull/2254))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- oniani1","publishedAt":"2026-04-16T13:37:30.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.103.3","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_a8D-osAzf0ZCQzSYx0JcV","version":"v2.103.2","type":"feature","title":"v2.103.2","summary":"## 2.103.2 (2026-04-15)\n\n### 🩹 Fixes\n\n- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase...","titleGenerated":null,"titleShort":null,"content":"## 2.103.2 (2026-04-15)\n\n### 🩹 Fixes\n\n- **auth:** include Cloudflare error codes in NETWORK_ERROR_CODES ([#2239](https://github.com/supabase/supabase-js/pull/2239))\n- **auth:** remove Prettify wrapper from exported types for TypeDoc expansion ([#2250](https://github.com/supabase/supabase-js/pull/2250))\n- **misc:** add explicit return types to toJSON methods for JSR compat ([#2252](https://github.com/supabase/supabase-js/pull/2252))\n- **storage:** remove client-side signed URL render endpoint normalization ([#2249](https://github.com/supabase/supabase-js/pull/2249))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- Vansh Sharma @Vansh1811","publishedAt":"2026-04-15T13:57:35.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.103.2","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_kgSL6g3NBC_IIDh777wxz","version":"v2.103.1","type":"feature","title":"v2.103.1","summary":"## 2.103.1 (2026-04-15)\n\n### 🩹 Fixes\n\n- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabas...","titleGenerated":null,"titleShort":null,"content":"## 2.103.1 (2026-04-15)\n\n### 🩹 Fixes\n\n- **auth:** add toJSON to AuthError for correct JSON serialization ([#2238](https://github.com/supabase/supabase-js/pull/2238))\n- **postgrest:** handle bigint rpc ([#2245](https://github.com/supabase/supabase-js/pull/2245))\n- **storage:** add toJSON to StorageError for correct JSON serialization ([#2246](https://github.com/supabase/supabase-js/pull/2246))\n- **storage:** apply empty transform check to download and getPublicUrl ([#2219](https://github.com/supabase/supabase-js/pull/2219))\n\n### ❤️ Thank You\n\n- oniani1\n- Vaibhav @7ttp","publishedAt":"2026-04-15T08:14:34.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.103.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_i_fR7AvnsG4ul-jYXPF4K","version":"v2.103.0","type":"feature","title":"v2.103.0","summary":"## 2.103.0 (2026-04-09)\n\n### 🚀 Features\n\n- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabas...","titleGenerated":null,"titleShort":null,"content":"## 2.103.0 (2026-04-09)\n\n### 🚀 Features\n\n- **postgrest:** add stripNulls method for null value stripping ([#2189](https://github.com/supabase/supabase-js/pull/2189))\n- **storage:** add cacheNonce parameter for download ([#2234](https://github.com/supabase/supabase-js/pull/2234))\n\n### 🩹 Fixes\n\n- **postgrest:** fix scalar computed column type inference for isNotNullable and SETOF scalar ([#2224](https://github.com/supabase/supabase-js/pull/2224))\n\n### ❤️ Thank You\n\n- Katerina Skroumpelou @mandarini\n- Seydi Charyyev @TheSeydiCharyyev\n- Vaibhav @7ttp","publishedAt":"2026-04-09T06:57:09.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.103.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_kPXvrKAFKDNh6j0GQT5jf","version":"v2.102.1","type":"feature","title":"v2.102.1","summary":"## 2.102.1 (2026-04-07)\n\n### 🩹 Fixes\n\n- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supaba...","titleGenerated":null,"titleShort":null,"content":"## 2.102.1 (2026-04-07)\n\n### 🩹 Fixes\n\n- **functions:** add toJSON to FunctionsError for correct JSON serialization ([#2226](https://github.com/supabase/supabase-js/pull/2226))\n\n### ❤️ Thank You\n\n- oniani1","publishedAt":"2026-04-07T11:13:02.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.102.1","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null},{"id":"rel_JMyPb5Ywexyc-eeF1YyTm","version":"v2.102.0","type":"feature","title":"v2.102.0","summary":"## 2.102.0 (2026-04-07)\n\n### 🚀 Features\n\n- **postgrest:** add automatic retries for transient errors ([#2072](https://github.com/supabase/supabase-js...","titleGenerated":null,"titleShort":null,"content":"## 2.102.0 (2026-04-07)\n\n### 🚀 Features\n\n- **postgrest:** add automatic retries for transient errors ([#2072](https://github.com/supabase/supabase-js/pull/2072))\n- **postgrest:** add success discriminator field to PostgREST response types ([#2198](https://github.com/supabase/supabase-js/pull/2198))\n- **supabase:** export PostgrestFilterBuilder and StorageApiError from supabase-js ([#2222](https://github.com/supabase/supabase-js/pull/2222))\n\n### 🩹 Fixes\n\n- **auth:** downgrade console.error to console.warn for missing session ([#2214](https://github.com/supabase/supabase-js/pull/2214))\n- **ci:** add --ignore-scripts to platform test installs to block post install attacks ([#2206](https://github.com/supabase/supabase-js/pull/2206))\n- **postgrest:** add toJSON to PostgrestError for correct JSON serialization ([#2212](https://github.com/supabase/supabase-js/pull/2212))\n- **postgrest:** reject excess properties in insert, update, and upsert ([#2186](https://github.com/supabase/supabase-js/pull/2186))\n- **storage:** set correct content-type for uploads ([#2211](https://github.com/supabase/supabase-js/pull/2211))\n- **storage:** avoid duplicate content-type headers in vector requests ([#2220](https://github.com/supabase/supabase-js/pull/2220))\n\n### ❤️ Thank You\n\n- Clay\n- Guilherme Souza\n- Katerina Skroumpelou @mandarini\n- oniani1\n- Vaibhav @7ttp","publishedAt":"2026-04-07T07:43:25.000Z","url":"https://github.com/supabase/supabase-js/releases/tag/v2.102.0","media":[],"prerelease":false,"source":{"slug":"supabase-js","name":"Supabase JS","type":"github"},"product":{"slug":"supabase-client","name":"Client SDK"},"groupSlug":"supabase-client","groupName":"Client SDK","coverageCount":0,"contentChars":null,"contentTokens":null,"composition":null}],"pagination":{"nextCursor":"2026-04-07T07:43:25.000Z|2026-04-07T10:00:51.124Z|rel_JMyPb5Ywexyc-eeF1YyTm","limit":20}}