Supabase Swift SDK
Libraries
| Library | Description |
|---|---|
| Supabase | Full client — includes all libraries below |
| Auth | User authentication and session management |
| PostgREST | Query your Postgres database via REST |
| Realtime | Subscribe to database changes over WebSocket |
| Storage | Manage files and objects |
| Functions | Invoke Supabase Edge Functions |
Quick Start
Requirements
- iOS 16.0+ / macOS 13.0+ / tvOS 16+ / watchOS 9+ / visionOS 1+
- Xcode 16.4+
- Swift 6.1+
[!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"],
http: .init(transport: URLSessionTransport(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.
- Fork the repo and clone it locally.
- Create a feature branch (
git checkout -b feature/my-feature). - Make your changes and add tests.
- Run
./scripts/format.shto format Swift code. - Run
PLATFORM=IOS XCODEBUILD_ARGUMENT=test ./scripts/xcodebuild.shto verify tests pass. - Commit using Conventional Commits (e.g.
feat(auth): add PKCE support). - Open a pull request against
main.
Support
- Documentation: supabase.com/docs/reference/swift
- Community: GitHub Discussions
- Issues: GitHub Issues
- Discord: Supabase Discord
License
This project is licensed under the MIT License — see the LICENSE file for details.
Website • Documentation • Community • Twitter