Capability

Development and Tooling

Liferay offers a comprehensive toolkit to extend or customize your digital experience. Build applications quickly with low-code/no-code features like Objects, or leverage developer tools like Liferay Workspace and Blade CLI for further customizations.

For users on PaaS or running Self-Hosted, Liferay also offers tools deploying customizations.

Category
Category
Contributing to Liferay Development
Contributing to Liferay Development The first thing to do in learning to fix bugs or contributing a feature is to become familiar with how to build the system. The Liferay Portal build system now...
Extending Unmodifiable System Objects
Extending Unmodifiable System Objects Liferay 7.4 U86+/GA86+ With Liferay Objects, you can extend supported system services. These services are integrated with the Objects framework as...
Using Object Data with React Charts
Using Object Data with React Charts Here you'll use Objects, Headless APIs, and custom element remote applications to create a dynamic chart for data dashboards. First, you'll set up a new DXP...
Remote Applications with Headless APIs
Remote Applications with Headless APIs Available 7.4+ After creating and publishing objects, headless REST APIs are automatically generated. Here you'll see how to integrate these endpoints to...
Creating Objects
Creating Objects Liferay DXP 2023.Q4+/Portal GA102+ Liferay Objects provides development capabilities in the Liferay UI. Using Objects, you can build fully integrated Liferay applications without...
Using a CAPTCHA Client Extension
Using a CAPTCHA Client Extension Liferay DXP 2025.Q3+ CAPTCHA challenges are used on websites to verify a human user is accessing it, and not a bot or malicious code attacking the site. Liferay...
Understanding Object Integrations
Understanding Object Integrations Published custom objects are integrated with Liferay's core frameworks, so you can leverage Liferay's features to build unified experiences across the platform....
Enabling Glowroot on PaaS
Enabling Glowroot on PaaS Liferay DXP 2023.Q4+/Portal GA100+ Glowroot is included with Liferay in the /opt/liferay/glowroot folder. If you're running Liferay in a clustered environment, enable...
Integrating Microservices
Integrating Microservices Liferay Self-Hosted Liferay SaaS Liferay PaaS Liferay 7.4 You can define microservice client extensions to run your own code in response to events in your Liferay...
Configuring service.properties
Configuring service.properties Service Builder generates a service.properties file in your *-service module's src/main/resources folder. Liferay uses this file's properties to alter your service's...
Service Builder
Service Builder An application without reliable business logic or persistence isn't much of an application at all. Unfortunately, writing your own persistence code often takes a great deal of time....
Configuring Liferay Workspace
Configuring Liferay Workspace Liferay Workspace is simple to use, and you can learn the basics by starting at the beginning. If you're happily creating projects, deploying code, or using a Docker...
Attachment Fields
Attachment Fields Attachment fields are for uploading files to your instance's Document Library. When uploaded, the file is linked to the entry's attachment field. Each field can only be linked to...
Liferay Workspace
Liferay Workspace Liferay Workspace is a set of folders and Gradle scripts that represents the Liferay-opinionated way of handling a full development life cycle: Creating projects Building...
Liferay Workspace Configuration Reference
Liferay Workspace Configuration Reference Liferay Workspace has many options you can set. Here's a handy command and properties reference. Running Liferay DXP locally my-project $ blade gw...
7.3 Breaking Changes
7.3 Breaking Changes This document presents a chronological list of changes that break existing functionality, APIs, or contracts with third party Liferay developers or users. We try our best to...
Creating Form Fragments
Creating Form Fragments Liferay 7.4 U45+/GA45+ The form components fragments are for building your object's forms in a content page. If Liferay's form fragments don't satisfy your use case, create...
Configuring a Liferay Docker Container
Configuring a Liferay Docker Container Creating and deploying containers is an important part of the modern developer workflow. Liferay Workspace makes it easy to use Docker containers both for...
Localizing Object Definitions and Entries
Localizing Object Definitions and Entries Liferay DXP 2023.Q3+/Portal GA92+ Liferay objects are integrated with the localization framework, so you can add translations for definition labels, and...
Scheduling and Subscription
Scheduling and Subscription [Beta Feature](../../../security-and-administration/administration/configuring-liferay/feature-flags.md#beta-feature-flags) (LPD-17564) Liferay DXP 2025.Q4+/Portal...
Assignee Fields
Assignee Fields Liferay DXP 2025.Q4+/Portal 2026.Q1+ Assignee fields are for selecting existing users or roles in the object entry. Assigned users can edit the entry with no manual permission...
Managing Object Entries with Data Sets
Managing Object Entries with Data Sets Data sets offer a flexible way to display object entries. When your advanced use case outgrows collections, data sets fill the gap. For example, Collections...
Client Extensions UI Reference
Client Extensions UI Reference Liferay's widget client extensions (custom element and iframe) register applications with Liferay, adding them as widgets to site pages. Additionally, you can style...
Fragment Specific Tags and Attributes Reference
Fragment Specific Tags and Attributes Reference Along with standard HTML, CSS, and JavaScript, you can use Liferay-specific tags and attributes to define editable sections, embed widgets, and more....
Micro Frontends
Micro Frontends Micro frontends extend the concept of microservices to the frontend side of development. You can build a fully-featured and powerful browser application that uses a microservice...
Using Routes with Custom Elements
Using Routes with Custom Elements Liferay 7.4+ Custom element client extensions use Liferay's frontend infrastructure to register external applications with the Liferay platform and render them as...
Portlet 3.0 API Opt In
Portlet 3.0 API Opt In A portlet must specify version 3.0 to opt in to the Portlet 3.0 API. The 3.0 Portlet API version can be specified in the following ways. Standard Portlet @PortletApplication...
Data Set Sorting
Data Set Sorting Liferay DXP 2024.Q1/Portal GA112 Currently, this feature is behind a release feature flag (LPS-164563). While managing data sets, you can set default sorting rules for Data Sets...
Testcases
Testcases A testcase file in Poshi is a collection of test scenarios grouped in blocks of code called test blocks. The three main test blocks: setUp, test, and tearDown, are made up of multiple...
Developing Page Fragments
Developing Page Fragments Page fragments are the building blocks for content pages. They're made from the three components of web pages: CSS, HTML, and JavaScript. To create a page you combine...
Understanding Bundler Configuration Presets
Understanding Bundler Configuration Presets The Liferay npm bundler is deprecated of Liferay 2024.Q4/Portal GA129, and it's planned for future removal. The liferay-npm-bundler comes with a...
Using a Frontend Data Set Cell Renderer Client Extension
Using a Frontend Data Set Cell Renderer Client Extension Liferay 7.4+ You can use Frontend Data Set (FDS) cell renderer client extensions to customize the display for your data set. Use this type...
Liferay CLI Tool
Liferay CLI Tool The Liferay CLI tool is deprecated as of Liferay 2024.Q4/Portal GA129, and it's planned for future removal. The Liferay CLI tool makes it easy to create Angular, JavaScript,...
Auto-Deploying Fragments
Auto-Deploying Fragments Liferay Portal 7.3 GA1+ or Liferay DXP 7.3+ If you're developing page fragments with your own tooling, you can deploy them by packaging them in ZIP files for importing via...
Custom Element YAML Configuration Reference
Custom Element YAML Configuration Reference You can define a custom element client extension with a client-extension.yaml file. Usage Details This client-extension.yaml file defines a custom...
Creating A Path File
Creating A Path File Test Scenario Write your first path file using the test scenario below: You would like to test that your name does not appear on any learn.liferay.com article. The steps you...
Using a JSP and MVC Portlet
Using a JSP and MVC Portlet An easy way to start developing a web application is to add markup to a JSP file and render it using a portlet Java class. The W3E7 example application demonstrates...
Using an OSGi Service
Using an OSGi Service Liferay APIs are readily available as OSGi services. You can access a service by creating a field of that service type and annotating the field with @Reference, like this: ...
Liferay Faces Version Scheme
Liferay Faces Version Scheme In this article, you'll learn which Liferay Faces artifacts should be used with your portlet and explore the Liferay Faces versioning scheme by discovering what each...
Exported Third Party Packages
Exported Third Party Packages Liferay provides over one-hundred third party Java packages at run time. The com.liferay.portal.bootstrap module exports the packages by specifying individual packages...