Back to Supabase

Installing

apps/docs/docs/ref/swift/installing.mdx

1.26.083.1 KB
Original Source

Install using Swift Package Manager

<RefSubLayout.EducationRow> <RefSubLayout.Details>

You can install Supabase package using Swift Package Manager.

The package exposes multiple libraries, you can choose between adding all of them using Supabase, or some of:

- `Auth`
- `Realtime`
- `Postgrest`
- `Functions`
- `Storage`

If you use Xcode, follow [Apple's dependencies guide](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app) to add supabase-swift to your project. Use https://github.com/supabase-community/supabase-swift.git for the url when Xcode asks.

If you don't want the full Supabase environment, you can add individual packages, such as Functions, `Auth`, `Realtime`, `Storage`, or `PostgREST`.

</RefSubLayout.Details>

<RefSubLayout.Examples>

<Tabs
  size="small"
  type="underlined"
  defaultActiveId="swift"
  queryGroup="framework"
>
  <TabPanel id="swift" label="Package.swift">

    ```swift
    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", // Auth, Realtime, Postgrest, Functions, or Storage
                        package: "supabase-swift"
                    ),
                ]
            )
        ]
    )
    ```

  </TabPanel>
</Tabs>

</RefSubLayout.Examples> </RefSubLayout.EducationRow>

Enable Data API access

<RefSubLayout.EducationRow> <RefSubLayout.Details>

supabase-swift uses the Data API to query and mutate your Postgres data. You first need to grant Data API roles permissions to access your tables and functions.

In [Data API integrations settings](/dashboard/project/_/integrations/data_api/settings), expose the specific tables and functions you want to access. To automatically grant access for new tables and functions in `public`, enable **Default privileges for new entities**.

Alternatively, use SQL to grant the required permissions:

</RefSubLayout.Details>

<RefSubLayout.Examples>

```sql
-- Before granting access to client roles, make sure RLS is enabled
-- and create the policies required for each role's allowed operations.
alter table public.your_table enable row level security;
-- create policy ... on public.your_table ...;

-- Grant least-privilege access to tables after RLS and policies are in place
grant select on public.your_table to anon;
grant select, insert, update, delete on public.your_table to authenticated;
grant all on public.your_table to service_role;

-- Grant execute on functions after verifying any table access they rely on
grant execute on function public.your_function to authenticated, service_role;
```

</RefSubLayout.Examples> </RefSubLayout.EducationRow>