# Keycloakify

## Documentation

- [Quick Start](https://docs.keycloakify.dev/readme.md)
- [CSS Customization](https://docs.keycloakify.dev/css-customization.md)
- [Testing your Theme](https://docs.keycloakify.dev/testing-your-theme.md)
- [Outside of Keycloak](https://docs.keycloakify.dev/testing-your-theme/outside-of-keycloak.md)
- [Inside of Keycloak](https://docs.keycloakify.dev/testing-your-theme/inside-of-keycloak.md)
- [Outside of Keycloak - Without Storybook](https://docs.keycloakify.dev/testing-your-theme/outside-of-keycloak-without-storybook.md)
- [Deploying Your Theme](https://docs.keycloakify.dev/deploying-your-theme.md)
- [Integrating Keycloakify in your Codebase](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase.md)
- [Vite](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/vite.md)
- [Create-React-App / Webpack](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/webpack.md)
- [yarn/npm/pnpm/bun Workspaces](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/package-manager-workspaces.md)
- [Turborepo](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/turborepo.md)
- [Nx](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/nx.md)
- [Angular Workspace](https://docs.keycloakify.dev/integration-keycloakify-in-your-codebase/angular-workspace.md)
- [Using a Component Library](https://docs.keycloakify.dev/common-use-case-examples/using-a-component-library.md)
- [Custom Fonts](https://docs.keycloakify.dev/common-use-case-examples/custom-fonts.md)
- [Changing the background image](https://docs.keycloakify.dev/common-use-case-examples/changing-the-background-image.md)
- [Changing the background image - CSS-in-JS](https://docs.keycloakify.dev/common-use-case-examples/changing-the-background-image-css-in-js.md)
- [Adding your Logo](https://docs.keycloakify.dev/common-use-case-examples/adding-your-logo.md): Practical example of how to import custom assets in ejected components.
- [Using Tailwind](https://docs.keycloakify.dev/common-use-case-examples/using-tailwind.md)
- [Dark Mode Persistence](https://docs.keycloakify.dev/common-use-case-examples/dark-mode-persistence.md)
- [Internationalization and Translations](https://docs.keycloakify.dev/features/i18n.md): Or i18n for short
- [Basic principles](https://docs.keycloakify.dev/features/i18n/basic-principles.md)
- [Previewing Your Pages in Different Languages](https://docs.keycloakify.dev/features/i18n/previewing-your-pages-in-different-languages.md)
- [Adding New Translation Messages or Changing the Default Ones](https://docs.keycloakify.dev/features/i18n/adding-new-translation-messages-or-changing-the-default-ones.md)
- [Adding Support for Extra Languages](https://docs.keycloakify.dev/features/i18n/adding-support-for-extra-languages.md)
- [Theme Variants](https://docs.keycloakify.dev/features/theme-variants.md)
- [Environment Variables](https://docs.keycloakify.dev/features/environment-variables.md)
- [Styling a Custom Page Not Included in Base Keycloak](https://docs.keycloakify.dev/features/styling-a-custom-page-not-included-in-base-keycloak.md)
- [Integrating an Existing Theme into Your Keycloakify Project](https://docs.keycloakify.dev/features/integrating-an-existing-theme-into-your-keycloakify-project.md)
- [Compiler Options](https://docs.keycloakify.dev/features/compiler-options.md)
- [--project](https://docs.keycloakify.dev/features/compiler-options/project.md)
- [keycloakVersionTargets](https://docs.keycloakify.dev/features/compiler-options/keycloakversiontargets.md)
- [environmentVariables](https://docs.keycloakify.dev/features/compiler-options/environmentvariables.md)
- [themeName](https://docs.keycloakify.dev/features/compiler-options/themename.md)
- [startKeycloakOptions](https://docs.keycloakify.dev/features/compiler-options/startkeycloakoptions.md)
- [themeVersion](https://docs.keycloakify.dev/features/compiler-options/themeversion-1.md)
- [accountThemeImplementation](https://docs.keycloakify.dev/features/compiler-options/account-theme-implementation.md)
- [postBuild](https://docs.keycloakify.dev/features/compiler-options/postbuild.md)
- [XDG\_CACHE\_HOME](https://docs.keycloakify.dev/features/compiler-options/xdg_cache_home.md)
- [kcContextExclusionsFtl](https://docs.keycloakify.dev/features/compiler-options/kccontextexclusionsftl.md)
- [keycloakifyBuildDirPath](https://docs.keycloakify.dev/features/compiler-options/keycloakifybuilddirpath.md)
- [groupId](https://docs.keycloakify.dev/features/compiler-options/groupid.md)
- [artifactId](https://docs.keycloakify.dev/features/compiler-options/artifactid.md)
- [Webpack specific options](https://docs.keycloakify.dev/features/compiler-options/webpack-specific-options.md)
- [projectBuildDirPath](https://docs.keycloakify.dev/features/compiler-options/webpack-specific-options/projectbuilddirpath.md)
- [staticDirPathInProjectBuildDirPath](https://docs.keycloakify.dev/features/compiler-options/webpack-specific-options/staticdirpathinprojectbuilddirpath.md)
- [publicDirPath](https://docs.keycloakify.dev/features/compiler-options/webpack-specific-options/publicdirpath.md)
- [Registration Page](https://docs.keycloakify.dev/page-specific-guides/registration-page.md)
- [Terms and Conditions Page](https://docs.keycloakify.dev/page-specific-guides/terms-and-conditions-page.md)
- [Differences Between Login Themes and Other Types of Themes](https://docs.keycloakify.dev/theme-types/difference-between-login-themes-and-the-other-types-of-themes.md)
- [Account Theme](https://docs.keycloakify.dev/theme-types/account-theme.md)
- [Single-Page](https://docs.keycloakify.dev/theme-types/account-theme/single-page.md): Customizing the Single Page Account UI
- [Multi-Page](https://docs.keycloakify.dev/theme-types/account-theme/multi-page.md)
- [Email Theme](https://docs.keycloakify.dev/theme-types/email-theme.md)
- [Admin Theme](https://docs.keycloakify.dev/theme-types/admin-theme.md)

* [Quick start](https://docs.keycloakify.dev/v10/readme.md)
* [Testing your Theme](https://docs.keycloakify.dev/v10/testing-your-theme.md)
* [In Storybook](https://docs.keycloakify.dev/v10/testing-your-theme/in-storybook.md)
* [In a Keycloak Docker Container](https://docs.keycloakify.dev/v10/testing-your-theme/in-a-keycloak-docker-container.md)
* [With Vite or Webpack in dev mode](https://docs.keycloakify.dev/v10/testing-your-theme/with-vite-or-webpack-in-dev-mode.md)
* [Integrating Keycloakify in your Codebase](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase.md)
* [In your React Project](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/in-your-react-project.md)
* [In your Vite Project](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/in-your-react-project/in-your-vite-project.md)
* [In your Webpack Project](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/in-your-react-project/in-your-webpack-project.md)
* [As a Subproject of your Monorepo](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/as-a-subproject-of-your-monorepo.md)
* [Turborepo](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/as-a-subproject-of-your-monorepo/turborepo.md)
* [Nx Integrated Monorepo](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/as-a-subproject-of-your-monorepo/nx-integrated-monorepo.md)
* [Package Manager Workspaces](https://docs.keycloakify.dev/v10/keycloakify-in-my-codebase/as-a-subproject-of-your-monorepo/package-manager-workspaces.md)
* [Customization Strategies](https://docs.keycloakify.dev/v10/customization-strategies.md)
* [CSS Level Customization](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization.md): Customize the theme without touching the React components
* [Basic example](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/basic-example.md)
* [Removing the default styles](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/removing-the-default-styles.md)
* [Applying your own classes](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/applying-your-own-classes.md)
* [Page specific styles](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/page-specific-styles.md)
* [Using Tailwind](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/using-tailwind.md)
* [Using custom assets](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/using-custom-assets.md)
* [.css, .sass or .less](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/using-custom-assets/plain-css.md)
* [CSS-in-JS](https://docs.keycloakify.dev/v10/customization-strategies/css-level-customization/using-custom-assets/css-in-js.md)
* [Component Level Customization](https://docs.keycloakify.dev/v10/customization-strategies/component-level-customization.md)
* [Using custom assets](https://docs.keycloakify.dev/v10/customization-strategies/component-level-customization/in-react-components.md)
* [Custom Fonts](https://docs.keycloakify.dev/v10/custom-fonts.md)
* [Internationalization and Translations](https://docs.keycloakify.dev/v10/i18n.md): Or i18n for short
* [Theme Variants](https://docs.keycloakify.dev/v10/theme-variants.md)
* [Customizing the Register Page](https://docs.keycloakify.dev/v10/customizing-the-register-page.md)
* [Account Theme](https://docs.keycloakify.dev/v10/account-theme.md)
* [Single-Page](https://docs.keycloakify.dev/v10/account-theme/single-page.md): Customizing the Single Page Account UI
* [Multi-Page](https://docs.keycloakify.dev/v10/account-theme/multi-page.md)
* [Terms and conditions](https://docs.keycloakify.dev/v10/terms-and-conditions.md)
* [Styling a Custom Page Not Included In Base Keycloak](https://docs.keycloakify.dev/v10/styling-custom-extension-page.md)
* [Accessing the Server Environment Variables](https://docs.keycloakify.dev/v10/environment-variables.md)
* [Targetting Specific Keycloak Versions](https://docs.keycloakify.dev/v10/targeting-specific-keycloak-versions.md)
* [Email Customization](https://docs.keycloakify.dev/v10/email-customization.md): Customize the default email template
* [Passing URL Parameters to your Theme](https://docs.keycloakify.dev/v10/passing-url-parameters-when-redirecting-to-your-theme.md)
* [Admin theme](https://docs.keycloakify.dev/v10/admin-theme.md)
* [Importing the JAR of Your Theme Into Keycloak](https://docs.keycloakify.dev/v10/importing-your-theme-in-keycloak.md)
* [Enabling your Theme in the Keycloak Admin Console](https://docs.keycloakify.dev/v10/enabling-your-theme.md)
* [Taking ownership of the kcContext](https://docs.keycloakify.dev/v10/taking-ownership-of-the-script-responsible-for-generating-the-kccontext.md)
* [Configuration Options](https://docs.keycloakify.dev/v10/configuration-options.md)
* [--project](https://docs.keycloakify.dev/v10/configuration-options/project.md)
* [keycloakVersionTargets](https://docs.keycloakify.dev/v10/configuration-options/keycloakversiontargets.md)
* [environmentVariables](https://docs.keycloakify.dev/v10/configuration-options/environmentvariables.md)
* [themeName](https://docs.keycloakify.dev/v10/configuration-options/themename.md)
* [startKeycloakOptions](https://docs.keycloakify.dev/v10/configuration-options/startkeycloakoptions.md)
* [themeVersion](https://docs.keycloakify.dev/v10/configuration-options/themeversion-1.md)
* [postBuild](https://docs.keycloakify.dev/v10/configuration-options/postbuild.md)
* [XDG\_CACHE\_HOME](https://docs.keycloakify.dev/v10/configuration-options/xdg_cache_home.md)
* [kcContextExclusionsFtl](https://docs.keycloakify.dev/v10/configuration-options/kccontextexclusionsftl.md)
* [keycloakifyBuildDirPath](https://docs.keycloakify.dev/v10/configuration-options/keycloakifybuilddirpath.md)
* [groupId](https://docs.keycloakify.dev/v10/configuration-options/groupid.md)
* [artifactId](https://docs.keycloakify.dev/v10/configuration-options/artifactid.md)
* [Webpack specific options](https://docs.keycloakify.dev/v10/configuration-options/webpack-specific-options.md)
* [projectBuildDirPath](https://docs.keycloakify.dev/v10/configuration-options/webpack-specific-options/projectbuilddirpath.md)
* [staticDirPathInProjectBuildDirPath](https://docs.keycloakify.dev/v10/configuration-options/webpack-specific-options/staticdirpathinprojectbuilddirpath.md)
* [publicDirPath](https://docs.keycloakify.dev/v10/configuration-options/webpack-specific-options/publicdirpath.md)
* [Can't identify the page to customize?](https://docs.keycloakify.dev/v10/faq-and-help/cant-identify-the-page-to-customize.md)
* [How it Works](https://docs.keycloakify.dev/v10/faq-and-help/how-it-works.md): Understand how Keycloakify works under the hood
* [Some values you need are missing from in kcContext type definitions?](https://docs.keycloakify.dev/v10/faq-and-help/some-values-you-need-are-missing-from-in-kccontext.md): Extending the KcContext type definition
* [Can I use it with Vue or Angular](https://docs.keycloakify.dev/v10/faq-and-help/can-i-use-it-with-vue-or-angular.md)
* [Angular](https://docs.keycloakify.dev/v10/faq-and-help/can-i-use-it-with-vue-or-angular/angular.md)
* [Limitations](https://docs.keycloakify.dev/v10/faq-and-help/limitations.md)
* [Errors Keycloak in Logs](https://docs.keycloakify.dev/v10/faq-and-help/keycloak-error-in-log.md)
* [How do I add extra pages?](https://docs.keycloakify.dev/v10/faq-and-help/how-do-i-add-extra-pages.md)
* [Can I use react-hooks-form?](https://docs.keycloakify.dev/v10/faq-and-help/can-i-use-react-hooks-form.md)
* [Redirecting you users to the login/register pages](https://docs.keycloakify.dev/v10/faq-and-help/redirecting-you-users-to-the-login-register-pages.md)
* [Contributing](https://docs.keycloakify.dev/v10/faq-and-help/contributing.md): Looking to submit a PR? Thank you!
* [Migration Guides](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides.md)
* [v9 -> v10](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/v9-greater-than-v10.md)
* [CRA -> Vite](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/cra-greater-than-vite.md)
* [v8 -> v9](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/v8-greater-than-v9.md)
* [v7 -> v8](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/v7-greater-than-v8.md)
* [v6 -> v7](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/v6-greater-than-v7.md)
* [v6.x -> v6.12](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/v6.x-greater-than-v6.12.md)
* [v5 -> v6](https://docs.keycloakify.dev/v10/faq-and-help/migration-guides/readme-1.md): Migration guide from v5 to v6
* [Google reCaptcha and End of third-party Cookies](https://docs.keycloakify.dev/v10/faq-and-help/google-recaptcha-and-end-of-third-party-cookies.md)
* [Accessing the Realm Attributes](https://docs.keycloakify.dev/v10/faq-and-help/accessing-the-realm-attributes.md)
* [Sponsors](https://docs.keycloakify.dev/v10/sponsors.md): Backers of the project

- [Quick start](https://docs.keycloakify.dev/v9/readme.md)
- [Importing your theme in Keycloak](https://docs.keycloakify.dev/v9/importing-your-theme-in-keycloak.md)
- [Keycloakify in my App](https://docs.keycloakify.dev/v9/keycloakify-in-my-app.md): Setting up Keycloakify in your Web App
- [Importing assets and fonts](https://docs.keycloakify.dev/v9/importing-assets.md)
- [Email customization](https://docs.keycloakify.dev/v9/email-customization.md): Customize the default email template
- [Terms and conditions](https://docs.keycloakify.dev/v9/terms-and-conditions.md): Consent page
- [Realtime input validation and custom registration fields](https://docs.keycloakify.dev/v9/realtime-input-validation.md)
- [Limitations](https://docs.keycloakify.dev/v9/limitations.md)
- [Environment Variables](https://docs.keycloakify.dev/v9/environment-variables.md)
- [i18n: msg(...)](https://docs.keycloakify.dev/v9/adding-text-keys.md): If you want to overwrite the translation messages that comes by default with Keycloak, define some new messages, or add translation for a new language.
- [Build options](https://docs.keycloakify.dev/v9/build-options.md)
- [Email domain acceptlist](https://docs.keycloakify.dev/v9/email-domain-acceptlist.md): Only allow specific emails to register.
- [Keycloak error in log](https://docs.keycloakify.dev/v9/keycloak-error-in-log.md)
- [Passing values from the App to the theme](https://docs.keycloakify.dev/v9/context-persistence.md)
- [Contributing](https://docs.keycloakify.dev/v9/contributing.md): Looking for submitting a PR? Thank you!
- [How it works](https://docs.keycloakify.dev/v9/how-it-works.md)
- [Migration guides](https://docs.keycloakify.dev/v9/migration-guides.md)
- [CRA -> Vite](https://docs.keycloakify.dev/v9/migration-guides/cra-greater-than-vite.md)
- [v8 -> v9](https://docs.keycloakify.dev/v9/migration-guides/v8-greater-than-v9.md)
- [v7 -> v8](https://docs.keycloakify.dev/v9/migration-guides/v7-greater-than-v8.md)
- [v6 -> v7](https://docs.keycloakify.dev/v9/migration-guides/v6-greater-than-v7.md)
- [v6.x -> v6.12](https://docs.keycloakify.dev/v9/migration-guides/v6.x-greater-than-v6.12.md)
- [v5 -> v6](https://docs.keycloakify.dev/v9/migration-guides/readme-1.md): Migration guide from v5 to v6

* [Quick start](https://docs.keycloakify.dev/v8/readme.md)
* [Keycloakify in my App](https://docs.keycloakify.dev/v8/keycloakify-in-my-app.md): Collocating your App and your frontend code
* [Email customization](https://docs.keycloakify.dev/v8/email-customization.md): Customize the default email template
* [Terms and conditions](https://docs.keycloakify.dev/v8/terms-and-conditions.md): Consent page
* [Realtime input validation and custom registration fields](https://docs.keycloakify.dev/v8/realtime-input-validation.md)
* [Limitations](https://docs.keycloakify.dev/v8/limitations.md)
* [Environnement Variables](https://docs.keycloakify.dev/v8/environnement-variables.md)
* [i18n: msg(...)](https://docs.keycloakify.dev/v8/adding-text-keys.md): If you want to overwrite the translation messages that comes by default with Keycloak, define some new messages, or add translation for a new language.
* [Build options](https://docs.keycloakify.dev/v8/build-options.md)
* [Email domain acceptlist](https://docs.keycloakify.dev/v8/email-domain-acceptlist.md): Only allow specific emails to register.
* [Keycloak error in log](https://docs.keycloakify.dev/v8/keycloak-error-in-log.md)
* [Context persistence](https://docs.keycloakify.dev/v8/context-persistence.md)
* [Contributing](https://docs.keycloakify.dev/v8/contributing.md): Looking for submitting a PR? Thank you!
* [How it works](https://docs.keycloakify.dev/v8/how-it-works.md)
* [Migration guides](https://docs.keycloakify.dev/v8/migration-guides.md)
* [v7 -> v8](https://docs.keycloakify.dev/v8/migration-guides/v7-greater-than-v8.md)
* [v6 -> v7](https://docs.keycloakify.dev/v8/migration-guides/v6-greater-than-v7.md)
* [v6.x -> v6.12](https://docs.keycloakify.dev/v8/migration-guides/v6.x-greater-than-v6.12.md)
* [v5 -> v6](https://docs.keycloakify.dev/v8/migration-guides/readme-1.md): Migration guide from v5 to v6

- [Quick start](https://docs.keycloakify.dev/v7/readme.md)
- [Keycloakify in my App](https://docs.keycloakify.dev/v7/keycloakify-in-my-app.md): Collocating your App and your frontend code
- [Email customization](https://docs.keycloakify.dev/v7/email-customization.md): Customize the default email template
- [Terms and conditions](https://docs.keycloakify.dev/v7/terms-and-conditions.md): Consent page
- [Realtime input validation and custom registration fields](https://docs.keycloakify.dev/v7/realtime-input-validation.md)
- [Limitations](https://docs.keycloakify.dev/v7/limitations.md)
- [Environnement Variables](https://docs.keycloakify.dev/v7/environnement-variables.md)
- [i18n: msg(...)](https://docs.keycloakify.dev/v7/adding-text-keys.md): If you want to overwrite the translation messages that comes by default with Keycloak, define some new messages, or add translation for a new language.
- [Build options](https://docs.keycloakify.dev/v7/build-options.md)
- [Email domain acceptlist](https://docs.keycloakify.dev/v7/email-domain-acceptlist.md): Only allow specific emails to register.
- [Keycloak error in log](https://docs.keycloakify.dev/v7/keycloak-error-in-log.md)
- [Context persistence](https://docs.keycloakify.dev/v7/context-persistence.md)
- [Contributing](https://docs.keycloakify.dev/v7/contributing.md): Looking for submitting a PR? Thank you!
- [How it works](https://docs.keycloakify.dev/v7/how-it-works.md)
- [Migration guides](https://docs.keycloakify.dev/v7/migration-guides.md)
- [v6 -> v7](https://docs.keycloakify.dev/v7/migration-guides/v6-greater-than-v7.md)
- [v6.x -> v6.12](https://docs.keycloakify.dev/v7/migration-guides/v6.x-greater-than-v6.12.md)
- [v5 -> v6](https://docs.keycloakify.dev/v7/migration-guides/readme-1.md): Migration guide from v5 to v6

* [Quick start](https://docs.keycloakify.dev/v6/readme.md)
* [Keycloakify in my App](https://docs.keycloakify.dev/v6/keycloakify-in-my-app.md)
* [Email customization](https://docs.keycloakify.dev/v6/email-customization.md): Customize the default email template
* [Terms and conditions](https://docs.keycloakify.dev/v6/terms-and-conditions.md)
* [Realtime input validation](https://docs.keycloakify.dev/v6/realtime-input-validation.md)
* [Limitations](https://docs.keycloakify.dev/v6/limitations.md)
* [Context persistence](https://docs.keycloakify.dev/v6/context-persistence.md)
* [i18n: msg(...)](https://docs.keycloakify.dev/v6/adding-text-keys.md): If you want to overwrite the translation messages that comes by default with Keycloak, define some new messages, or add translation for a new language.
* [Email domain acceptlist](https://docs.keycloakify.dev/v6/email-domain-acceptlist.md): Only allow specific emails to register.
* [Keycloak error in log](https://docs.keycloakify.dev/v6/keycloak-error-in-log.md)
* [Contributing](https://docs.keycloakify.dev/v6/contributing.md): Looking for submitting a PR? Thank you!
* [Build options](https://docs.keycloakify.dev/v6/build-options.md)
* [Requirements](https://docs.keycloakify.dev/v6/readme-1.md)
* [v5 -> v6](https://docs.keycloakify.dev/v6/readme-1-1.md): Migration guide from v5 to v6
* [v6.x -> v6.12](https://docs.keycloakify.dev/v6/v6.x-greater-than-v6.12.md)

- [Requirements](https://docs.keycloakify.dev/v5/readme.md)
- [👨💻 Quick start](https://docs.keycloakify.dev/v5/how-to-use.md)
- [Development](https://docs.keycloakify.dev/v5/developpement.md): Test and debug your theme
- [Email customization](https://docs.keycloakify.dev/v5/email-customization.md): Customize the default email template
- [Terms and conditions](https://docs.keycloakify.dev/v5/terms-and-conditions.md)
- [Realtime input validation](https://docs.keycloakify.dev/v5/realtime-input-validation.md)
- [Limitations](https://docs.keycloakify.dev/v5/limitations.md)
- [Context persistence](https://docs.keycloakify.dev/v5/context-persistence.md)
- [Adding i18n messages keys](https://docs.keycloakify.dev/v5/adding-text-keys.md): What to do if you need to edit messages\_xx.properties
- [Performance optimization](https://docs.keycloakify.dev/v5/page-1.md): Enable loading in a blink of an eye of login pages with --external-assets
- [Email domain acceptlist](https://docs.keycloakify.dev/v5/email-domain-acceptlist.md): Only allow specific emails to register.
- [Keycloak error in log](https://docs.keycloakify.dev/v5/keycloak-error-in-log.md)
- [Contributing](https://docs.keycloakify.dev/v5/contributing.md): Looking for submitting a PR? Thank you!

## Starter Themes

- [Starter Themes](https://docs.keycloakify.dev/starter-themes/starter-themes.md): Alternative Base UIs
- [Shadcn UI (Tailwind)](https://docs.keycloakify.dev/starter-themes/shadcn-ui-tailwind.md)
- [MUI](https://docs.keycloakify.dev/starter-themes/mui.md)

## Release Notes & Upgrade Instructions

- [v11](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/readme.md)
- [v10](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/v9-greater-than-v10.md)
- [v9](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/v8-greater-than-v9.md)
- [v8](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/v7-greater-than-v8.md)
- [v7](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/v6-greater-than-v7.md)
- [v6.12](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/v6.x-greater-than-v6.12.md)
- [v6](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/readme-1.md): Migration guide from v5 to v6
- [Migrating from Create-React-App to Vite](https://docs.keycloakify.dev/release-notes-and-upgrade-instructions/other-guides/cra-greater-than-vite.md)

## FAQ

- [Frequently Asked Questions](https://docs.keycloakify.dev/faq/readme.md)
- [How does Keycloakify work?](https://docs.keycloakify.dev/faq/how-it-works.md): Understand how Keycloakify works under the hood
- [It works in Storybook but not in Keycloak](https://docs.keycloakify.dev/faq/it-works-in-storybook-but-not-in-keycloak.md)
- [There is too much info exposed in window.kcContext](https://docs.keycloakify.dev/faq/there-is-too-much-info-exposed-in-window.kccontext.md)
- [How do I identify the page to customize?](https://docs.keycloakify.dev/faq/cant-identify-the-page-to-customize.md)
- [Can I use react-hooks-form?](https://docs.keycloakify.dev/faq/can-i-use-react-hooks-form.md)
- [I can't find what I need in the kcContext](https://docs.keycloakify.dev/faq/some-values-you-need-are-missing-from-in-kccontext.md): Extending the KcContext type definition
- [How do I add extra pages?](https://docs.keycloakify.dev/faq/how-do-i-add-extra-pages.md)
- [How can I access Realm Attributes?](https://docs.keycloakify.dev/faq/accessing-the-realm-attributes.md)
- [How can I redirect the user to Login/Register?](https://docs.keycloakify.dev/faq/redirecting-you-users-to-the-login-register-pages.md)
- [Errors in Keycloak Log](https://docs.keycloakify.dev/faq/keycloak-error-in-log.md)
- [Why do I get reCaptcha warnings?](https://docs.keycloakify.dev/faq/google-recaptcha-and-end-of-third-party-cookies.md)
- [My Realm Overrides Translations do not apply](https://docs.keycloakify.dev/faq/my-realm-overrides-translations-do-not-apply.md)
- [Validating the password in login-update-password.ftl page](https://docs.keycloakify.dev/faq/validating-the-password-in-login-update-password.ftl-page.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.keycloakify.dev/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
