AEM UI Best Practices

Debugging UI issues

  • AEM Chrome extension  - This browser extension can be leveraged in non-production environments to debug why the UI is slow or broken.  The extension allows you to view the sling request processing (filters executed, which servlet, error handlers, components, sling resources, etc). and any JCR queries that are executed during the page load.
  • Debugging client-side issues in the Touch UI - Various steps in debugging client-side issues.
  • Using AEM Developer Mode to debug component issues - Useful when debugging components during development or in non-production environments.

Clientlibs issues

What are clientlibs in AEM - Modern websites rely heavily on client-side processing driven by complex JavaScript and CSS code. Organizing and optimizing the serving of this code can be a complicated issue.

To help deal with this issue, AEM provides Client-side Library Folders, which allow you to store your client-side code in the repository, organize it into categories, and define when and how each category of code is to be served to the client. The client-side library system then takes care of producing the correct links in your final webpage to load the correct code.


One of the embedded clientlibs is not loading:

 Use the following procedure to see the names of all the embedded files:

  • In the address box of your web browser, append the following text to the URL of your HTML:


  • When the page loads, view the page source.
  • Click the link that is provided as the href for the link element to open the file and view the source code.


Few clientlibs are not getting minified:

  • Check if minify option is enabled at AEM HTML Library Manager.
  • If this is still an issue, set up a debug logger to check for any syntax errors. Please follow the steps below :
    • Go to http://<host>:<port>/system/console/slinglog
    • Click on "add new logger"
    • Set the Log Level to DEBUG
    • Change the log Filename to "clientlibs.log"
    • Add the following class in the "Logger" field:
    • Click on Save.
  • If you see errors similar to below, this means there are some syntax errors in the clientlibs file. 


27.06.2019 11:36:01.450 *ERROR* [0:0:0:0:0:0:0:1 [1561649761160] POST /libs/granite/ui/content/dumplibs.rebuild.html HTTP/1.1] com.adobe.granite.ui.clientlibs.processor.gcc.impl.YUIScriptProcessor Processed /apps/acs-commons/components/dam/custom-component-activator/clientlib/activator.js. 1 error(s), 0 warning(s)
27.06.2019 11:36:01.450 *DEBUG* [0:0:0:0:0:0:0:1 [1561649761160] POST /libs/granite/ui/content/dumplibs.rebuild.html HTTP/1.1] com.adobe.granite.ui.clientlibs.impl.HtmlLibraryBuilderImpl processing /apps/acs-commons/components/dam/custom-component-activator/clientlib with processor yui for mode min rejected.
  • You can also try changing the Script processor from YUI to GCC as there might be some newer js files which can be only processed by newer processor.

RTE Issues

Always install latest SP/CFP before testing any RTE functionality.

RTE Removing attributes:

  • If some attributes are getting removed from the RTE after saving, this might be due to the XSS security framework which was introduced to prevent cross-site scripting.
  • You would see messages similar to below in the log files:
25.02.2019 18:29:31.815 *INFO* [ [1551119371795] GET /content/support/en_US/security.html HTTP/1.1] AntiSamy warning: The a tag contained an attribute that we could not process. The rel attribute had a value of "noopener noreferrer". This value could not be accepted for security reasons. We have chosen to remove this attribute from the tag and leave everything else in place so that we could process the input.
  • In this case, You can overlay the "/libs/cq/xssprotection/config.xml" and update the security rules as per your business needs but that will expose AEM instance to cross-site scripting and not recommended by Adobe