@aemvite - Migrate an AEM ui.frontend from Webpack to Vite
A from-scratch guide to @aemvite, an open-source npm toolchain that replaces webpack, Babel, PostCSS, ESLint, and aem-clientlib-generator in an AEM Maven archetype ui.frontend with Vite, esbuild, and Sass - with a byte-identical clientlib output guarantee.
@ChildResource
The @ChildResource annotation is a Sling Models injector that maps child JCR nodes to Java objects. It is the
@ExternalizedValueMapValue
@ExternalizedValueMapValue is a custom Sling Models injector annotation that reads a JCR property (like
ACLs and Permissions
AEM's permission model is built on Jackrabbit Oak's access control layer. Every read,
Admin API (helix5)
Full reference for the helix5 Admin API at admin.hlx.page - authentication, endpoint groups (status, preview, live, code, index, cache, log, profile, sitemap, snapshot, job), webhooks, and common workflows with curl and JS examples.
Adobe I/O App Builder
Adobe I/O App Builder (formerly Project Firefly) is a serverless extensibility framework
AEM as a Cloud Service
AEM as a Cloud Service (AEMaaCS) is Adobe's cloud-native, fully managed version of
AEM Glossary
Plain-English definitions of the core AEM, Sling, OSGi, and Oak terms used throughout this documentation, with links to the deep-dive pages.
AEM Recipes
Task-oriented how-to recipes that stitch the AEM deep-dive pages into end-to-end workflows - build a component, deliver headless content, make a query fast, publish, secure, and debug.
AEMaaCS vs AEM 6.5
A consolidated comparison of AEM as a Cloud Service and AEM 6.5 - deployment, repository mutability, replication vs content distribution, asset processing, indexing, dispatcher, and the development workflow differences that actually affect your code.
Architecture
Adobe Experience Manager is built on three open-source foundations:
Architecture
How content flows from authoring through the Content Bus and Delivery Pipeline to the CDN, including URL tiers and push-invalidation.
Assets & DAM
The Digital Asset Management repository - uploading and organizing assets, metadata schemas and tagging, renditions and processing profiles, Smart Tags, Dynamic Media, and programmatic asset access.
Authoring models
Document-based authoring (Word/Docs) vs Universal Editor authoring on AEM. How they compare and how to choose.
Best practices, hybrid AEM, pitfalls
Hybrid routing patterns mixing EDS with traditional AEM Publish, common pitfalls and fixes, licensing, and external resources.
Blocks (the component model)
How blocks work in EDS - the decoration lifecycle, content keys and rows, variations, options, the block library, and common authoring patterns.
Building Pages
Using Core Components, the responsive grid, navigation, header and footer, building a homepage and article page, and page properties.
Client Libraries
CSS and JS management in AEM - clientlib structure, categories, dependencies, embedding, proxy serving, and the ui.frontend module.
Client Libraries
Client libraries (clientlibs) are AEM's mechanism for managing CSS and JavaScript delivery. They provide
Cloud Sandbox Setup
This post describes how to setup a Cloud Sandbox development environment.
Commerce Storefront
EDS Commerce Storefront - catalog, PLP, PDP, cart, and checkout blocks running on top of Adobe Commerce or third-party backends.
Component Dialogs
Touch UI dialogs with Granite/Coral - field types, tabs, multifields, image upload, validation, and conditional visibility.
Components Overview
An AEM component is a self-contained building block that authors drag onto a page, configure via a dialog,
Content Fragments
Content Fragments are channel-neutral, structured content in AEM. Unlike page components that mix
Content Fragments & GraphQL
Content Fragment Models, creating and managing fragments, the AEM GraphQL API, persisted queries, and headless content delivery.
Context-Aware Configuration
Sling Context-Aware Configuration (CA Config) lets you store configuration values
Coral UI
Coral UI is Adobe's web component library that powers the entire AEM Touch UI - dialogs, the
Core Components
1. Merging Dialogs
Custom Component Guide
This guide walks through creating a custom AEM component from start to finish. Every artifact is covered:
Custom Dialog Widgets
AEM's Granite UI provides a rich set of dialog fields, but multi-site and multi-tenant projects often
Customizing
How to extend EDS at the project level - scripts.js, aem.js decoration overrides, head.html, fonts, paths.yaml, response headers, and shared plugins.
Decoration Tag (cq:htmlTag)
How AEM wraps components in a decoration element, and how to control its tag name and CSS classes with cq:htmlTag.
Deployment
Deploying AEM projects varies significantly depending on the hosting model. AEM as a Cloud Service (AEMaaCS) relies on Cloud Manager pipelines with strict immutability rules. Adobe Managed Services (AMS) provides a middle ground with managed infrastructure but more flexibility. On-premises installations give full control but require manual orchestration and operational discipline.
Deployment & Cloud Manager
Git repo structure, Cloud Manager pipelines, environments, Rapid Development Environments, content transfer, and going to production.
Development workflow
Project bootstrap, project structure, aem-cli, fstab.yaml, paths.yaml, and the GitHub-first deployment flow.
Dialog Validation
AEM's Touch UI dialog framework includes a client-side validation system that lets you enforce business
Dispatcher & Caching
Dispatcher architecture, cache rules, filters, rewrites, vanity URLs, cache invalidation, and local Dispatcher SDK testing.
Dispatcher Configuration
Introduction
E-Mail Service in AEM
AEM provides a built-in e-mail infrastructure based on the Day CQ Mail Service
Event Listeners and Handlers
AEM provides two event systems for reacting to changes in the repository and the platform. Understanding
Experience Fragments
Experience Fragments (XFs) are reusable, self-contained content experiences that can be
Experimentation
Built-in A/B and multivariate testing, audiences, and edge-side resolution - no third-party tool required.
Extending the Responsive Grid
AEM's responsive grid (also called Layout Container or the modern replacement for the classic
Filters
Introduction
Forms
EDS for Forms - Adaptive Forms blocks, document-based form authoring, submission handling, and integration patterns.
Groovy Console
The AEM Groovy Console provides a web-based interface for running
Headless GraphQL
AEM provides a built-in GraphQL API that exposes Content Fragments as a
HTL Templates
The HTML Template Language in depth - expressions, block statements, global objects, the Use API, and best practices.
HTL Templates (Sightly)
HTL (HTML Template Language), formerly known as Sightly, is AEM's server-side template language. It is the
i18n and Translation
AEM distinguishes between two types of multilingual content:
Introduction & Setup
What AEM is, the technology stack (Sling, JCR, OSGi), AEMaaCS vs on-premise, installing the SDK, generating a project with the Maven archetype, and a project structure walkthrough.
Java Best Practices in AEM
This page collects practical Java guidelines for AEM projects. The goal is consistent, safe code that is easy to test and maintain.
JCR Node Operations
Introduction
Local Development Setup
This post describes the steps and software requirements you need to create and set up a working local AEM instance.
Modify and Query the JCR
JCR Queries
Multi-Site Manager (MSM)
The Multi-Site Manager (MSM) lets you maintain multiple websites that share common content. You create
Multi-Site Manager & i18n
Blueprints, Live Copies, rollout configurations, language copies, the translation framework, and i18n dictionaries.
Multi-Tenancy UI Frontend Themes
When an AEM project serves multiple brands, sites, or tenants from a single codebase, each tenant typically
Omnisearch Selection Bar Actions
The AEM Assets omnisearch (/aem/search.html) shows a selection bar when one or more assets are
OSGi Configuration
OSGi configuration is the primary mechanism for controlling the behavior of AEM services at runtime.
OSGi Fundamentals
OSGi bundles, services, the component lifecycle, the Web Console, and configuration management in AEM.
Overlays
Overlays (powered by the Sling Resource Merger) are AEM's mechanism for customising or extending
Overview
What Adobe Edge Delivery Services (EDS) is, how the products fit together, and how it compares to traditional AEM Publish.
Performance
How EDS achieves Lighthouse 100 - LCP optimisation, three-phase loading, and the automatic optimisations the runtime performs.
Performance
Performance in AEM spans multiple layers: content queries against the Oak repository, server-side rendering through Sling Models and HTL, caching at the Dispatcher level, and frontend delivery to the browser. Optimising only one layer while ignoring the others will leave bottlenecks on the table. This page walks through each layer with concrete techniques, code examples, and the most common pitfalls.
Practice Projects
Six hands-on projects - from a simple component to a production Dispatcher config - to reinforce everything covered in the guide.
Publishing & Replication
How content moves from author to publish - activation and deactivation, the replication queue, replication agents vs Sling Content Distribution, publishing references and assets, and troubleshooting stuck queues.
Render Conditions
Render Conditions control whether a Granite UI element (dialog field, tab, toolbar button, or any
Replication and Activation
Replication is the mechanism AEM uses to move content from the author environment to one or more publish instances. When an author clicks "Publish" (or "Activate") in the Sites console, the underlying replication framework serializes the affected content, transports it over HTTP/HTTPS, and deserializes it on the target publish instance. Understanding this pipeline is essential for debugging publish delays, configuring Dispatcher cache invalidation, and building custom publishing workflows.
Search & Indexing
Querying content with QueryBuilder and JCR-SQL2, why unindexed queries are dangerous, and how to define and deploy the Oak indexes that keep queries fast.
Search & Indexing
Every non-trivial AEM feature - navigation, lists, search results, dynamic teasers, content audits --
Security & Permissions
Users and groups, ACLs and permission inheritance, privileges, closed user groups, service users and repoinit, and hardening the publish tier.
Security Basics
Security in AEM is a multi-layered concern that spans user management, access control, request filtering,
Servlets
Sling Servlets are Java classes that handle HTTP requests in AEM. They are the standard way to build
Servlets & Request Handling
Writing Sling servlets - resource-type vs path binding, selectors and extensions, safe vs all methods, reading request input safely, and returning JSON to the client.
Sidekick & Sidekick Library
The Sidekick browser extension for authors, and the Sidekick Library plugin model that lets you ship custom block-library tools.
Simplified Index Management
A hands-on guide to diff-based custom Oak index management on AEM as a Cloud Service - define one diff.json, let the platform merge it with the out-of-the-box index, and version it automatically.
Sling Jobs and Schedulers
AEM's background processing is built on two complementary mechanisms:
Sling Model Annotations Reference
This page is a comprehensive reference for all commonly used Sling Model annotations. Each annotation is explained
Sling Models
Injecting JCR content into Java models - annotations, adaptables, child resources, OSGi services, exporters, and best practices.
Sling Models and Services
Sling Models are annotation-driven Java classes that automatically map AEM content (JCR properties,
SPA Editor
The AEM SPA Editor enables authors to visually edit Single Page Applications (React or
Tags and Taxonomies
AEM's tagging framework provides a structured way to classify and organise content.
Templates & Policies
Editable templates, template types, structure vs initial content, component policies, allowed components, and page structure.
Templates and Policies
Editable Templates are AEM's modern template system. They let template authors define
Testing
Testing an AEM project normally combines three layers: unit tests against Sling Models and
Testing & Debugging
Unit testing Sling Models with AemContext and wcm.io mocks, integration and UI tests, code coverage, and the debugging tools - logs, CRXDE, request progress, and remote debugging - that save hours.
The JCR & Sling
The Java Content Repository, node types and properties, resource resolution, CRXDE Lite, and how Apache Sling maps URLs to content.
Touch UI (Author UI)
Being called TouchUI previously, the official name for the 'modern' / post classic Ui is 'AuthorUI'.️
Touch UI Component Dialogs
The following chapters each present a Coral XML snippet which can be copied into any /components/mycomponent/cqdialog/.content.xml file.
Universal Editor
Wiring EDS blocks into the Universal Editor with component-definition.json, component-models.json, component-filters.json, and data-aue-* instrumentation.
Workflows
AEM Workflows are automated, multi-step processes that model real-world business operations inside Adobe
Workflows
Automating content operations with the Granite Workflow engine - workflow models, launchers, process and participant steps, starting workflows, and when to use Sling Jobs instead.
Your First Component
Component anatomy in AEM - the cq:Component node, HTL template, dialog, and Sling Model. Creating, deploying, and using a simple component.