README.md

June 15, 2026 · View on GitHub

Supabase Logo

Supabase Swift SDK

Guides · Reference Docs

Coverage Status

Libraries

LibraryDescription
SupabaseFull client — includes all libraries below
AuthUser authentication and session management
PostgRESTQuery your Postgres database via REST
RealtimeSubscribe to database changes over WebSocket
StorageManage files and objects
FunctionsInvoke Supabase Edge Functions

Quick Start

Requirements

  • iOS 13.0+ / macOS 10.15+ / tvOS 13+ / watchOS 6+ / visionOS 1+
  • Xcode 15.3+
  • Swift 5.10+

Important

Check the Support Policy to learn when dropping Xcode, Swift, and platform versions will not be considered a breaking change.

Installation

Add supabase-swift as a Swift Package Manager dependency:

let package = Package(
    ...
    dependencies: [
        .package(
            url: "https://github.com/supabase/supabase-swift.git",
            from: "2.0.0"
        ),
    ],
    targets: [
        .target(
            name: "YourTargetName",
            dependencies: [
                .product(name: "Supabase", package: "supabase-swift")
            ]
        )
    ]
)

If you're using Xcode, use this guide to add supabase-swift to your project. Use https://github.com/supabase/supabase-swift.git for the URL when Xcode asks.

You can also add individual libraries (Auth, Realtime, Storage, PostgREST, Functions) instead of the full Supabase product.

Initialize the client

let client = SupabaseClient(
    supabaseURL: URL(string: "https://xyzcompany.supabase.co")!,
    supabaseKey: "your-publishable-key"
)

Initialize with custom options

let client = SupabaseClient(
    supabaseURL: URL(string: "https://xyzcompany.supabase.co")!,
    supabaseKey: "your-publishable-key",
    options: SupabaseClientOptions(
        db: .init(
            schema: "public"
        ),
        auth: .init(
            storage: MyCustomLocalStorage(),
            flowType: .pkce
        ),
        global: .init(
            headers: ["x-my-custom-header": "my-app-name"],
            session: URLSession.myCustomSession
        )
    )
)

Additional examples are available in the Examples directory.

Support Policy

Xcode

We only support Xcode versions that are currently eligible for submitting apps to the App Store. Once a specific version of Xcode is no longer supported, its removal from Supabase won't be treated as a breaking change and will occur in a minor release.

Swift

The minimum supported Swift version corresponds to the minor version released with the oldest-supported Xcode version. When a Swift version reaches its end of support, it will be dropped in a minor release, and this won't be considered a breaking change.

Platforms

We maintain support for the four latest major versions of each platform, including the current version.

When a platform version is no longer supported, Supabase will drop it in a minor release, and this won't count as a breaking change. For instance, iOS 14 will no longer be supported after the release of iOS 18, allowing its removal in a minor update.

For macOS, the named yearly releases are treated as major versions for this policy, regardless of their version numbers.

Important

Android, Linux and Windows work but aren't officially supported, and may stop working in future versions of the library.

Contributing

We welcome contributions! Please see the steps below.

  1. Fork the repo and clone it locally.
  2. Create a feature branch (git checkout -b feature/my-feature).
  3. Make your changes and add tests.
  4. Run make format to format Swift code.
  5. Run make PLATFORM=IOS XCODEBUILD_ARGUMENT=test xcodebuild to verify tests pass.
  6. Commit using Conventional Commits (e.g. feat(auth): add PKCE support).
  7. Open a pull request against main.

Support

License

This project is licensed under the MIT License — see the LICENSE file for details.


WebsiteDocumentationCommunityTwitter