<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay</title>
  <link rel="self" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856" />
  <subtitle>Liferay</subtitle>
  <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856</id>
  <updated>2026-09-25T07:30:07Z</updated>
  <dc:date>2026-09-25T07:30:07Z</dc:date>
  <entry>
    <title>Liferay Design Libraries</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126824933" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126824933</id>
    <updated>2026-09-25T04:57:05Z</updated>
    <published>2026-09-25T04:02:00Z</published>
    <summary type="html">Liferay Design Libraries bring long-awaited reuse to the presentation layer by letting teams centrally manage style books and fragments and share them across multiple sites. Instead of maintaining</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-09-25T04:02:00Z</dc:date>
  </entry>
  <entry>
    <title>Cookie Consent Management</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126820423" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126820423</id>
    <updated>2026-09-23T20:27:42Z</updated>
    <published>2026-09-23T17:03:00Z</published>
    <summary type="html">Cookie consent in Liferay involves more than showing a banner. Developers also need to categorize cookies correctly, prevent third-party content from loading before consent, document custom cookies,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-09-23T17:03:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay Workspace and Claude Code</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126795832" />
    <author>
      <name>Victor Ware</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126795832</id>
    <updated>2026-09-15T17:54:54Z</updated>
    <published>2026-09-15T17:13:00Z</published>
    <summary type="html">What makes Liferay flexible for developers also make it ready for AI agents, now empowered by our AI developer skills pack. This is a tutorial for how to use it with Claude Code.</summary>
    <dc:creator>Victor Ware</dc:creator>
    <dc:date>2026-09-15T17:13:00Z</dc:date>
  </entry>
  <entry>
    <title>I Asked AI to Add MFA to Liferay... Here's What Happened</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126783517" />
    <author>
      <name>Eric D</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126783517</id>
    <updated>2026-09-21T01:00:18Z</updated>
    <published>2026-09-12T08:22:00Z</published>
    <summary type="html">Why this article? I try to evaluate how easy vibe coding is with Liferay. I ask ChatGPT and/or Claude to generate a Liferay module from scratch with a single sentence. First, I use my mobile and the</summary>
    <dc:creator>Eric D</dc:creator>
    <dc:date>2026-09-12T08:22:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay DXP 2026.Q3 - Release Webinar - Replay</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126723763" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126723763</id>
    <updated>2026-09-16T03:51:30Z</updated>
    <published>2026-09-02T00:58:00Z</published>
    <summary type="html">The recording of the 2026.Q3 Release Webinar is available for replay. Includes details on key new features in the Q3 release like Design Libraries, CNE AWS Ready and Kubernetes Ready, as well as key</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-09-02T00:58:00Z</dc:date>
  </entry>
  <entry>
    <title>Enabling ModSecurity in Liferay PaaS</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126640680" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126640680</id>
    <updated>2026-08-18T19:21:59Z</updated>
    <published>2026-08-18T18:45:00Z</published>
    <summary type="html">This post supplements Liferay’s ModSecurity documentation with practical lessons learned from a real PaaS implementation. It explains how to route ModSecurity logs through /dev/stdout, reduce</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-08-18T18:45:00Z</dc:date>
  </entry>
  <entry>
    <title>When a CVE Isn't a Liferay Vulnerability</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126625355" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126625355</id>
    <updated>2026-08-17T16:56:54Z</updated>
    <published>2026-08-16T19:22:00Z</published>
    <summary type="html">A security scanner can identify third-party libraries in Liferay DXP that are associated with known CVEs, but that does not automatically mean Liferay is vulnerable. This post explains how Liferay</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-08-16T19:22:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay DXP 2026.Q3 Release Webinar</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126531996" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126531996</id>
    <updated>2026-09-02T00:57:46Z</updated>
    <published>2026-08-11T05:32:00Z</published>
    <summary type="html">Hi everyone, I'm super excited to announce that the Release Webinar for the 2026.Q3 release of Liferay DXP is coming in just a couple of weeks - on Wednesday, August 26th. Register now to guarantee</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-08-11T05:32:00Z</dc:date>
  </entry>
  <entry>
    <title>OIDC SLO in Liferay DXP</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126438487" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126438487</id>
    <updated>2026-08-05T17:04:04Z</updated>
    <published>2026-08-05T16:26:00Z</published>
    <summary type="html">OpenID Connect Single Logout is often misunderstood in the context of Liferay DXP, with many assuming it isn't supported. Beginning with Liferay DXP 2026.Q1, that's no longer the case. This article</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-08-05T16:26:00Z</dc:date>
  </entry>
  <entry>
    <title>Bringing Liferay to Cross-platform Development</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126437387" />
    <author>
      <name>Nestor Ledon</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126437387</id>
    <updated>2026-08-05T14:11:00Z</updated>
    <published>2026-08-05T13:37:00Z</published>
    <summary type="html">Liferay already provides a mature platform for content, permissions, users, sites, workflows, and headless APIs. What has been missing is a practical way to use that platform as the backend for a</summary>
    <dc:creator>Nestor Ledon</dc:creator>
    <dc:date>2026-08-05T13:37:00Z</dc:date>
  </entry>
  <entry>
    <title>No More Rebuild-and-Redeploy: Instant Hot Reload for Liferay React Client Extensions</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126396924" />
    <author>
      <name>Ankit Hadiyal</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126396924</id>
    <updated>2026-08-02T23:42:05Z</updated>
    <published>2026-08-01T10:10:00Z</published>
    <summary type="html">The Rebuild-and-Redeploy Loop Every Client Extension Developer Knows If you've built a React-based client extension (CX) for Liferay DXP, you know this rhythm well. You tweak a component - adjust some</summary>
    <dc:creator>Ankit Hadiyal</dc:creator>
    <dc:date>2026-08-01T10:10:00Z</dc:date>
  </entry>
  <entry>
    <title>Service Builder Compatibility Matrix</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126389560" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126389560</id>
    <updated>2026-07-31T18:51:50Z</updated>
    <published>2026-07-30T17:54:00Z</published>
    <summary type="html">Service Builder generates code based on the Liferay APIs it expects to target, so the newest Service Builder plugin is not always the right fit for every Liferay DXP version. This article explains how</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-30T17:54:00Z</dc:date>
  </entry>
  <entry>
    <title>Batch Imports Audit</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126385336" />
    <author>
      <name>Vitalii Koshelenko</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126385336</id>
    <updated>2026-07-29T12:05:29Z</updated>
    <published>2026-07-29T09:07:00Z</published>
    <summary type="html">Introduction Liferay's Batch Engine is the workhorse behind bulk data movement into Liferay. Instead of creating records one REST call at a time, you POST (or PUT, or DELETE) an array of items to a</summary>
    <dc:creator>Vitalii Koshelenko</dc:creator>
    <dc:date>2026-07-29T09:07:00Z</dc:date>
  </entry>
  <entry>
    <title>Installing Liferay DXP 2026.Q1 on Red Hat JBoss Web Server 6.2.3</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126381472" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126381472</id>
    <updated>2026-07-30T16:59:19Z</updated>
    <published>2026-07-28T19:28:00Z</published>
    <summary type="html">This post walks through installing Liferay DXP 2026.Q1 on Red Hat JBoss Web Server 6.2.3, using RHEL 10 as the reference environment. It focuses on the details that are easy to miss when adapting</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-28T19:28:00Z</dc:date>
  </entry>
  <entry>
    <title>Beyond the Prototype: What’s New in the Liferay Fragments Repository</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126355026" />
    <author>
      <name>Peter Richards</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126355026</id>
    <updated>2026-07-23T13:49:00Z</updated>
    <published>2026-07-23T07:12:00Z</published>
    <summary type="html">The Evolution of the Library When I wrote about scaling Liferay fragments with AI and automation earlier this year, the repository was already transitioning from a experimental lab into a structured</summary>
    <dc:creator>Peter Richards</dc:creator>
    <dc:date>2026-07-23T07:12:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay AI Hub Practical Recommendations: Agents, Instructions, Prompts &amp; Guardrails</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126354004" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126354004</id>
    <updated>2026-07-22T16:23:41Z</updated>
    <published>2026-07-22T15:14:00Z</published>
    <summary type="html">Building a useful chatbot with Liferay AI Hub involves more than wiring a model into a page. This post walks through the practical design decisions that matter when working with AI Hub agents,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-22T15:14:00Z</dc:date>
  </entry>
  <entry>
    <title>KDXP: One Kotlin Codebase for Liferay Apps Everywhere</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126323612" />
    <author>
      <name>Nestor Ledon</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126323612</id>
    <updated>2026-07-16T01:28:45Z</updated>
    <published>2026-07-15T16:58:00Z</published>
    <summary type="html">Liferay already provides an impressive enterprise backend: authentication, users, roles, sites, documents, content, custom Objects, permissions, workflows, and headless APIs. What it has lacked is a</summary>
    <dc:creator>Nestor Ledon</dc:creator>
    <dc:date>2026-07-15T16:58:00Z</dc:date>
  </entry>
  <entry>
    <title>No More Guesswork: Deploy Your Liferay OSGi Modules in the Right Order, Automatically</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126295475" />
    <author>
      <name>Ankit Hadiyal</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126295475</id>
    <updated>2026-07-06T22:06:22Z</updated>
    <published>2026-07-06T17:40:00Z</published>
    <summary type="html">A Problem Every Liferay Developer Has Faced If you have worked on a Liferay DXP project with more than a few custom modules, this scene will feel familiar. You deploy all your modules together. Most</summary>
    <dc:creator>Ankit Hadiyal</dc:creator>
    <dc:date>2026-07-06T17:40:00Z</dc:date>
  </entry>
  <entry>
    <title>Beyond GET: Could HTTP QUERY (RFC 10008) Improve Liferay Headless APIs?</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126213193" />
    <author>
      <name>Laxit Khanpara</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126213193</id>
    <updated>2026-07-06T22:16:39Z</updated>
    <published>2026-07-03T09:27:00Z</published>
    <summary type="html">Introduction One of the biggest strengths of Liferay DXP is its Headless API ecosystem. Whether we're working with Custom Objects, Web Content, Documents, Commerce, or custom REST Builder APIs,</summary>
    <dc:creator>Laxit Khanpara</dc:creator>
    <dc:date>2026-07-03T09:27:00Z</dc:date>
  </entry>
  <entry>
    <title>Smooth Sailing: Migrating Liferay DXP from 7.2 to 7.4 (2026 Q1)</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126136896" />
    <author>
      <name>Madhukar Kumar</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126136896</id>
    <updated>2026-06-20T22:26:10Z</updated>
    <published>2026-06-20T12:47:00Z</published>
    <summary type="html">If you are planning this upgrade, here is your definitive, step-by-step technical playbook to take your local environment, database, and codebase from 7.2 to 7.4. Phase 1: Environment &amp; Local 7.2</summary>
    <dc:creator>Madhukar Kumar</dc:creator>
    <dc:date>2026-06-20T12:47:00Z</dc:date>
  </entry>
</feed>
