diff --git a/main/docs/quickstart/backend/aspnet-core-webapi/index.mdx b/main/docs/quickstart/backend/aspnet-core-webapi/index.mdx
index ddb0faf691..7f6c43b3a8 100644
--- a/main/docs/quickstart/backend/aspnet-core-webapi/index.mdx
+++ b/main/docs/quickstart/backend/aspnet-core-webapi/index.mdx
@@ -2,6 +2,10 @@
title: 'ASP.NET Core Web API'
description: 'Add Auth0 JWT authentication to an ASP.NET Core Web API with protected endpoints'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/backend/fastapi/index.mdx b/main/docs/quickstart/backend/fastapi/index.mdx
index 72105f8154..44da07bec1 100644
--- a/main/docs/quickstart/backend/fastapi/index.mdx
+++ b/main/docs/quickstart/backend/fastapi/index.mdx
@@ -4,6 +4,10 @@ description: 'Add Auth0 JWT authentication to an FastAPI with protected endpoint
sidebarTitle: FastAPI API
title: 'FastAPI API'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Using AI to integrate Auth0?** Add this prompt to Cursor, Windsurf, Copilot, Claude Code or your favourite AI-powered IDE to speed up development.
diff --git a/main/docs/quickstart/backend/fastify/index.mdx b/main/docs/quickstart/backend/fastify/index.mdx
index 7813b23480..146c5e1aff 100644
--- a/main/docs/quickstart/backend/fastify/index.mdx
+++ b/main/docs/quickstart/backend/fastify/index.mdx
@@ -5,6 +5,10 @@ sidebarTitle: Fastify API
title: Protect Your Fastify API
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 API authentication automatically in minutes using [agent skills](https://agentskills.io/home).
diff --git a/main/docs/quickstart/backend/golang/index.mdx b/main/docs/quickstart/backend/golang/index.mdx
index ddb5673612..f478f67b43 100644
--- a/main/docs/quickstart/backend/golang/index.mdx
+++ b/main/docs/quickstart/backend/golang/index.mdx
@@ -6,6 +6,9 @@ title: Protect Your Go API
---
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
export const envSnippet = `# The URL of your Auth0 Tenant Domain.
# If you're using a Custom Domain, set this to that value instead.
@@ -887,7 +890,7 @@ Now that you have a protected API, consider exploring:
- **[Role-Based Access Control](https://auth0.com/docs/manage-users/access-control/rbac)** — Implement fine-grained permissions
- **[Access Token Best Practices](https://auth0.com/docs/secure/tokens/access-tokens)** — Learn about token security
- **[Monitor Your API](https://auth0.com/docs/deploy-monitor/logs)** — Set up logging and monitoring
-- **[Production Checklist](https://auth0.com/docs/deploy-monitor/production-checks)** — Pre-launch security review
+- **[Production Readiness Checks](https://auth0.com/docs/deploy-monitor/pre-deployment-checks/production-checks-best-practices)** — Pre-launch security review
---
diff --git a/main/docs/quickstart/backend/java-spring-security5/index.mdx b/main/docs/quickstart/backend/java-spring-security5/index.mdx
index 93086d629c..99e66342b9 100644
--- a/main/docs/quickstart/backend/java-spring-security5/index.mdx
+++ b/main/docs/quickstart/backend/java-spring-security5/index.mdx
@@ -3,6 +3,10 @@ title: "Java Springboot API"
description: "Add Auth0 JWT authentication to a Spring Boot API with protected endpoints"
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/backend/python/index.mdx b/main/docs/quickstart/backend/python/index.mdx
index d0813a460d..620deb9700 100644
--- a/main/docs/quickstart/backend/python/index.mdx
+++ b/main/docs/quickstart/backend/python/index.mdx
@@ -3,6 +3,10 @@ title: 'Flask API'
description: 'This guide demonstrates how to integrate Auth0 with any new or existing Python API built with Flask.'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Prerequisites:** Before you begin, ensure you have the following installed:
diff --git a/main/docs/quickstart/native/android-facebook-login/index.mdx b/main/docs/quickstart/native/android-facebook-login/index.mdx
index 7a5e7e2020..e861c35582 100644
--- a/main/docs/quickstart/native/android-facebook-login/index.mdx
+++ b/main/docs/quickstart/native/android-facebook-login/index.mdx
@@ -4,6 +4,10 @@ sidebarTitle: Android Facebook Login
title: Add Native Facebook Login to Your Android Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
## Before You Start
Complete these prerequisites before following this quickstart:
diff --git a/main/docs/quickstart/native/android/index.mdx b/main/docs/quickstart/native/android/index.mdx
index af2c837c2b..9da633074f 100644
--- a/main/docs/quickstart/native/android/index.mdx
+++ b/main/docs/quickstart/native/android/index.mdx
@@ -1,540 +1,544 @@
----
-mode: wide
-sidebarTitle: Android
-title: Add Login to Your Android Application using the Auth0.Android SDK
----
-
-
-
-If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
-
-**Install:**
-
-```bash
-npx skills add auth0/agent-skills --skill auth0-quickstart --skill auth0-android
-```
-
-**Then ask your AI assistant:**
-
-```text
-Add Auth0 authentication to my Android app
-```
-
-Your AI assistant will automatically create your Auth0 application, fetch credentials, add the Auth0 Android SDK dependency, configure manifest placeholders, and implement login/logout flows. [Full agent skills documentation →](/quickstart/agent-skills)
-
-
-
-## Get Started
-
-
-
- Create a new Android project for this quickstart.
-
- **In Android Studio:**
-
- 1. **File** → **New** → **New Project**
- 2. Select **Phone and Tablet** → **Empty Activity** template
- 3. Configure your project:
- * **Name**: `Auth0-Android-Sample`
- * **Package name**: `com.auth0.samples.android`
- * **Language**: **Kotlin**
- * **Minimum SDK**: **API 24 (Android 7.0)**
- * **Build configuration language**: **Kotlin DSL**
- 4. Click **Finish**
-
-
- This creates a modern Android app with Kotlin and Gradle Kotlin DSL, following current Android development best practices.
-
-
-
-
- Add the Auth0 Android SDK to your project using Gradle.
-
- **Update your app-level `build.gradle.kts` file:**
-
- ```kotlin app/build.gradle.kts lines
- dependencies {
- // Auth0 SDK
- implementation("com.auth0.android:auth0:3.14.0")
- }
- ```
-
- **Add manifest placeholders in your app-level `build.gradle.kts`:**
-
- ```kotlin app/build.gradle.kts lines
- android {
- defaultConfig {
- // Add these manifest placeholders
- manifestPlaceholders += mapOf(
- "auth0Domain" to "@string/com_auth0_domain", // this will be set in the next step
- "auth0Scheme" to "https"
- )
- }
- }
-
- ```
-
- **Add Internet permission to `AndroidManifest.xml`:**
-
- ```xml app/src/main/AndroidManifest.xml lines
-
-
-
-
- ```
-
-
- The Auth0 SDK automatically handles dependency resolution and includes secure token storage capabilities.
-
-
-
-
- Next up, you need to create a new app on your Auth0 tenant and add the configuration to your Android project.
-
- First, prepare your `app/src/main/res/values/strings.xml` file with placeholder values:
-
- ```xml app/src/main/res/values/strings.xml
-
-
- {yourDomain}
- YOUR_AUTH0_CLIENT_ID
- https
-
- ```
-
- 1. Head to the [Auth0 Dashboard](https://manage.auth0.com/dashboard/)
- 2. Click on **Applications** > **Applications** > **Create Application**
- 3. In the popup, enter a name for your app, select `Native` as the app type and click **Create**
- 4. Switch to the **Settings** tab on the Application Details page
- 5. Replace `{yourDomain}` and `YOUR_AUTH0_CLIENT_ID` in the `strings.xml` file with the **Domain** and **Client ID** values from the dashboard
-
- Finally, on the **Settings** tab of your Application Details page, configure the following URLs:
-
- **Allowed Callback URLs:**
- ```
- https://{yourDomain}/android/PACKAGE_NAME/callback
- ```
-
- **Allowed Logout URLs:**
- ```
- https://{yourDomain}/android/PACKAGE_NAME/callback
- ```
-
- Replace `{yourDomain}` with your actual Auth0 domain (e.g., `dev-abc123.us.auth0.com`).
-
-
- **Allowed Callback URLs** are a critical security measure to ensure users are safely returned to your application after authentication. Without a matching URL, the login process will fail, and users will be blocked by an Auth0 error page instead of accessing your app.
-
- **Allowed Logout URLs** are essential for providing a seamless user experience upon signing out. Without a matching URL, users will not be redirected back to your application after logout and will instead be left on a generic Auth0 page.
-
- The URL scheme includes your package name (`com.auth0.samples.android`) to ensure the callback is routed to your specific app.
-
-
-
- **Important**: Ensure the package name in your callback URLs matches your `applicationId` in `build.gradle.kts`. If authentication fails, verify these values are identical.
-
-
-
- When using the `https` scheme (as configured above), you must set up Android App Links so that Android routes the callback URL directly to your app instead of opening it in a browser. See the **Configure Android App Links** section under [Troubleshooting & Advanced](#troubleshooting--advanced) below.
-
-
-
-
- Create an Auth0 instance in your Activity to communicate with Auth0.
-
- **In your `MainActivity.kt`:**
-
- ```kotlin MainActivity.kt lines
- import com.auth0.android.Auth0
- import com.auth0.android.authentication.AuthenticationException
- import com.auth0.android.callback.Callback
- import com.auth0.android.provider.WebAuthProvider
- import com.auth0.android.result.Credentials
-
- class MainActivity : ComponentActivity() {
- private lateinit var auth0: Auth0
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- // Initialize Auth0
- auth0 = Auth0.getInstance(
- getString(R.string.com_auth0_client_id),
- getString(R.string.com_auth0_domain)
- )
- }
- }
- ```
-
-
- The Auth0 instance is initialized with your client ID and domain from the `strings.xml` file you configured earlier. This instance will be used for all authentication operations.
-
-
-
-
-
- **Implement Login:** Use WebAuthProvider to launch the universal login page.
-
- Add these methods to your `MainActivity`:
-
-
-
- ```kotlin MainActivity.kt lines
- private fun login() {
- WebAuthProvider.login(auth0)
- .withScheme("https")
- .withScope("openid profile email offline_access")
- .start(this, object : Callback {
- override fun onSuccess(credentials: Credentials) {
- // Save the credentials
- // User is authenticated
- }
-
- override fun onFailure(exception: AuthenticationException) {
- // Handle error cases
- }
- })
- }
- ```
-
-
-
- ```kotlin MainActivity.kt lines
- private fun login() {
- lifecycleScope.launch {
- try {
- val credentials = WebAuthProvider.login(auth0)
- .withScheme("https")
- .withScope("openid profile email offline_access")
- .await(this@MainActivity)
- // Save the credentials
- // User is authenticated
- } catch (exception: AuthenticationException) {
- // Handle error
- }
- }
- }
- ```
-
-
-
- **Implement Logout:** Use WebAuthProvider to clear the user's session.
-
-
-
- ```kotlin MainActivity.kt lines
- private fun logout() {
- WebAuthProvider.logout(auth0)
- .withScheme("https")
- .start(this, object : Callback {
- override fun onSuccess(result: Void?) {
- // Clear saved credentials
- // User is logged out
- }
-
- override fun onFailure(exception: AuthenticationException) {
- // Handle error
- }
- })
- }
- ```
-
-
-
- ```kotlin MainActivity.kt lines
- private fun logout() {
- lifecycleScope.launch {
- try {
- WebAuthProvider.logout(auth0)
- .withScheme("https")
- .await(this@MainActivity)
- // Clear saved credentials
- // User is logged out
- } catch (exception: AuthenticationException) {
- // Handle error
- }
- }
- }
- ```
-
-
-
-
- The `login()` and `logout()` methods should be called when the user taps the respective buttons in your UI. The code uses `this` (referring to the Activity) as the context parameter, which is required for WebAuthProvider to launch Chrome Custom Tabs and handle the authentication flow.
-
-
-
-
- Build and run your Android application.
-
- **In Android Studio:**
-
- ```shellscript
- # Sync project with Gradle files (or use Android Studio's "Sync Now")
- ./gradlew clean build
-
- # Build and install on connected device or emulator
- ./gradlew installDebug
-
- # Or run directly from Android Studio
- # Click the "Run" button or press Shift+F10
- ```
-
- **Expected flow:**
-
- 1. App launches with "Log In" button and shield icon
- 2. Tap "Log In" → Chrome Custom Tab opens → Complete login
- 3. Returns to app automatically
- 4. Success!!
-
-
- Android will show a browser selection dialog if multiple browsers are installed. Chrome Custom Tabs provide the best user experience for Auth0 authentication.
-
-
-
-
-
- **Checkpoint**
-
- You should now have a fully functional Auth0 login experience running on your Android device or emulator. The app uses Chrome Custom Tabs for secure authentication and automatically stores credentials.
-
-
-***
-
-## Troubleshooting & Advanced
-
-
- ### Chrome Custom Tab doesn't redirect back to app
-
- **Solutions:**
-
- 1. Check **Allowed Callback URLs** in Auth0 Dashboard match your `applicationId` exactly
- 2. Verify manifest placeholders in `build.gradle.kts` are correct
- 3. Ensure both HTTPS and custom scheme URLs are configured
- 4. Clean and rebuild: **Build** → **Clean Project** → **Rebuild Project**
-
- ### App crashes: 'Auth0 domain not found'
-
- **Fix:**
-
- 1. Check `com_auth0_domain` and `com_auth0_client_id` values are correct
- 2. Ensure no typos in domain format (should not include `https://`)
-
- ### Build errors with dependencies
-
- **Fix:**
-
- 1. Update to latest Android Gradle Plugin in `build.gradle` (project level)
- 2. Sync project: **File** → **Sync Project with Gradle Files**
- 3. Clean build: `./gradlew clean build`
-
- ### Authentication cancelled by user
-
- Handle gracefully in your error callback:
-
- ```kotlin {3,4,5,6} expandable
- override fun onFailure(exception: AuthenticationException) {
- when {
- exception.isAuthenticationCanceled ->
- showMessage("Login was cancelled")
- exception.isBrowserAppNotAvailable ->
- showMessage("No browser available")
- else ->
- showMessage("Login failed: ${exception.getDescription()}")
- }
- }
- ```
-
- ### No compatible browser error
-
- * Install Chrome or another modern browser on your device/emulator
- * Enable Chrome Custom Tabs for better user experience
- * Test on real device with Chrome installed
-
-
-
- [Android App Links](https://developer.android.com/training/app-links) allow your app to designate itself as the default handler for Auth0 callback URLs, providing a more secure and seamless authentication experience. Without App Links, Android may show a disambiguation dialog asking the user to choose between your app and a browser.
-
-
- App Links use verified `https` scheme callbacks. This is more secure than custom URL schemes, which can be subject to [client impersonation attacks](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6).
-
-
- ### Get your signing certificate fingerprint
-
- You need the SHA256 fingerprint of your app's signing certificate. Run the following command in your terminal:
-
- ```shellscript
- # For debug builds
- keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
-
- # For release builds
- keytool -list -v -keystore my-release-key.keystore
- ```
-
- Copy the **SHA256** fingerprint value from the output.
-
- ### Configure in the Auth0 Dashboard
-
- 1. Go to [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications), and select your application
- 2. Scroll to the bottom of the **Settings** page and select **Show Advanced Settings**
- 3. Select the **Device Settings** tab
- 4. Under **Android**, provide:
- - **App Package Name**: Your `applicationId` (e.g., `com.auth0.samples.android`)
- - **SHA256 Cert Fingerprints**: The fingerprint you copied above
- 5. Click **Save Changes**
-
- ### Verify the configuration
-
- Auth0 automatically generates the `assetlinks.json` file used by Android to verify your app. Test it by navigating to:
-
- ```
- https://{yourDomain}/.well-known/assetlinks.json
- ```
-
- You should see a JSON response containing your package name and certificate fingerprint:
-
- ```json
- [{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "[YOUR_PACKAGE_NAME]",
- "sha256_cert_fingerprints": ["YOUR_SHA256_FINGERPRINT"]
- }
- }]
- ```
-
-
- The quickstart already uses `https` as the scheme in the manifest placeholders and `WebAuthProvider` calls, which is required for App Links. No code changes are needed if you followed the steps above.
-
-
- To learn more, see the [Enable Android App Links Support](/get-started/applications/enable-android-app-links-support) documentation and Android's [Verify App Links](https://developer.android.com/training/app-links/verify-site-associations) guide.
-
-
-
- If you cannot use Android App Links (for example, when targeting Android API versions below 23), you can configure a custom URL scheme instead.
-
-
- Custom URL schemes are less secure than App Links because they can be subject to [client impersonation attacks](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6). Use App Links whenever possible.
-
-
- 1. Update the `auth0Scheme` manifest placeholder in your `app/build.gradle.kts`:
-
- ```kotlin app/build.gradle.kts lines
- android {
- defaultConfig {
- manifestPlaceholders += mapOf(
- "auth0Domain" to "@string/com_auth0_domain",
- "auth0Scheme" to "myapp" // Use a unique custom scheme
- )
- }
- }
- ```
-
- 2. Update the **Allowed Callback URLs** and **Allowed Logout URLs** in your [Auth0 Dashboard](https://manage.auth0.com/#/applications) application settings to use the custom scheme:
-
- ```
- myapp://{yourDomain}/android/PACKAGE_NAME/callback
- ```
-
- 3. Pass the custom scheme when calling `WebAuthProvider`:
-
- ```kotlin MainActivity.kt lines
- WebAuthProvider.login(auth0)
- .withScheme("myapp")
- .withScope("openid profile email offline_access")
- .start(this, callback)
- ```
-
-
- Custom schemes [can only contain lowercase letters](https://developer.android.com/guide/topics/manifest/data-element).
-
-
-
-
- ### App Store Preparation
-
- * Configure Android App Links for seamless authentication
- * Test on multiple Android versions and screen sizes
- * Implement proper error handling for network failures
- * Add ProGuard rules for Auth0 SDK if using code obfuscation
- * Follow Google Play Store policies for authentication flows
-
- ### Security Considerations
-
- * Use `SecureCredentialsManager` for production credential storage
- * Implement certificate pinning for additional API security
- * Consider Android Keystore for enhanced credential protection
- * Enable biometric authentication for sensitive operations
-
-
-
- ### Enhanced Credential Security
-
- Implement biometric authentication for credential access:
-
- ```kotlin AuthenticationManager.kt expandable lines
- class AuthenticationManager(private val context: Context) {
-
- private val credentialsManager: SecureCredentialsManager
-
- init {
- val authentication = AuthenticationAPIClient(auth0)
- val storage = SharedPreferencesStorage(context)
- credentialsManager = SecureCredentialsManager(context, authentication, storage)
-
- // Enable biometric authentication
- credentialsManager.requireAuthentication(
- context as FragmentActivity,
- REQUEST_CODE_BIOMETRIC,
- "Biometric Authentication",
- "Please authenticate to access your account"
- )
- }
-
- companion object {
- private const val REQUEST_CODE_BIOMETRIC = 321
- }
- }
- ```
-
- ### Custom Scopes and Audience
-
- Request specific scopes and audience for your API:
-
- ```kotlin AuthenticationManager.kt expandable lines
- fun login() {
- WebAuthProvider.login(auth0)
- .withScheme("https")
- .withScope("openid profile email offline_access read:posts")
- .withAudience("https://myapi.example.com")
- .withParameter("prompt", "login")
- .start(context as MainActivity, loginCallback)
- }
- ```
-
- ### Network Configuration
-
- Handle network security and certificate pinning:
-
- ```xml app/src/main/res/xml/network_security_config.xml expandable lines
-
-
-
- your-auth0-domain.auth0.com
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-
-
-
- ```
-
- Add to `AndroidManifest.xml`:
-
- ```xml
-
- ```
-
+---
+mode: wide
+sidebarTitle: Android
+title: Add Login to Your Android Application using the Auth0.Android SDK
+---
+
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
+
+
+If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
+
+**Install:**
+
+```bash
+npx skills add auth0/agent-skills --skill auth0-quickstart --skill auth0-android
+```
+
+**Then ask your AI assistant:**
+
+```text
+Add Auth0 authentication to my Android app
+```
+
+Your AI assistant will automatically create your Auth0 application, fetch credentials, add the Auth0 Android SDK dependency, configure manifest placeholders, and implement login/logout flows. [Full agent skills documentation →](/quickstart/agent-skills)
+
+
+
+## Get Started
+
+
+
+ Create a new Android project for this quickstart.
+
+ **In Android Studio:**
+
+ 1. **File** → **New** → **New Project**
+ 2. Select **Phone and Tablet** → **Empty Activity** template
+ 3. Configure your project:
+ * **Name**: `Auth0-Android-Sample`
+ * **Package name**: `com.auth0.samples.android`
+ * **Language**: **Kotlin**
+ * **Minimum SDK**: **API 24 (Android 7.0)**
+ * **Build configuration language**: **Kotlin DSL**
+ 4. Click **Finish**
+
+
+ This creates a modern Android app with Kotlin and Gradle Kotlin DSL, following current Android development best practices.
+
+
+
+
+ Add the Auth0 Android SDK to your project using Gradle.
+
+ **Update your app-level `build.gradle.kts` file:**
+
+ ```kotlin app/build.gradle.kts lines
+ dependencies {
+ // Auth0 SDK
+ implementation("com.auth0.android:auth0:3.14.0")
+ }
+ ```
+
+ **Add manifest placeholders in your app-level `build.gradle.kts`:**
+
+ ```kotlin app/build.gradle.kts lines
+ android {
+ defaultConfig {
+ // Add these manifest placeholders
+ manifestPlaceholders += mapOf(
+ "auth0Domain" to "@string/com_auth0_domain", // this will be set in the next step
+ "auth0Scheme" to "https"
+ )
+ }
+ }
+
+ ```
+
+ **Add Internet permission to `AndroidManifest.xml`:**
+
+ ```xml app/src/main/AndroidManifest.xml lines
+
+
+
+
+ ```
+
+
+ The Auth0 SDK automatically handles dependency resolution and includes secure token storage capabilities.
+
+
+
+
+ Next up, you need to create a new app on your Auth0 tenant and add the configuration to your Android project.
+
+ First, prepare your `app/src/main/res/values/strings.xml` file with placeholder values:
+
+ ```xml app/src/main/res/values/strings.xml
+
+
+ {yourDomain}
+ YOUR_AUTH0_CLIENT_ID
+ https
+
+ ```
+
+ 1. Head to the [Auth0 Dashboard](https://manage.auth0.com/dashboard/)
+ 2. Click on **Applications** > **Applications** > **Create Application**
+ 3. In the popup, enter a name for your app, select `Native` as the app type and click **Create**
+ 4. Switch to the **Settings** tab on the Application Details page
+ 5. Replace `{yourDomain}` and `YOUR_AUTH0_CLIENT_ID` in the `strings.xml` file with the **Domain** and **Client ID** values from the dashboard
+
+ Finally, on the **Settings** tab of your Application Details page, configure the following URLs:
+
+ **Allowed Callback URLs:**
+ ```
+ https://{yourDomain}/android/PACKAGE_NAME/callback
+ ```
+
+ **Allowed Logout URLs:**
+ ```
+ https://{yourDomain}/android/PACKAGE_NAME/callback
+ ```
+
+ Replace `{yourDomain}` with your actual Auth0 domain (e.g., `dev-abc123.us.auth0.com`).
+
+
+ **Allowed Callback URLs** are a critical security measure to ensure users are safely returned to your application after authentication. Without a matching URL, the login process will fail, and users will be blocked by an Auth0 error page instead of accessing your app.
+
+ **Allowed Logout URLs** are essential for providing a seamless user experience upon signing out. Without a matching URL, users will not be redirected back to your application after logout and will instead be left on a generic Auth0 page.
+
+ The URL scheme includes your package name (`com.auth0.samples.android`) to ensure the callback is routed to your specific app.
+
+
+
+ **Important**: Ensure the package name in your callback URLs matches your `applicationId` in `build.gradle.kts`. If authentication fails, verify these values are identical.
+
+
+
+ When using the `https` scheme (as configured above), you must set up Android App Links so that Android routes the callback URL directly to your app instead of opening it in a browser. See the **Configure Android App Links** section under [Troubleshooting & Advanced](#troubleshooting--advanced) below.
+
+
+
+
+ Create an Auth0 instance in your Activity to communicate with Auth0.
+
+ **In your `MainActivity.kt`:**
+
+ ```kotlin MainActivity.kt lines
+ import com.auth0.android.Auth0
+ import com.auth0.android.authentication.AuthenticationException
+ import com.auth0.android.callback.Callback
+ import com.auth0.android.provider.WebAuthProvider
+ import com.auth0.android.result.Credentials
+
+ class MainActivity : ComponentActivity() {
+ private lateinit var auth0: Auth0
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ // Initialize Auth0
+ auth0 = Auth0.getInstance(
+ getString(R.string.com_auth0_client_id),
+ getString(R.string.com_auth0_domain)
+ )
+ }
+ }
+ ```
+
+
+ The Auth0 instance is initialized with your client ID and domain from the `strings.xml` file you configured earlier. This instance will be used for all authentication operations.
+
+
+
+
+
+ **Implement Login:** Use WebAuthProvider to launch the universal login page.
+
+ Add these methods to your `MainActivity`:
+
+
+
+ ```kotlin MainActivity.kt lines
+ private fun login() {
+ WebAuthProvider.login(auth0)
+ .withScheme("https")
+ .withScope("openid profile email offline_access")
+ .start(this, object : Callback {
+ override fun onSuccess(credentials: Credentials) {
+ // Save the credentials
+ // User is authenticated
+ }
+
+ override fun onFailure(exception: AuthenticationException) {
+ // Handle error cases
+ }
+ })
+ }
+ ```
+
+
+
+ ```kotlin MainActivity.kt lines
+ private fun login() {
+ lifecycleScope.launch {
+ try {
+ val credentials = WebAuthProvider.login(auth0)
+ .withScheme("https")
+ .withScope("openid profile email offline_access")
+ .await(this@MainActivity)
+ // Save the credentials
+ // User is authenticated
+ } catch (exception: AuthenticationException) {
+ // Handle error
+ }
+ }
+ }
+ ```
+
+
+
+ **Implement Logout:** Use WebAuthProvider to clear the user's session.
+
+
+
+ ```kotlin MainActivity.kt lines
+ private fun logout() {
+ WebAuthProvider.logout(auth0)
+ .withScheme("https")
+ .start(this, object : Callback {
+ override fun onSuccess(result: Void?) {
+ // Clear saved credentials
+ // User is logged out
+ }
+
+ override fun onFailure(exception: AuthenticationException) {
+ // Handle error
+ }
+ })
+ }
+ ```
+
+
+
+ ```kotlin MainActivity.kt lines
+ private fun logout() {
+ lifecycleScope.launch {
+ try {
+ WebAuthProvider.logout(auth0)
+ .withScheme("https")
+ .await(this@MainActivity)
+ // Clear saved credentials
+ // User is logged out
+ } catch (exception: AuthenticationException) {
+ // Handle error
+ }
+ }
+ }
+ ```
+
+
+
+
+ The `login()` and `logout()` methods should be called when the user taps the respective buttons in your UI. The code uses `this` (referring to the Activity) as the context parameter, which is required for WebAuthProvider to launch Chrome Custom Tabs and handle the authentication flow.
+
+
+
+
+ Build and run your Android application.
+
+ **In Android Studio:**
+
+ ```shellscript
+ # Sync project with Gradle files (or use Android Studio's "Sync Now")
+ ./gradlew clean build
+
+ # Build and install on connected device or emulator
+ ./gradlew installDebug
+
+ # Or run directly from Android Studio
+ # Click the "Run" button or press Shift+F10
+ ```
+
+ **Expected flow:**
+
+ 1. App launches with "Log In" button and shield icon
+ 2. Tap "Log In" → Chrome Custom Tab opens → Complete login
+ 3. Returns to app automatically
+ 4. Success!!
+
+
+ Android will show a browser selection dialog if multiple browsers are installed. Chrome Custom Tabs provide the best user experience for Auth0 authentication.
+
+
+
+
+
+ **Checkpoint**
+
+ You should now have a fully functional Auth0 login experience running on your Android device or emulator. The app uses Chrome Custom Tabs for secure authentication and automatically stores credentials.
+
+
+***
+
+## Troubleshooting & Advanced
+
+
+ ### Chrome Custom Tab doesn't redirect back to app
+
+ **Solutions:**
+
+ 1. Check **Allowed Callback URLs** in Auth0 Dashboard match your `applicationId` exactly
+ 2. Verify manifest placeholders in `build.gradle.kts` are correct
+ 3. Ensure both HTTPS and custom scheme URLs are configured
+ 4. Clean and rebuild: **Build** → **Clean Project** → **Rebuild Project**
+
+ ### App crashes: 'Auth0 domain not found'
+
+ **Fix:**
+
+ 1. Check `com_auth0_domain` and `com_auth0_client_id` values are correct
+ 2. Ensure no typos in domain format (should not include `https://`)
+
+ ### Build errors with dependencies
+
+ **Fix:**
+
+ 1. Update to latest Android Gradle Plugin in `build.gradle` (project level)
+ 2. Sync project: **File** → **Sync Project with Gradle Files**
+ 3. Clean build: `./gradlew clean build`
+
+ ### Authentication cancelled by user
+
+ Handle gracefully in your error callback:
+
+ ```kotlin {3,4,5,6} expandable
+ override fun onFailure(exception: AuthenticationException) {
+ when {
+ exception.isAuthenticationCanceled ->
+ showMessage("Login was cancelled")
+ exception.isBrowserAppNotAvailable ->
+ showMessage("No browser available")
+ else ->
+ showMessage("Login failed: ${exception.getDescription()}")
+ }
+ }
+ ```
+
+ ### No compatible browser error
+
+ * Install Chrome or another modern browser on your device/emulator
+ * Enable Chrome Custom Tabs for better user experience
+ * Test on real device with Chrome installed
+
+
+
+ [Android App Links](https://developer.android.com/training/app-links) allow your app to designate itself as the default handler for Auth0 callback URLs, providing a more secure and seamless authentication experience. Without App Links, Android may show a disambiguation dialog asking the user to choose between your app and a browser.
+
+
+ App Links use verified `https` scheme callbacks. This is more secure than custom URL schemes, which can be subject to [client impersonation attacks](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6).
+
+
+ ### Get your signing certificate fingerprint
+
+ You need the SHA256 fingerprint of your app's signing certificate. Run the following command in your terminal:
+
+ ```shellscript
+ # For debug builds
+ keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
+
+ # For release builds
+ keytool -list -v -keystore my-release-key.keystore
+ ```
+
+ Copy the **SHA256** fingerprint value from the output.
+
+ ### Configure in the Auth0 Dashboard
+
+ 1. Go to [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications), and select your application
+ 2. Scroll to the bottom of the **Settings** page and select **Show Advanced Settings**
+ 3. Select the **Device Settings** tab
+ 4. Under **Android**, provide:
+ - **App Package Name**: Your `applicationId` (e.g., `com.auth0.samples.android`)
+ - **SHA256 Cert Fingerprints**: The fingerprint you copied above
+ 5. Click **Save Changes**
+
+ ### Verify the configuration
+
+ Auth0 automatically generates the `assetlinks.json` file used by Android to verify your app. Test it by navigating to:
+
+ ```
+ https://{yourDomain}/.well-known/assetlinks.json
+ ```
+
+ You should see a JSON response containing your package name and certificate fingerprint:
+
+ ```json
+ [{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "[YOUR_PACKAGE_NAME]",
+ "sha256_cert_fingerprints": ["YOUR_SHA256_FINGERPRINT"]
+ }
+ }]
+ ```
+
+
+ The quickstart already uses `https` as the scheme in the manifest placeholders and `WebAuthProvider` calls, which is required for App Links. No code changes are needed if you followed the steps above.
+
+
+ To learn more, see the [Enable Android App Links Support](/get-started/applications/enable-android-app-links-support) documentation and Android's [Verify App Links](https://developer.android.com/training/app-links/verify-site-associations) guide.
+
+
+
+ If you cannot use Android App Links (for example, when targeting Android API versions below 23), you can configure a custom URL scheme instead.
+
+
+ Custom URL schemes are less secure than App Links because they can be subject to [client impersonation attacks](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6). Use App Links whenever possible.
+
+
+ 1. Update the `auth0Scheme` manifest placeholder in your `app/build.gradle.kts`:
+
+ ```kotlin app/build.gradle.kts lines
+ android {
+ defaultConfig {
+ manifestPlaceholders += mapOf(
+ "auth0Domain" to "@string/com_auth0_domain",
+ "auth0Scheme" to "myapp" // Use a unique custom scheme
+ )
+ }
+ }
+ ```
+
+ 2. Update the **Allowed Callback URLs** and **Allowed Logout URLs** in your [Auth0 Dashboard](https://manage.auth0.com/#/applications) application settings to use the custom scheme:
+
+ ```
+ myapp://{yourDomain}/android/PACKAGE_NAME/callback
+ ```
+
+ 3. Pass the custom scheme when calling `WebAuthProvider`:
+
+ ```kotlin MainActivity.kt lines
+ WebAuthProvider.login(auth0)
+ .withScheme("myapp")
+ .withScope("openid profile email offline_access")
+ .start(this, callback)
+ ```
+
+
+ Custom schemes [can only contain lowercase letters](https://developer.android.com/guide/topics/manifest/data-element).
+
+
+
+
+ ### App Store Preparation
+
+ * Configure Android App Links for seamless authentication
+ * Test on multiple Android versions and screen sizes
+ * Implement proper error handling for network failures
+ * Add ProGuard rules for Auth0 SDK if using code obfuscation
+ * Follow Google Play Store policies for authentication flows
+
+ ### Security Considerations
+
+ * Use `SecureCredentialsManager` for production credential storage
+ * Implement certificate pinning for additional API security
+ * Consider Android Keystore for enhanced credential protection
+ * Enable biometric authentication for sensitive operations
+
+
+
+ ### Enhanced Credential Security
+
+ Implement biometric authentication for credential access:
+
+ ```kotlin AuthenticationManager.kt expandable lines
+ class AuthenticationManager(private val context: Context) {
+
+ private val credentialsManager: SecureCredentialsManager
+
+ init {
+ val authentication = AuthenticationAPIClient(auth0)
+ val storage = SharedPreferencesStorage(context)
+ credentialsManager = SecureCredentialsManager(context, authentication, storage)
+
+ // Enable biometric authentication
+ credentialsManager.requireAuthentication(
+ context as FragmentActivity,
+ REQUEST_CODE_BIOMETRIC,
+ "Biometric Authentication",
+ "Please authenticate to access your account"
+ )
+ }
+
+ companion object {
+ private const val REQUEST_CODE_BIOMETRIC = 321
+ }
+ }
+ ```
+
+ ### Custom Scopes and Audience
+
+ Request specific scopes and audience for your API:
+
+ ```kotlin AuthenticationManager.kt expandable lines
+ fun login() {
+ WebAuthProvider.login(auth0)
+ .withScheme("https")
+ .withScope("openid profile email offline_access read:posts")
+ .withAudience("https://myapi.example.com")
+ .withParameter("prompt", "login")
+ .start(context as MainActivity, loginCallback)
+ }
+ ```
+
+ ### Network Configuration
+
+ Handle network security and certificate pinning:
+
+ ```xml app/src/main/res/xml/network_security_config.xml expandable lines
+
+
+
+ your-auth0-domain.auth0.com
+
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+
+
+
+ ```
+
+ Add to `AndroidManifest.xml`:
+
+ ```xml
+
+ ```
+
diff --git a/main/docs/quickstart/native/flutter/index.mdx b/main/docs/quickstart/native/flutter/index.mdx
index 2d2a0273f8..ad52d3210a 100644
--- a/main/docs/quickstart/native/flutter/index.mdx
+++ b/main/docs/quickstart/native/flutter/index.mdx
@@ -7,6 +7,10 @@ mode: wide
'twitter:title': 'Auth0 Flutter SDK Quickstarts: Add Login to Your Flutter Application'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This guide demonstrates how to integrate Auth0 with a Flutter application using the [Auth0 Flutter SDK](https://github.com/auth0/auth0-flutter). This guide covers setup for **Android**, **iOS**, **macOS**, and **Web** platforms.
## Get Started
diff --git a/main/docs/quickstart/native/ionic-angular/index.mdx b/main/docs/quickstart/native/ionic-angular/index.mdx
index 8bf65c98ac..90e8c6852c 100644
--- a/main/docs/quickstart/native/ionic-angular/index.mdx
+++ b/main/docs/quickstart/native/ionic-angular/index.mdx
@@ -15,6 +15,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
## Get Started
This quickstart demonstrates how to add Auth0 authentication to an Ionic Angular application with Capacitor. You'll build a mobile-ready app with login, logout, and user profile features using the Auth0 Angular SDK and Capacitor's native browser plugins.
diff --git a/main/docs/quickstart/native/ionic-react/index.mdx b/main/docs/quickstart/native/ionic-react/index.mdx
index de81835a4a..42a9d9bdf5 100644
--- a/main/docs/quickstart/native/ionic-react/index.mdx
+++ b/main/docs/quickstart/native/ionic-react/index.mdx
@@ -15,6 +15,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
## Get Started
This quickstart demonstrates how to add Auth0 authentication to an Ionic React application with Capacitor. You'll build a mobile-ready app with login, logout, and user profile features using the Auth0 React SDK and Capacitor's native browser integration.
diff --git a/main/docs/quickstart/native/ionic-vue/index.mdx b/main/docs/quickstart/native/ionic-vue/index.mdx
index 16bf51cba4..a6c98c6521 100644
--- a/main/docs/quickstart/native/ionic-vue/index.mdx
+++ b/main/docs/quickstart/native/ionic-vue/index.mdx
@@ -15,6 +15,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
## Get Started
This quickstart demonstrates how to add Auth0 authentication to an Ionic Vue application running on iOS and Android with Capacitor. You'll build a secure mobile app with login, logout, and user profile features using the Auth0 Vue SDK and Capacitor's native browser plugins.
diff --git a/main/docs/quickstart/native/ios-swift-facebook-login/index.mdx b/main/docs/quickstart/native/ios-swift-facebook-login/index.mdx
index 1c0788d2bb..d311361474 100644
--- a/main/docs/quickstart/native/ios-swift-facebook-login/index.mdx
+++ b/main/docs/quickstart/native/ios-swift-facebook-login/index.mdx
@@ -4,6 +4,10 @@ sidebarTitle: iOS Facebook Login
title: Add Native Facebook Login to Your iOS Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
## Before You Start
Complete these prerequisites before following this quickstart:
diff --git a/main/docs/quickstart/native/ios-swift/index.mdx b/main/docs/quickstart/native/ios-swift/index.mdx
index 0c2a5e380a..b02148d685 100644
--- a/main/docs/quickstart/native/ios-swift/index.mdx
+++ b/main/docs/quickstart/native/ios-swift/index.mdx
@@ -7,6 +7,9 @@ title: Add Login to Your iOS or macOS Application using the Auth0.swift SDK
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
## Get Started
diff --git a/main/docs/quickstart/native/maui/index.mdx b/main/docs/quickstart/native/maui/index.mdx
index 5f7fe07fab..adcc4d49ab 100644
--- a/main/docs/quickstart/native/maui/index.mdx
+++ b/main/docs/quickstart/native/maui/index.mdx
@@ -6,6 +6,10 @@ description: This guide demonstrates how to integrate Auth0 with a .NET MAUI app
'twitter:title': 'Auth0 .NET MAUI SDK Quickstart: Add Login to Your .NET MAUI Application'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This guide demonstrates how to integrate Auth0 with a .NET MAUI application using the [Auth0.OidcClient.MAUI SDK](https://github.com/auth0/auth0-oidc-client-net). By the end, your app will support login, logout, and displaying user profile information across **Android**, **iOS**, **macOS**, and **Windows** from a single codebase.
This guide uses `Auth0.OidcClient.MAUI` version **1.x**.
diff --git a/main/docs/quickstart/native/net-android-ios/index.mdx b/main/docs/quickstart/native/net-android-ios/index.mdx
index 01ec6d12bf..e9b11af77c 100644
--- a/main/docs/quickstart/native/net-android-ios/index.mdx
+++ b/main/docs/quickstart/native/net-android-ios/index.mdx
@@ -4,6 +4,10 @@ sidebarTitle: .NET Android & iOS
title: Add Login to Your .NET Android & iOS Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
## Get Started
diff --git a/main/docs/quickstart/native/react-native-expo/index.mdx b/main/docs/quickstart/native/react-native-expo/index.mdx
index cf92f629c2..94520f7f92 100644
--- a/main/docs/quickstart/native/react-native-expo/index.mdx
+++ b/main/docs/quickstart/native/react-native-expo/index.mdx
@@ -10,6 +10,10 @@ title: Add Login to Your Expo Application
'twitter:title': 'Auth0 Expo SDK Quickstarts: Add Login to Your Expo Application'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This Quickstart is for Expo applications. To integrate Auth0 into your React Native application, refer to the [React Native Quickstart](https://auth0.com/docs/quickstart/native/react-native/interactive).
diff --git a/main/docs/quickstart/native/react-native/index.mdx b/main/docs/quickstart/native/react-native/index.mdx
index 5a400049d8..c61a949eb3 100644
--- a/main/docs/quickstart/native/react-native/index.mdx
+++ b/main/docs/quickstart/native/react-native/index.mdx
@@ -12,6 +12,10 @@ title: Add Login to Your React Native Application
'twitter:title': 'Auth0 React Native SDK Quickstarts: Add Login to Your React Native Application'
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This Quickstart is for the React Native framework. To integrate Auth0 into your Expo application, refer to the [Expo Quickstart](https://auth0.com/docs/quickstart/native/react-native-expo/interactive).
diff --git a/main/docs/quickstart/native/wpf-winforms/index.mdx b/main/docs/quickstart/native/wpf-winforms/index.mdx
index f6281b6d03..3f1bd447c4 100644
--- a/main/docs/quickstart/native/wpf-winforms/index.mdx
+++ b/main/docs/quickstart/native/wpf-winforms/index.mdx
@@ -4,6 +4,10 @@ description: 'Add Auth0 login, logout, and user profile to a WPF or WinForms app
sidebarTitle: WPF / WinForms
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Prerequisites:** Before you begin, ensure you have the following:
diff --git a/main/docs/quickstart/spa/angular/index.mdx b/main/docs/quickstart/spa/angular/index.mdx
index 8b5016bb90..9ca5fcaba1 100644
--- a/main/docs/quickstart/spa/angular/index.mdx
+++ b/main/docs/quickstart/spa/angular/index.mdx
@@ -10,6 +10,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
diff --git a/main/docs/quickstart/spa/capn-web/index.mdx b/main/docs/quickstart/spa/capn-web/index.mdx
index a5b6692907..3427aaf1f3 100644
--- a/main/docs/quickstart/spa/capn-web/index.mdx
+++ b/main/docs/quickstart/spa/capn-web/index.mdx
@@ -8,6 +8,9 @@ title: Add Login to Your Cap'n Web Application
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/spa/flutter/index.mdx b/main/docs/quickstart/spa/flutter/index.mdx
index d5725ad679..ebf20202f6 100644
--- a/main/docs/quickstart/spa/flutter/index.mdx
+++ b/main/docs/quickstart/spa/flutter/index.mdx
@@ -5,6 +5,10 @@ sidebarTitle: Flutter (Web)
title: Add Login to Your Flutter Web Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Prerequisites:** Before you begin, ensure you have the following installed:
diff --git a/main/docs/quickstart/spa/react/index.mdx b/main/docs/quickstart/spa/react/index.mdx
index 44053af19a..e9ca958324 100644
--- a/main/docs/quickstart/spa/react/index.mdx
+++ b/main/docs/quickstart/spa/react/index.mdx
@@ -9,6 +9,9 @@ title: Add Login to Your React Application
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
diff --git a/main/docs/quickstart/spa/svelte/index.mdx b/main/docs/quickstart/spa/svelte/index.mdx
index de583d6efd..2004ddd3d3 100644
--- a/main/docs/quickstart/spa/svelte/index.mdx
+++ b/main/docs/quickstart/spa/svelte/index.mdx
@@ -10,6 +10,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/spa/vanillajs/index.mdx b/main/docs/quickstart/spa/vanillajs/index.mdx
index 56ee49d3ea..9733de0b1e 100644
--- a/main/docs/quickstart/spa/vanillajs/index.mdx
+++ b/main/docs/quickstart/spa/vanillajs/index.mdx
@@ -9,6 +9,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
**Using AI to integrate Auth0?** Add this prompt to Cursor, Windsurf, Copilot, Claude Code or your favourite AI-powered IDE to speed up development.
diff --git a/main/docs/quickstart/spa/vuejs/index.mdx b/main/docs/quickstart/spa/vuejs/index.mdx
index 171e60874d..a3d371a17b 100644
--- a/main/docs/quickstart/spa/vuejs/index.mdx
+++ b/main/docs/quickstart/spa/vuejs/index.mdx
@@ -10,6 +10,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
diff --git a/main/docs/quickstart/webapp/aspnet-core-blazor-server/index.mdx b/main/docs/quickstart/webapp/aspnet-core-blazor-server/index.mdx
index 97e52b0046..bc3e0436a0 100644
--- a/main/docs/quickstart/webapp/aspnet-core-blazor-server/index.mdx
+++ b/main/docs/quickstart/webapp/aspnet-core-blazor-server/index.mdx
@@ -7,6 +7,9 @@ title: Add Login to Your Blazor Server Application
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
**Using AI to integrate Auth0?** Add this prompt to Cursor, Windsurf, Copilot, Claude Code or your favourite AI-powered IDE to speed up development.
diff --git a/main/docs/quickstart/webapp/aspnet-core/index.mdx b/main/docs/quickstart/webapp/aspnet-core/index.mdx
index 54217f2200..1e7a211ffd 100644
--- a/main/docs/quickstart/webapp/aspnet-core/index.mdx
+++ b/main/docs/quickstart/webapp/aspnet-core/index.mdx
@@ -5,6 +5,10 @@ sidebarTitle: ASP.NET Core MVC
title: Add Login to Your ASP.NET MVC Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Using AI to integrate Auth0?** Add this prompt to Cursor, Windsurf, Copilot, Claude Code or your favourite AI-powered IDE to speed up development.
diff --git a/main/docs/quickstart/webapp/aspnet-owin/index.mdx b/main/docs/quickstart/webapp/aspnet-owin/index.mdx
index 689df65128..a670ecb57d 100644
--- a/main/docs/quickstart/webapp/aspnet-owin/index.mdx
+++ b/main/docs/quickstart/webapp/aspnet-owin/index.mdx
@@ -4,6 +4,10 @@ description: This guide demonstrates how to integrate Auth0 with any new or exis
sidebarTitle: ASP.NET OWIN
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
Auth0 allows you to add authentication to your ASP.NET OWIN application in minutes. This guide walks you through adding login, logout, and user profile display to a classic ASP.NET OWIN application.
By the end of this guide, your application will:
diff --git a/main/docs/quickstart/webapp/express/index.mdx b/main/docs/quickstart/webapp/express/index.mdx
index 6aad9d4cf6..08a845ddc8 100644
--- a/main/docs/quickstart/webapp/express/index.mdx
+++ b/main/docs/quickstart/webapp/express/index.mdx
@@ -7,6 +7,9 @@ title: Add Login to Your Express Application
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
@@ -680,8 +683,8 @@ console.log('Config check:', {
Now that you have authentication working, consider exploring:
-- **[Add Authorization](https://auth0.com/docs/quickstart/webapp/express/02-user-profile)** - Implement role-based access control
-- **[Call Protected APIs](https://auth0.com/docs/quickstart/webapp/express/03-authorization)** - Use access tokens to call your backend APIs
+- **[Add Authorization](https://auth0.com/docs/manage-users/access-control/rbac)** - Implement role-based access control
+- **[Call Protected APIs](https://auth0.com/docs/secure/tokens/access-tokens/get-access-tokens)** - Use access tokens to call your backend APIs
- **[Customize Universal Login](https://auth0.com/docs/customize/universal-login-pages)** - Brand your login experience
- **[Add Social Connections](https://auth0.com/docs/connections/social)** - Enable Google, GitHub, and other social logins
- **[Implement MFA](https://auth0.com/docs/secure/multi-factor-authentication)** - Add multi-factor authentication
diff --git a/main/docs/quickstart/webapp/fastapi/index.mdx b/main/docs/quickstart/webapp/fastapi/index.mdx
index ee8afe39c4..49ec139166 100644
--- a/main/docs/quickstart/webapp/fastapi/index.mdx
+++ b/main/docs/quickstart/webapp/fastapi/index.mdx
@@ -5,6 +5,10 @@ sidebarTitle: FastAPI
title: Add Login to Your FastAPI Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
**Using AI to integrate Auth0?** Add this prompt to Cursor, Windsurf, Copilot, Claude Code or your favourite AI-powered IDE to speed up development.
diff --git a/main/docs/quickstart/webapp/fastify/index.mdx b/main/docs/quickstart/webapp/fastify/index.mdx
index 5e3d5e0cbd..dfe61337ee 100644
--- a/main/docs/quickstart/webapp/fastify/index.mdx
+++ b/main/docs/quickstart/webapp/fastify/index.mdx
@@ -8,6 +8,9 @@ title: Add Login to Your Fastify Application
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
export function generateRandomString(length) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
return Array.from({length}, () => chars[Math.floor(Math.random() * chars.length)]).join('');
diff --git a/main/docs/quickstart/webapp/hono/index.mdx b/main/docs/quickstart/webapp/hono/index.mdx
index 70c8c04933..bc42324e97 100644
--- a/main/docs/quickstart/webapp/hono/index.mdx
+++ b/main/docs/quickstart/webapp/hono/index.mdx
@@ -7,6 +7,9 @@ description: "This Quickstart demonstrates how to secure your Hono applications
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/webapp/java-ee/index.mdx b/main/docs/quickstart/webapp/java-ee/index.mdx
index b15b20f663..45888ceeb0 100644
--- a/main/docs/quickstart/webapp/java-ee/index.mdx
+++ b/main/docs/quickstart/webapp/java-ee/index.mdx
@@ -7,6 +7,9 @@ title: Add Login to Your Java EE Application
import { AuthCodeGroup } from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
diff --git a/main/docs/quickstart/webapp/java-spring-boot/index.mdx b/main/docs/quickstart/webapp/java-spring-boot/index.mdx
index bc0f0d9207..930f9f49d6 100644
--- a/main/docs/quickstart/webapp/java-spring-boot/index.mdx
+++ b/main/docs/quickstart/webapp/java-spring-boot/index.mdx
@@ -5,6 +5,9 @@ description: "Add Auth0 login to a Spring Boot web application using the Okta Sp
import { AuthCodeGroup } from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
**Prerequisites:**
- JDK 17+ ([download](https://adoptium.net/))
diff --git a/main/docs/quickstart/webapp/java/index.mdx b/main/docs/quickstart/webapp/java/index.mdx
index fd526edf41..cd130283d3 100644
--- a/main/docs/quickstart/webapp/java/index.mdx
+++ b/main/docs/quickstart/webapp/java/index.mdx
@@ -7,6 +7,9 @@ title: Add Login to Your Java Servlet Application
import { AuthCodeGroup } from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
**Prerequisites:** Before you begin, ensure you have the following installed:
@@ -688,6 +691,6 @@ You should now have a fully functional Auth0-integrated servlet application runn
- Check that cookies are enabled in your browser
- Verify HTTPS is used in production environments
-For additional support, visit the [Auth0 Community](https://community.auth0.com/) or check the [Auth0 Support Center](https://support.auth0.com/).
+For additional support, visit the [Auth0 Community](https://community.auth0.com/).
diff --git a/main/docs/quickstart/webapp/nextjs/index.mdx b/main/docs/quickstart/webapp/nextjs/index.mdx
index 9ecd4a7bb3..efad52eafc 100644
--- a/main/docs/quickstart/webapp/nextjs/index.mdx
+++ b/main/docs/quickstart/webapp/nextjs/index.mdx
@@ -9,6 +9,9 @@ import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
import {AuthCodeBlock} from "/snippets/AuthCodeBlock.jsx";
import {CreateInteractiveApp} from "/snippets/recipe.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
If you use an AI coding assistant like Claude Code, Cursor, or GitHub Copilot, you can add Auth0 authentication automatically in minutes using [agent skills](https://agentskills.io/home).
diff --git a/main/docs/quickstart/webapp/nuxt/index.mdx b/main/docs/quickstart/webapp/nuxt/index.mdx
index 8dd176a12f..10fc8a3045 100644
--- a/main/docs/quickstart/webapp/nuxt/index.mdx
+++ b/main/docs/quickstart/webapp/nuxt/index.mdx
@@ -5,6 +5,10 @@ sidebarTitle: Nuxt.js
title: Add Login to Your Nuxt.js Application
---
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
+
This Quickstart is currently in **Beta**. We'd love to hear your feedback!
diff --git a/main/docs/quickstart/webapp/python/index.mdx b/main/docs/quickstart/webapp/python/index.mdx
index 251a733d50..15ee057244 100644
--- a/main/docs/quickstart/webapp/python/index.mdx
+++ b/main/docs/quickstart/webapp/python/index.mdx
@@ -7,6 +7,9 @@ title: 'Add Login to Your Flask Application'
import {AuthCodeGroup} from "/snippets/AuthCodeGroup.jsx";
+import {HowToSchema} from "/snippets/HowToSchema.jsx";
+
+
**Prerequisites:** Before you begin, ensure you have the following installed:
diff --git a/main/snippets/HowToSchema.jsx b/main/snippets/HowToSchema.jsx
new file mode 100644
index 0000000000..47e782278c
--- /dev/null
+++ b/main/snippets/HowToSchema.jsx
@@ -0,0 +1,17 @@
+import { useEffect, useRef } from 'react';
+
+export const HowToSchema = () => {
+ const scriptRef = useRef(null);
+
+ useEffect(() => {
+ if (scriptRef.current) {
+ const data = {
+ '@context': 'https://schema.org',
+ '@type': 'HowTo',
+ };
+ scriptRef.current.text = JSON.stringify(data).replace(/;
+};