Skip to content

chore: raise the toolchain floor to Swift 6.2 / Xcode 26.0 - #1350

Open
grdsdev wants to merge 1 commit into
mainfrom
guilhermesouza/sdk-1864-raise-the-toolchain-floor-to-swift-62-xcode-260-for-v3
Open

grdsdev wants to merge 1 commit into
mainfrom
guilhermesouza/sdk-1864-raise-the-toolchain-floor-to-swift-62-xcode-260-for-v3

Conversation

@grdsdev

@grdsdev grdsdev commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

What

Raises the minimum toolchain from Swift 6.1 / Xcode 16.4 to Swift 6.2 / Xcode 26.0.

  • Package.swift: swift-tools-version:6.2; drop the stale swift-log pin comment (the range was already 1.5.0..<2.0.0, see SDK-1412).
  • README.md, AGENTS.md: Xcode 26.0+ / Swift 6.2+.
  • CI: the legacy xcodebuild job now tests Xcode 26.0 instead of 16.4.
  • Sources/Helpers: remove the dead #if compiler(>=6.0) fallbacks in TaskLocalHelpers.swift and Logger/Trace.swift.
  • V3_MIGRATION.md: note the new floor.
  • Package.resolved: drops the unused swift-issue-reporting entry (a fresh resolve on main drops it too).

Why

The support policy ties the Xcode floor to versions eligible for App Store submission. Since April 28, 2026, App Store Connect only accepts uploads built with Xcode 26 or later (Apple). Xcode 26.0 ships Swift 6.2, so the 6.1 floor was already behind policy. Dropping it is not a breaking change under the policy, but v3 is the cleanest moment to do it.

Not 6.3 or 6.4: every Xcode 26.x is still eligible for submission, and only 26.0 is guaranteed to have Swift 6.2. Swift 6.4 shipped this week with Xcode 27, which is not mandatory until April 2027.

Test plan

  • swift build --explicit-target-dependency-import-check error: clean
  • swift test --skip IntegrationTests: 1327 tests in 134 suites passed
  • swift test --traits OpenTelemetry --filter SupabaseTests: 30 tests passed
  • swift format lint --recursive --strict Sources Tests: clean
  • ./scripts/spell-check.sh: 0 issues
  • CI confirms the macos-legacy job image has Xcode 26.0.

Fixes SDK-1864

The support policy ties the Xcode floor to versions eligible for App
Store submission. Since April 28, 2026 that is Xcode 26 or later, which
ships Swift 6.2, so the 6.1 / Xcode 16.4 floor was already out of
policy.

- Package.swift: swift-tools-version 6.2; drop the stale swift-log pin
  comment (the range was already open, see SDK-1412).
- README / AGENTS: Xcode 26.0+ / Swift 6.2+.
- CI: legacy xcodebuild job tests Xcode 26.0 instead of 16.4.
- Helpers: remove the dead `#if compiler(>=6.0)` fallbacks in
  TaskLocalHelpers and Trace.
- V3_MIGRATION: note the new floor.

Refs SDK-1864

Co-Authored-By: Claude <noreply@anthropic.com>
@grdsdev
grdsdev requested a review from a team as a code owner September 16, 2026 11:42
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7bc78b33-4509-48c7-b5e0-c86b7e068414

📥 Commits

Reviewing files that changed from the base of the PR and between a61ef23 and d1048ed.

⛔ Files ignored due to path filters (1)
  • Package.resolved is excluded by !**/Package.resolved
📒 Files selected for processing (7)
  • .github/workflows/ci.yml
  • AGENTS.md
  • Package.swift
  • README.md
  • Sources/Helpers/Logger/Trace.swift
  • Sources/Helpers/TaskLocalHelpers.swift
  • V3_MIGRATION.md

Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review.


📝 Summary

Summary by CodeRabbit

  • Requirements

    • Minimum supported versions are now Xcode 26.0 and Swift 6.2.
    • Swift package tools now require version 6.2.
  • Documentation

    • Updated the README, contributor guidance, and v3 migration guide with the new toolchain requirements.
    • The migration guide confirms that updating Xcode is required, with no source changes needed.
  • Compatibility

    • Updated concurrency helper APIs to use Swift 6.2 actor-isolation behavior consistently.

Walkthrough

The package now requires Swift 6.2 and Xcode 26.0. The CI macOS legacy matrix uses Xcode 26.0. Documentation and migration guidance reflect the new requirements. The trace helper and TaskLocal.withValue now use single implementations with isolation parameters. Their pre-Swift 6 branches and _unsafeInheritExecutor usage were removed.

Priority: ➖ Normal

Change: Other

Merge Risk: ⚪ Minimal · up to d1048

The new minimum toolchain requirement is consistently configured and documented, with no actionable compatibility or behavior regression identified.


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.

@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.

@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 35091806590

Coverage remained the same at 88.493%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: 9 uncovered changes across 1 file (9 of 18 lines covered, 50.0%).
  • 1 coverage regression across 1 file.

Uncovered Changes

File Changed Covered %
Sources/Helpers/TaskLocalHelpers.swift 9 0 0.0%
Total (2 files) 18 9 50.0%

Coverage Regressions

1 previously-covered line in 1 file lost coverage.

File Lines Losing Coverage Coverage
Sources/Helpers/TaskLocalHelpers.swift 1 0.0%

Coverage Stats

Coverage Status
Relevant Lines: 11888
Covered Lines: 10520
Line Coverage: 88.49%
Coverage Strength: 200.75 hits per line

💛 - Coveralls

@github-actions

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants