> ## Documentation Index
> Fetch the complete documentation index at: https://zite.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What happened to user sync

> Learn how user sync changed in Zite 2.0 and what happens to migrated apps.

<Check>
  **Apps that used user sync still work.** You don't need to set them up again.
</Check>

## What changed

In Zite 1.0, your app's users lived outside your database. **User sync** connected those accounts to a table in Airtable or Zite Database and kept the user fields up to date.

In Zite 2.0, users are rows in the workspace database alongside the rest of your data. There is nothing to sync, so the `Sync with database` button was removed.

In new apps, you link a table directly to your users instead of copying them. If an app checks an external list before allowing access, use [custom access rules](/help/platform/access/custom-access-rules).

## What happened to your migrated app

During migration, Zite converted your user sync setup into custom access rules on the app:

| What you had in Zite 1.0 | After migrating |
| - | - |
| Only people in your users table could sign in | A rule checks the same table on every sign-in |
| Someone removed from the table lost access | They're signed out at the next check |
| New sign-ups were added to your users table | They're still added automatically |
| Your app read extra columns from the user's row | Those columns are still available |
| Nobody else could sign up | **Who can sign up?** is set to **Invite only** |

Your users table remains the source of truth for app access.

<Note>
  Email matching is now case-insensitive. Someone whose row reads `Sam@example.com` can sign in as `sam@example.com`. Zite 1.0 treated those addresses as different.
</Note>

## Where to see it

Open your app, go to `Settings` → `Login`, then scroll down to **Custom access rules**. The rules Zite generated for your app are listed there in plain language.

You'll also see **Who can sign up?** set to `Invite only`.

<Note>
  Migrated apps show **Invite only** because user sync used a closed roster. New apps default to **Anyone**. The migrated setting prevents people outside the original users table from signing up.
</Note>

## Change how it works now

To change the rules, click `Chat about this` in the Custom access rules section and describe what you want. For example:

```text theme={null}
Check the Members table instead of the Users table when someone signs in.
```

```text theme={null}
Let anyone with a company email sign up, but keep checking the Members table for everyone else.
```

```text theme={null}
Stop adding new sign-ups to the Members table.
```

See [Custom access rules](/help/platform/access/custom-access-rules) for what's possible.

## If you're building a new app

New apps don't need user sync. Users and app data share the workspace database, so you can link a table directly to them. See [Store extra data about your users](/help/platform/access/user-data).

Use custom access rules when the list of allowed users lives elsewhere, such as an Airtable base, CRM, or HR system.

## FAQs

<AccordionGroup>
  <Accordion title="My old apps work fine, but I can't turn user sync on in a new app">
    That's expected. The button was removed because new apps store users in the workspace database. Most of what user sync did now happens automatically.

    If your new app genuinely needs to check an external list before letting someone in, ask the Agent to set up a [custom access rule](/help/platform/access/custom-access-rules). You'll get the same behavior your migrated apps have.
  </Accordion>

  <Accordion title="Do I have to migrate off this?">
    No. Migrated apps keep working with the rules Zite generated, and there's no deadline to change them.
  </Accordion>

  <Accordion title="Will the generated rules stop working?">
    No. They're part of your app now, the same as any other logic in it.
  </Accordion>

  <Accordion title="What if I delete the rules?">
    Your app falls back to the **Who can sign up?** setting, and your users table stops controlling access. Anyone the setting allows can sign in, whether or not they're in your table.

    If that's not what you want, leave the rules in place or ask the Agent to adjust them instead of removing them.
  </Accordion>

  <Accordion title="Where did my users go?">
    They're in your workspace database. Open your app's `Users` tab to see everyone who can sign in, or open the workspace's `Members` page to see everyone across all its apps.

    Your old users table is unchanged. It's still a normal database table, and the app still reads from it.
  </Accordion>
</AccordionGroup>

<p className="zite-related-topics-heading">Related topics</p>

<div className="zite-related-topics">
  <a href="/help/platform/access/custom-access-rules">Custom access rules</a>
  <a href="/help/platform/access/user-data">User data</a>
  <a href="/help/platform/access/authentication">Authentication</a>
  <a href="/help/platform/access/manage-users">Manage users</a>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.