This tutorial shows developers how to integrate passkeys into a Svelte app. Besides passkey authentication, simple session management is also implemented.
Vincent
Created: September 28, 2023
Updated: May 15, 2024
We aim to make the Internet a safer place using passkeys. That's why we want to support developers with tutorials on how to implement passkeys.
3. Svelte Passkey Repository Structure
5. Set Up the Corbado UI Component for Passkey Authentication
5.1 Set Up your Corbado Account and Project
5.2 Embed the UI Component in your Frontend
In this blog post, we'll be walking through the process of building a sample application with passkey authentication using Svelte. We'll cover how to embed the Corbado UI component and implement passkey login functionality for a seamless user experience.
If you want to see the finished code, please have a look at our sample application GitHub repository:
The result looks as follows:
This tutorial assumes basic familiarity with Svelte, HTML, CSS and JavaScript. Lets dive in! Moreover, you need to have Node and NPM installed on your machine.
Lets first discuss the structure of our project (full GitHub repo):
. ├── .env ├── package.json └── src ├── app.html └── routes ├── +layout.svelte ├── +layout.server.ts ├── +page.svelte └── profile └── +page.svelte
The rest of the files of this project can be ignored for the purpose of this tutorial.
In the following, we explain step-by-step what needs to be done to successfully set up the Svelte project.
Lets start out by initializing a new Svelte project. In this tutorial, were using Svelte version 4.2.7:
In the installation guide steps, we select the following (if youre asked to install or update the create-svelte package, click Yes to proceed):
If you're asked to proceed click "Yes"
Let's also install the Corbado web-js dependency:
Optionally, you can also install the Corbado web-js types for an enhanced typescript experience:
If you run
and
the sample Svelte skeleton application starts at http://localhost:5173:
Visit the Corbado developer panel to sign up and create your account (you'll see the passkey sign-up in action here!).
In the project setup wizard, begin by selecting an appropriate name for your project. For the product selection, opt for "Corbado Complete". Subsequently, specify your technology stack and select "DEV along with "Corbado session management" options. Afterwards, you'll get more foundational setup guidance.
Next, choose "Web app" as an application type and Svelte as your framework. In the application settings, define your application url and relying party id as follows:
Lastly, retrieve your project ID from the developer panel and store it in your environment file. You can find it here under Corbado API access.
Your environment file should look like this:
You'll need it later to embed the Corbado UI component in your Svelte app.
Now, lets jump back to the code we created from step 4.
First, we'll disable ssr as that's currently not supported by the Corbado web-js package, but we're working on it ;)
We'll do that by creating a +layout.server.ts file with the following content:
Then, we'll create our outer layout which will handle the initialization of our Corbado project. It acts as a boundary that only renders the rest of the app once the Corbado project is initialized.
Next, we modify the home page. The home page is the file in src/routes/+page.svelte. This file contains the sign up /
login UI component and navigates to /profile
once the user is authenticated.
Lastly, let's create the profile page under /profile
. This page will show the user's name and user ID and provide a button to log out.
If the user isn't logged in, we'll display a link back to the homepage.
This page has content that should only be visible to authenticated users. Therefore, we use Corbado session management in the code above.
If everything is set up and installed, run the application with
You should see the following screen:
After successful sign up / login, you see the profile page:
This tutorial showed how easy it is to add passwordless authentication with passkeys to a Svelte app using Corbado. Besides the passkey-first authentication, Corbado provides simple session management, that we used for a retrieval of basic user data. If you want to read more about how you can leverage Corbados session management to retrieve backend data, please check out our documentation here or if you want to add Corbado to your existing app with existing users, please see our documentation here.
If you want to learn how you can retrieve user authentication state as well as wells as user information on the server side, take a look at our Sveltekit blogpost.
Table of Contents
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
We provide UI components, SDKs and guides to help you add passkeys to your app in <1 hour
Start for free