Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To add Snapchat login to a Swift app, create a Snap Kit app in the Snap Kit Developer Portal, add the Login Kit dependency, configure the client ID and matching OAuth redirect URL, and pass the returned URL to Snap’s login handler. For sharing, use Creative Kit’s current code-only integration rather than starting a new project with its installable SDK: Snap says the older SDK will continue to work but will no longer receive updates. This guide covers both workflows and the configuration and media limits to plan around.

Choose the right Snap Kit feature

Login Kit and Creative Kit solve different problems. Login Kit asks a person to authorize your app to receive a limited set of identity information. Creative Kit lets your app hand content to Snapchat for sharing or creation. Neither is a general-purpose route to a user’s private Snapchat data.

Feature Use it for Important distinction
Login Kit Requesting permitted profile details such as display name and, optionally, a Bitmoji avatar Users control consent, including the optional Bitmoji permission. It does not grant access to private messages, contacts, or arbitrary account data.
Creative Kit Handing media or creative content from your app to Snapchat For a new integration, use the code-only version. The older installable Creative Kit SDK is no longer updated.

Create and configure a Snap Kit app

Register the app and obtain its client ID

  1. Create an app in the Snap Kit Developer Portal and copy its OAuth client ID. Keep the client ID available for the iOS configuration; it identifies your app to Snap.
  2. Choose a redirect URL for your app, for example myapp://snap-kit/oauth2. Register that exact URL in the developer portal. The scheme, host, path, and spelling must match what you put in the app’s configuration; a mismatch causes an OAuth error.
  3. Set the iOS deployment target to iOS 11.0 or later. Older Login Kit tutorial material says iOS 10.0+, but the current Login Kit reference lists iOS 11.0+.

Add Login Kit to the project

Snap documents CocoaPods and Carthage distribution, with independent kit subspecs. With CocoaPods, add the Login Kit subspec to your Podfile, selecting a SnapSDK version available for your project:

pod 'SnapSDK', '<version>', :subspecs => ['SCSDKLoginKit']

Then install the pods and open the generated .xcworkspace in Xcode. If your project uses Carthage instead, use the documented Carthage binaries and link the Login Kit framework as described in Snap’s distribution instructions. Do not add the old installable Creative Kit dependency just to implement new sharing; its update path is the code-only integration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configure Info.plist

Add the client ID, redirect URL, and the scopes your app actually needs. The following example requests display name and Bitmoji avatar; remove the avatar scope if the app does not need it.

<key>SCSDKClientId</key>
<string>YOUR_CLIENT_ID</string>
<key>SCSDKRedirectUrl</key>
<string>myapp://snap-kit/oauth2</string>
<key>SCSDKScopes</key>
<array>
  <string>https://auth.snapchat.com/oauth2/api/user.display_name</string>
  <string>https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar</string>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>snapchat</string>
  <string>bitmoji-sdk</string>
  <string>itms-apps</string>
</array>

Register the app’s URL scheme separately using the same scheme as the redirect URL. For myapp://snap-kit/oauth2, the scheme is myapp. In Xcode, add it under the target’s URL Types; the corresponding Info.plist entry is nested under CFBundleURLTypes:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myapp</string>
    </array>
  </dict>
</array>

Do not add the full redirect URL as a URL scheme: the scheme entry is only the part before the first colon. Keep the full redirect URL in SCSDKRedirectUrl and in the developer portal.

Implement Login Kit in Swift

Use Snap’s login button or call the login client

Import Login Kit in the view or controller that starts authentication:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import SCSDKLoginKit

let loginButton = SCSDKLoginButton() { (success: Bool, error: Error?) in
    if success {
        // Continue to the authorized-profile-data step.
    } else if let error = error {
        // Show or record an appropriate login error.
    }
}

The provided button is the simplest way to start. If your app needs its own UI, call the login client from a view controller instead:

import SCSDKLoginKit

SCSDKLoginClient.login(from: viewController) { (success: Bool, error: Error?) in
    if success {
        // Continue to the authorized-profile-data step.
    } else if let error = error {
        // Handle cancellation or an authentication error.
    }
}

Treat a false success value as an unsuccessful or incomplete sign-in; do not assume that profile data is available until the login flow and the subsequent data request both succeed.

Forward the OAuth callback to Snap

The redirect returns through the app’s open-URL path. Forward the URL and options to Login Kit rather than trying to parse the OAuth response yourself. In an app delegate using the URL-opening delegate method, the handoff is:

import SCSDKLoginKit

func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any] = [:]
) -> Bool {
    return SCSDKLoginClient.application(app, open: url, options: options)
}

Put this in the app delegate/open-URL path used by your application lifecycle. If the URL is not delivered to this handler, the login flow cannot complete in your app. Ensure the registered URL scheme is present in the target that receives the callback.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Request only the profile fields the app uses

After login succeeds, build a user-data query from the scopes requested in SCSDKScopes, then fetch the authorized data. For example, the query builder can request display name and Bitmoji avatar:

let query = SCSDKUserDataQueryBuilder()
    .withDisplayName()
    .withBitmojiAvatar()
    .build()

SCSDKLoginClient.fetchUserData(with: query, success: { userData in
    // Read only the fields authorized and returned for this user.
}, failure: { error, isUserLoggedOut in
    // Handle unavailable data, an expired session, or an API error.
})

If a user declines the toggleable Bitmoji permission, handle that field as unavailable and continue if display name is sufficient for your app. Do not interpret a missing avatar as proof that login failed, or assume that requesting a scope overrides the user’s choice.

Share content with Creative Kit

Use the code-only integration for new work

Snap’s Creative Kit overview, updated 2024-10-01, says the installable SDK version will continue to work but will no longer be updated, and recommends that existing integrations transition to the new code-only version. For a new app, build the handoff using the current code-only Creative Kit documentation rather than treating the older SDK as the preferred implementation.

The code-only route is a Snapchat handoff, not another Login Kit flow. Your app prepares the share payload and invokes the documented Creative Kit integration; Snapchat handles the destination experience. The precise implementation depends on which share capability you use, so follow the current code-only instructions for the payload and launch mechanism rather than copying old installable-SDK calls.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Pick the share payload that fits the feature

  • Media: Prepare a supported PNG or JPEG image, or MP4 or MOV video, and provide it as a local resource URI. A remote web URL is not a substitute for the local media resource requirement.
  • Stickers: Include a sticker asset when the intended experience is an image or video with a sticker layered into the Snapchat share.
  • Captions: Add a caption only when it helps explain the content; the maximum is 250 characters.
  • Links: Attach a link when the share should let a recipient continue to a web destination. Keep link behavior distinct from the media resource URI required to supply local share content.
  • Lens attachments: Use a Lens attachment when the goal is to associate a Lens with the share, rather than simply attach an image or video.
  • Dynamic Lens launch data: Use this for data intended to configure a Dynamic Lens launch. It is not a general channel for private Snapchat account information.
  • Spotlight: Use the applicable Creative Kit posting capability when the product flow is to post to Spotlight. This is a distinct destination from a normal media handoff; do not promise users that content will be posted without their participation or the required Snapchat flow.

Check media against the documented limits

Constraint Creative Kit requirement
Image formats PNG or JPEG
Video formats MP4 or MOV
Maximum shared media size 300 MB
Maximum video duration 5 minutes
Maximum caption length 250 characters
Media reference Local resource URI
Suggested aspect ratio 9:16

The 9:16 ratio is a suggestion, not a stated hard limit. Validate the actual encoded file size and video duration before presenting the share action, and provide a useful correction path when a file exceeds the supported limits.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Test the flows and recover from common failures

Use these checks when validating the documented login and sharing flows on devices and builds that match your app’s supported configuration:

  • Redirect mismatch: Compare the complete redirect URL in Info.plist with the developer portal entry, including scheme and path. Correct either value and make them identical.
  • Snapchat installed versus absent: Exercise the flow both with Snapchat installed and with it absent. Confirm the expected app handoff or web fallback behavior for the integration and device; do not make successful login or sharing conditional on assuming the app is installed.
  • Denied toggleable scope: Decline Bitmoji authorization and check that the app handles the avatar as unavailable while preserving any permitted display-name flow.
  • Missing or expired callback: Confirm that the URL reaches the app delegate/open-URL handler and is passed to SCSDKLoginClient.application. If it does not, check URL Types, the exact redirect registration, and the app lifecycle path. If a prior login session or callback is no longer valid, let the user restart authentication instead of using stale data.
  • Unsupported media: Try an unsupported format, a file larger than 300 MB, and a video longer than five minutes. Prevent the handoff or explain how to select or export a supported file.

These are validation checkpoints based on the documented flow and limits; they are not claims of a hands-on device test.

Current platform and SDK caveats

The current Login Kit reference identifies SDK 2.6.0 and lists iOS 11.0+ (reference updated 2025-08-07). The current Creative Kit reference also lists iOS 11.0+ and Snapchat 10.34.1.0+ (reference updated 2025-08-07). Confirm current distribution details and app compatibility in Snap’s developer materials when selecting dependencies or defining supported Snapchat versions, since those values can change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Creative Kit’s maintenance status is especially important when choosing an implementation: the installable SDK may remain functional for existing apps, but Snap’s 2024-10-01 notice says it will no longer be updated. Login Kit remains a separate identity feature; using it does not replace Creative Kit for sharing.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.