Theme Library
The Theme Library is Skycloak’s centralized theme management system, available on the Business and Enterprise plans. It provides one place to upload, organize, and assign custom Keycloak themes — including JAR files produced by Keycloakify — across every realm and application in your cluster.
Overview
The Theme Library transforms how you manage Keycloak themes by providing:
- Centralized Management: Upload and organize all your custom themes in one place
- ZIP and JAR uploads: Drop in either a standard ZIP theme or a Keycloakify-style JAR
-
You name your ZIP themes: For ZIP uploads the name you type is the theme name — handy for versioning (e.g.
mytheme-v2026-04-29). For Keycloakify JARs the theme name(s) come from inside the JAR (Keycloak loads JAR themes by their built-in directory names) - Multi-theme JARs: A single Keycloakify JAR that packages several themes creates one library entry per inner theme automatically
- Automatic Type Detection: System identifies login, email, admin, and account theme types
- Application-Specific Assignment: Assign different themes to different realms and clients
- Version Control: Manage multiple versions of themes with rollback capabilities
- Email Conflict Detection: Automatically detect and resolve email template conflicts
- Usage Analytics: Track theme usage and performance across your organization
Theme Types
The Theme Library supports four distinct theme types, each serving different aspects of your Keycloak instance:
Login Themes
Purpose: Customize user-facing authentication pages
- Login and registration forms
- Password reset pages
- Multi-factor authentication screens
- Social login integration pages
Use Cases:
- Brand consistency across authentication flows
- Custom login experiences per application
- A/B testing different authentication designs
- Localized authentication pages
Email Themes
Purpose: Customize email templates sent to users
- Welcome and verification emails
- Password reset notifications
- Account lockout alerts
- Invitation emails
Use Cases:
- Branded email communications
- Custom email layouts and styling
- Localized email content
- Transactional email customization
Important: Email themes may conflict with custom email templates. The system automatically detects and warns about potential conflicts.
Admin Themes
Purpose: Customize the Keycloak admin console
- Admin dashboard appearance
- Configuration interface styling
- Administrative workflow customization
- White-label admin experiences
Use Cases:
- Branded admin interfaces for managed services
- Custom admin workflows
- Simplified admin interfaces
- Partner/client-specific admin experiences
Account Themes
Purpose: Customize user account management pages
- User profile management
- Account settings pages
- Security settings interfaces
- Personal information management
Use Cases:
- Branded user self-service portals
- Custom account management flows
- Enhanced user experience
- Integrated account management
Theme Management
Upload Process
-
Access Theme Library
- Navigate to Workspace Settings
- Click “Theme Library” tab
- Requires the Business plan or higher
-
Upload Theme Package
- Click “Upload Theme”
- Select a Keycloak theme archive —
.zipor.jar(Keycloakify-style), max 50MB - Enter a theme name and description
- System validates and processes upload
-
How the theme name is decided
ZIP uploads use the name you type. A ZIP’s internal folder is just packaging, so the Name field in the dialog is the theme name. Upload the same ZIP again under a different name (e.g.
mytheme-v2026-04-29) to keep multiple versions side by side.Keycloakify JARs use the names inside the JAR. A provider JAR carries its theme directory names internally (
theme/<name>/...), and Keycloak loads JAR themes by those names — so Skycloak uses them as-is and the dialog Name is ignored. This guarantees the on-disk path matches what your build produces.Multi-theme JARs. A Keycloakify JAR can package several themes (
theme/Alpha/login/...,theme/Beta/account/...). Uploading such a JAR via the Theme Library creates one library entry per inner theme, all sharing the source archive but installed into distinct Keycloak theme directories. Auto-apply settings, if any, are applied only to the alphabetically first theme; the rest land in the library unassigned so you can wire them up afterwards. If a theme inside the JAR already exists in the cluster, the upload is rejected and the conflicting theme name(s) are listed so you can remove or rename them first. -
Automatic Type Detection
- System scans theme structure
- Identifies supported theme types
- Detects login, email, admin, and account components
- Reports detected capabilities
-
Theme Validation
- Validates Keycloak theme structure
- Checks for required files and templates
- Identifies potential issues
- Provides validation feedback
-
Publish Theme
- Review detected theme types
- Publish to make available for assignment
- Manage theme versions and updates
Theme Organization
Theme Listing:
- View all uploaded themes
- Filter by type (login, email, admin, account)
- Search by name or description
- Sort by upload date or usage
Theme Details:
- Theme name and description
- Detected theme types
- File size and upload date
- Usage statistics
- Assignment status
Version Management:
- Track theme versions
- Update existing themes
- Rollback to previous versions
- Compare theme changes
Theme Status
Draft: Recently uploaded, not yet published Published: Available for assignment to applications Deployed: Currently assigned to one or more applications Deprecated: Marked for removal, not recommended for new assignments
Application Theme Assignment
Assignment Process
-
Navigate to Application
- Go to Application → Themes tab
- Requires the Business plan or higher
-
Select Theme Type
- Choose from login, email, admin, or account
- View available themes for selected type
- See theme preview and details
-
Assign Theme
- Select theme from available options
- Preview theme assignment
- Apply theme to application
-
Manage Assignments
- View current theme assignments
- Update or remove theme assignments
- Monitor theme performance
Per-Application Theming
Flexible Assignment:
- Assign different themes to different applications
- Mix and match theme types per application
- Override default themes for specific use cases
Assignment Examples:
- Customer Portal: Custom login + account themes
- Admin Dashboard: Admin theme only
- Marketing Site: Login + email themes
- Partner Portal: Complete custom theme set
Theme Conflicts
Email Theme Conflicts:
- Automatically detected when email themes conflict with custom templates
- Warning indicators on affected applications
- Guidance for resolving conflicts
- Option to prioritize themes or templates
Resolution Options:
- Remove conflicting email theme
- Disable custom email templates
- Use theme-specific email templates
- Contact support for advanced resolution
Advanced Features
Advanced Management
Bulk Operations:
- Upload multiple themes simultaneously
- Bulk assign themes to applications
- Mass update theme assignments
- Batch delete unused themes
Analytics and Reporting:
- Theme usage statistics
- Performance metrics
- User engagement analytics
- Theme effectiveness reporting
A/B Testing:
- Test different themes simultaneously
- Compare theme performance
- Gradual rollout capabilities
- Data-driven theme optimization
Integration Capabilities
Multi-Environment Support:
- Development, staging, production themes
- Environment-specific theme management
- Synchronized theme deployment
- Environment promotion workflows
Custom Development:
- Theme development services
- Custom theme creation
- Migration assistance
- Technical consulting
Support and Maintenance
Priority Support:
- Dedicated theme support team
- Technical assistance for complex themes
- Migration and upgrade support
- Performance optimization help
Professional Services:
- Custom theme development
- Theme migration from other systems
- Training and best practices
- Architecture and design consultation
Theme Development
Theme Structure
Standard Keycloak theme structure:
my-theme/
├── login/
│ ├── resources/
│ │ ├── css/
│ │ ├── img/
│ │ └── js/
│ ├── messages/
│ ├── *.ftl templates
│ └── theme.properties
├── email/
│ ├── html/
│ ├── text/
│ └── messages/
├── admin/
│ └── resources/
└── account/
└── resources/
Theme Requirements
File Structure:
- Must follow Keycloak theme conventions
- Include theme.properties configuration
- Contain appropriate template files
- Support required message bundles
Type Detection:
- Login: Requires login/ directory with templates
- Email: Requires email/ directory with templates
- Admin: Requires admin/ directory with resources
- Account: Requires account/ directory with resources
Best Practices:
- Test themes in development environment
- Follow Keycloak security guidelines
- Optimize images and assets
- Document theme customizations
Testing Themes
Development Testing:
- Local Keycloak instance testing
- Multiple browser testing
- Mobile responsiveness testing
- Accessibility compliance testing
Staging Validation:
- Upload to staging environment
- Test with real user flows
- Validate theme assignments
- Check performance impact
Production Deployment:
- Gradual rollout to applications
- Monitor user feedback
- Track performance metrics
- Maintain rollback capability
Troubleshooting
Common Issues
Theme Upload Fails:
- Check file size (max 50MB)
- Verify the archive structure (ZIP or JAR — Keycloakify JARs are accepted)
- Ensure valid Keycloak theme format
- Check for corrupted files
Type Detection Issues:
- Verify theme directory structure
- Check for required template files
- Ensure proper theme.properties configuration
- Review error messages for specifics
Assignment Problems:
- Confirm theme is published
- Check application permissions
- Verify theme type compatibility
- Review conflict warnings
Email Conflicts:
- Check for existing email templates
- Review email theme assignments
- Understand conflict resolution options
- Contact support for complex scenarios
Error Messages
“Theme validation failed”:
- Check Keycloak theme structure
- Verify required files are present
- Review theme.properties configuration
- Check for syntax errors in templates
“Type detection failed”:
- Ensure proper directory structure
- Check for required template files
- Verify theme.properties settings
- Review theme naming conventions
“Assignment not allowed”:
- Verify your workspace is on the Business plan or higher
- Check application permissions
- Confirm theme is published
- Review plan limitations
Getting Help
Support Resources:
- Skycloak support ticket system
- Theme development documentation
- Best practices guides
When Contacting Support:
- Include theme files and error messages
- Provide workspace and application details
- Describe expected vs actual behavior
- Include steps to reproduce issues
Plan Requirements
The Theme Library is included on the Business and Enterprise plans. The basic per-realm Custom Theme upload (on the Branding page) is also gated to Business and above.
Where each feature lands across Skycloak plans:
| Feature | Free Trial | Developer | Launch | Business | Enterprise |
|---|---|---|---|---|---|
| Basic branding (colors, logo, copy) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Per-realm Custom Theme upload | – | – | – | ✓ | ✓ |
| Theme Library (cluster-wide) | – | – | – | ✓ | ✓ |
| ZIP and JAR (Keycloakify) uploads | – | – | – | ✓ | ✓ |
| Multi-theme JARs | – | – | – | ✓ | ✓ |
| Automatic type detection | – | – | – | ✓ | ✓ |
| Per-realm / per-client assignment | – | – | – | ✓ | ✓ |
| Email conflict detection | – | – | – | ✓ | ✓ |
Upgrading
- Open Workspace Settings → Billing and pick Business (or higher) — or contact sales for Enterprise / volume pricing.
- The Theme Library tab unlocks immediately after the plan change.
- Existing custom themes on the Branding page are preserved across plan changes.