Skip to content

chore(main): release 3.0.0-beta - #1204

Open
supabase-releaser[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main
Open

supabase-releaser[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main

Conversation

@supabase-releaser

@supabase-releaser supabase-releaser Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

3.0.0-beta (2026-09-17)

⚠ BREAKING CHANGES

  • retry timing changes for every module (jitter instead of a fixed schedule; Auth makes 3 attempts instead of 2), Storage and Functions start retrying transient failures by default, and only URLError counts as a retryable transport failure. See V3_MIGRATION.md.
  • helpers: URLSessionTransport returns a 307/308 response as-is when the request body is .single, and fails a .known streamed body whose byte count does not match. See V3_MIGRATION.md.
  • FunctionInvokeOptions.init(... timeoutInterval: TimeInterval?) is now timeout: Duration?, and FunctionsClient.requestIdleTimeout is a Duration. See V3_MIGRATION.md.
  • auth: OAuthClient.redirectUris, OAuthClient.grantTypes and OAuthClient.responseTypes are optional.
  • auth: OAuthClient.clientName, OAuthAuthorizationClient.name, OAuthAuthorizationUser.email and OAuthAuthorizationDetails.scope are now String? instead of String. See V3_MIGRATION.md.
  • realtime: public RealtimeError with kind; remove WebSocketError and NSError placeholders (#1338)
  • auth: make AuthError a struct with kind, HTTP context and wrapped failures (#1337)
  • postgrest: make PostgrestError a wrapper with ServerError payload; remove HTTPError (#1336)
  • storage: make StorageError a struct with kind, server payload and HTTP context (#1335)
  • functions: make FunctionsError a struct with kind and HTTP context (#1334)
  • HTTPError.response, PostgrestResponse.response, AuthError.api(underlyingResponse:) and FunctionsClient.invoke(decode:) carry HTTPTypes.HTTPResponse instead of HTTPURLResponse. See V3_MIGRATION.md.
  • GlobalOptions.init has no session: parameter and GlobalOptions.session is removed. See V3_MIGRATION.md.
  • AuthError gains oauthFlowFailed(message:), which breaks exhaustive switches over AuthError. See V3_MIGRATION.md.
  • postgrest: no public symbol moved module, changed shape, or was renamed, and no call site needs editing. What changed is the guarantee: PostgREST's pre-v3 builders stop receiving behavior fixes as of this release, are deprecated later in v3, and are removed in v4. See V3_MIGRATION.md.
  • postgrest: Optional no longer conforms to PostgrestFilterValue. Use is(_:value:) to test for NULL. See V3_MIGRATION.md.
  • postgrest,realtime: standardize per-call encoder/decoder overrides (#1248)
  • storage: drop encoder/decoder customization (#1247)
  • storage: make Storage client types stateless structs (#1246)
  • postgrest: make client and builders stateless value types (#1240)
  • functions: make FunctionsClient stateless and a struct (#1233)
  • auth: always emit locally stored session as initial session (#1214)
  • helpers: rename AnyJSON to JSONValue (#1232)
  • functions: convert FunctionInvokeOptions.Method to a RawRepresentable struct (#1229)
  • postgrest: convert TextSearchType to a RawRepresentable struct (#1228)
  • postgrest: convert PostgrestReturningOptions to a RawRepresentable struct (#1227)
  • postgrest: convert CountOption to a RawRepresentable struct (#1226)
  • postgrest: convert PostgrestFilterBuilder.Operator to a RawRepresentable struct (#1225)
  • auth: convert SignOutScope to a RawRepresentable struct (#1224)
  • auth: convert ResendMobileType to a RawRepresentable struct (#1223)
  • auth: convert ResendEmailType to a RawRepresentable struct (#1222)
  • auth: convert EmailOTPType to a RawRepresentable struct (#1221)
  • auth: convert MobileOTPType to a RawRepresentable struct (#1220)
  • auth: convert OpenIDConnectCredentials.Provider to a RawRepresentable struct (#1219)
  • auth: convert Provider to a RawRepresentable struct (#1217)
  • auth: convert MessagingChannel to a RawRepresentable struct (#1216)
  • auth: convert FactorStatus to a RawRepresentable struct (#1215)
  • auth: fix macOS Keychain consent prompt and storage contract (#1208)
  • auth: drop LocalStorage implementation for Windows platform (#1213)
  • auth,storage,realtime,helpers: narrow Codable conformances to their actual usage direction (#1209)
  • SupabaseLogger, SupabaseLogMessage, SupabaseLogLevel, SupabaseLoggerTaskLocal, and OSLogSupabaseLogger are removed. Use Logging.Logger (swift-log) directly. See V3_MIGRATION.md.
  • remove all deprecated pre-v3 APIs (#1206)
  • auth: AuthResponse.user is now User? instead of User. Update call sites that access response.user directly to handle the optional (e.g. response.user?.email).

Features

  • auth: make AuthError a struct with kind, HTTP context and wrapped failures (#1337) (cd5cbf4)
  • auth: support concurrent PKCE flows via flow id (#1245) (e7b2325)
  • auth: verify ES256 JWTs locally in getClaims (#1316) (ef14b8b)
  • client: add db.retry option to disable PostgREST retries (#1244) (894ad20)
  • expose one public transport protocol and middleware chain across all modules (#1325) (a83b4b2)
  • functions: make FunctionsError a struct with kind and HTTP context (#1334) (333afd6)
  • helpers: add SupabaseError root and HTTPErrorResponse (#1333) (4da4dd2)
  • make the request timeout configurable per client and per call (#1343) (35ca100)
  • postgrest,realtime: standardize per-call encoder/decoder overrides (#1248) (4f7d8a8)
  • postgrest: accept a collection of rows in typed insert and upsert (#1306) (fbf2bb7)
  • postgrest: accept Decimal, Float and sized integers as filter values (#1346) (3f2f8da)
  • postgrest: add @relationship and embeds in selections (#1307) (1689765)
  • postgrest: add @SelectionOf for column subsets (#1260) (f47933e)
  • postgrest: add actionable macro diagnostics (#1261) (8ee0a6b)
  • postgrest: add aggregate functions as select-only expressions (#1294) (4d944f7)
  • postgrest: add casts and JSON paths as column expressions (#1293) (1852b9e)
  • postgrest: add column expressions and the filter tree (#1288) (b6bfaa6)
  • postgrest: add count and head to the typed surface (#1305) (13132e3)
  • postgrest: add embedded relations to the column namespace (#1295) (4253a08)
  • postgrest: add from(_ type:) and a typed whole-row select (#1253) (52eec30)
  • postgrest: add key-path filters and modifiers to the typed query (#1254) (d177ab6)
  • postgrest: add the @table macro and its marker attributes (#1259) (7a2c450)
  • postgrest: add the PostgrestMacros targets (#1258) (c26da5b)
  • postgrest: add the relation and selection protocols (#1252) (f2f37d2)
  • postgrest: add the remaining filter operators (#1289) (2638f4a)
  • postgrest: add the where and order closures (#1291) (8345ea0)
  • postgrest: add typed writes gated on the writable refinement (#1255) (b595383)
  • postgrest: allow isNull() on a JSON path (#1304) (4d0f178)
  • postgrest: diagnose stored properties with no type annotation (#1274) (d57414c)
  • postgrest: generate a Columns namespace from @table (#1290) (845ff60)
  • postgrest: let a typed upsert ignore duplicates instead of merging them (#1309) (3204541)
  • postgrest: make PostgrestError a wrapper with ServerError payload; remove HTTPError (#1336) (370bb4d)
  • realtime: public RealtimeError with kind; remove WebSocketError and NSError placeholders (#1338) (8a366c8)
  • replace Helpers.HTTPRequest/HTTPResponse with swift-http-types across the HTTP layer (#1327) (75dd30a)
  • share one jittered retry middleware across Auth and PostgREST (#1341) (f0d0d7b)
  • stop trapping on dynamic values in library code (#1323) (c30c199)
  • storage: make StorageError a struct with kind, server payload and HTTP context (#1335) (229d423)

Bug Fixes

  • auth,storage,realtime,helpers: narrow Codable conformances to their actual usage direction (#1209) (0b558d5)
  • auth: address code-review findings on VerifyOTPResponse (#1205) (f285277)
  • auth: always emit locally stored session as initial session (#1214) (12cfe79)
  • auth: convert EmailOTPType to a RawRepresentable struct (#1221) (9dc627e)
  • auth: convert FactorStatus to a RawRepresentable struct (#1215) (2fa8d76)
  • auth: convert MessagingChannel to a RawRepresentable struct (#1216) (14dbc6a)
  • auth: convert MobileOTPType to a RawRepresentable struct (#1220) (3c39d48)
  • auth: convert OpenIDConnectCredentials.Provider to a RawRepresentable struct (#1219) (23e1793)
  • auth: convert Provider to a RawRepresentable struct (#1217) (dd7fcb2)
  • auth: convert ResendEmailType to a RawRepresentable struct (#1222) (42f66bd)
  • auth: convert ResendMobileType to a RawRepresentable struct (#1223) (b1c877d)
  • auth: convert SignOutScope to a RawRepresentable struct (#1224) (0c63222)
  • auth: convert WebAuthnChallengeType to a RawRepresentable struct (#1218) (966859b)
  • auth: decode OAuth clients that omit redirect URIs, grant types or response types (#1349) (0ed1e8c)
  • auth: decode OAuth server responses that omit optional fields (#1347) (b2b6c30)
  • auth: drop LocalStorage implementation for Windows platform (#1213) (7bf6da1)
  • auth: drop refresh token from log metadata, inject client logger into event emitter (#1211) (48e6438)
  • auth: fall back to the JWT header alg when the JWK omits one (#1348) (977ded6)
  • auth: fix macOS Keychain consent prompt and storage contract (#1208) (528bd5f)
  • auth: listen on the callback scheme the provider redirects to (#1363) (ba8ebab)
  • auth: return VerifyOTPResponse from verifyOTP instead of AuthResponse (#1088) (dd5e825)
  • auth: send skip_http_redirect so signInWithSSO gets JSON instead of a 303 (#1321) (321c961)
  • ci: fail loudly instead of silently exporting stale coverage (#1242) (5f59480)
  • ci: purge stale Clang module cache in xcodebuild legacy job (#1243) (1a8b451)
  • docs: match DocC's current warning phrasing and fix stale symbol links (#1241) (80ad2a1)
  • functions: convert FunctionInvokeOptions.Method to a RawRepresentable struct (#1229) (3df400c)
  • helpers: make OSLogHandler internal-only (#1212) (04c7383)
  • postgrest: close the typed upsert's missing conflict target (#1283) (06f5c75)
  • postgrest: convert CountOption to a RawRepresentable struct (#1226) (672c438)
  • postgrest: convert PostgrestFilterBuilder.Operator to a RawRepresentable struct (#1225) (1149c6f)
  • postgrest: convert PostgrestReturningOptions to a RawRepresentable struct (#1227) (068c6fd)
  • postgrest: convert TextSearchType to a RawRepresentable struct (#1228) (3dd7e62)
  • postgrest: keep resolution=merge-duplicates when returning() follows upsert (#1308) (7e64c05)
  • postgrest: let a typed update clear a nullable column (#1281) (bc52fc7)
  • postgrest: let Update change a primary key column (#1280) (62bb21b)
  • postgrest: make the primary key optional in Insert, not absent (#1278) (a595e61)
  • postgrest: reject nil filter operands at compile time (#1238) (61f6fb4)
  • storage: drop encoder/decoder customization (#1247) (353e87d)
  • supabase: propagate access-token provider errors instead of swallowing them (#1236) (84f3370)
  • tests: make request snapshot assertions actually fail (#1239) (72b36cc)

Performance Improvements

  • helpers: stream request bodies instead of buffering them before upload (#1342) (a61ef23)

Code Refactoring

  • functions: make FunctionsClient stateless and a struct (#1233) (88a5efe)
  • helpers: rename AnyJSON to JSONValue (#1232) (9f40f8f)
  • postgrest: make client and builders stateless value types (#1240) (b52d385)
  • postgrest: move today's builders under Legacy/ (#1267) (d96ed5d)
  • remove all deprecated pre-v3 APIs (#1206) (6182b19)
  • replace SupabaseLogger with swift-log (SDK-1412) (#1210) (7325a6f)
  • storage: make Storage client types stateless structs (#1246) (1dac92d)

This PR was generated with Release Please. See documentation.

@coveralls

coveralls commented Aug 13, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 35211075544

Coverage increased (+0.2%) to 89.107%

Details

  • Coverage increased (+0.2%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 11925
Covered Lines: 10626
Line Coverage: 89.11%
Coverage Strength: 900520.1 hits per line

💛 - Coveralls

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

⚠️ Capability matrix drift detected

The following capabilities are marked implemented in the matrix but could not be found in swift:

  • client.session_management.persist_session → expected symbol: AuthLocalStorage.defaultLocalStorage
  • functions.invocation.streaming_response → expected symbol: FunctionsClient._invokeWithStreamedResponse

The following capabilities are marked implemented in swift but have no registered symbols to verify:

  • auth.passkey.register_passkey (no symbols list — cannot confirm implementation exists)
  • auth.passkey.sign_in_with_passkey (no symbols list — cannot confirm implementation exists)
  • client.observability.trace_propagation (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.request_cancellation (no symbols list — cannot confirm implementation exists)
  • functions.invocation.request_cancellation (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.url_cache_nonce (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.request_cancellation (no symbols list — cannot confirm implementation exists)

These may have been renamed, removed, or never registered. Please update the capability matrix.
See: https://github.com/supabase/sdk/blob/main/packages/capability-matrix/docs/capability-matrix.md

@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch from dc5a485 to 6e38d52 Compare August 13, 2026 13:02
@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch 6 times, most recently from bc32ca4 to ded0877 Compare August 25, 2026 08:29
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Potential Breaking API Changes Detected

This PR appears to contain breaking API changes. Please review the changes below:

API Check Output

If this is intentional, please update your PR title or commit message to include:

  • ! after the type (e.g., feat!: remove deprecated method)
  • Or include BREAKING CHANGE: in the commit body

If this is a false positive, you can safely ignore this warning.

@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch 16 times, most recently from dc8f323 to c781722 Compare August 31, 2026 17:57
@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch 6 times, most recently from cb8cc3f to 4474742 Compare September 1, 2026 13:06
@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch 2 times, most recently from dd69b7f to ab45a93 Compare September 11, 2026 13:16
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 09a034fd-f1cd-4a9d-a183-48e4795665df

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch 7 times, most recently from d27d498 to e1e078f Compare September 17, 2026 09:33
@supabase-releaser
supabase-releaser Bot force-pushed the release-please--branches--main branch from e1e078f to 0998c34 Compare September 17, 2026 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant