Skip to content

Apple auth via native iOS flow #1442

Open
@gnprice

Description

@gnprice

After #462, the app will support using Apple auth, aka "Sign in with Apple", to log into Zulip.

The initial version of that will mean going through the web-based flow. That's the only flow that's available in any case on Android, and it's a perfectly reasonable UX; it's the same kind of UX as when people log in via GitHub, or Google, or any other form of SSO.

But on iOS, there's an alternate flow for "Sign in with Apple" which uses native UI provided by the system, and it'd be nice to use that instead. This issue is for doing that.

Implementation

Because this issue is closely tied to our interaction with Apple, it will need to be done by a member of the core team.

Upstream docs here:
https://developer.apple.com/sign-in-with-apple/
but I hope we can complete this feature without (re-)reading those in any detail — instead we can crib from the work we did back in 2020, when we read up on this closely in order to implement it the first time.

We'll follow the example of the legacy app. See the implementation there, from 2020:
https://github.com/zulip/zulip-mobile/pull/4034/files

That implementation uses a library from Expo, in the RN ecosystem, namely expo-apple-authentication, to do much of the work. For Flutter, @chrisbobbe found at #36 (comment) that there's a "Flutter Favorite" plugin for it: package:sign_in_with_apple. So let's try using that.

Key points appear in particular commits from the legacy app's implementation:

Testing

An important part of the work on this issue will be to test it end to end. The only practical way to do that is manually: fire up the app with your draft implementation of the feature, and try using it.

For instructions on how to do that, see zulip/zulip-mobile@c19cbe2, or perhaps more readably:
https://github.com/zulip/zulip-mobile/blob/main/docs/howto/ios-tips.md#sign-in-with-apple

See also this 2025 thread which has some updates to those instructions:
#mobile-dev-help > Enable "Sign in with Apple" for Flutter App

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    a-iOSIssues specific to iOS, or requiring iOS-specific worka-login

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions