Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>CX Composer for LiferayNew to Visual Studio Code? Get it now.
CX Composer for Liferay

CX Composer for Liferay

Client Extension Composer For Liferay

|
4 installs
| (0) | Free
| Sponsor
The developer workbench for Liferay Client Extensions. Scaffolds all 28 CX types with working code. IntelliSense on client-extension.yaml. Full IntelliSense + validation for 309 Liferay batch schemas in batch/*.batch-engine-data.json. Six validator types. Per-extension Blade build. AI-drafted scaffo
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
CX Composer

CX Composer for Liferay

The developer workbench for Liferay Client Extensions — inside VS Code.

Scaffolding for all 28 Liferay Client Extension types. IntelliSense on client-extension.yaml. Full IntelliSense + validation for 309 Liferay batch schemas in batch/*.batch-engine-data.json (registered batch-engine entity types — Object Definitions, User Accounts, Sites, Taxonomies, Commerce, and 300 more). Per-extension build. Free validators for client-extension.yaml, LCP.json, and Dockerfile. AI-drafted scaffolding (Preview).

cxcomposer.dev · Extension reference · hello@cxcomposer.dev


Why CX Composer

Authoring a Liferay Client Extension means writing client-extension.yaml from memory, wiring up assets and Gradle tasks by hand, and hoping the schema you copied from learn.liferay.com is up to date. CX Composer collapses all of that into an editor-first workflow.

  • Scaffold once, ship often — pick a target folder, pick a type, answer the required prompts. You get a full project — manifest, README, assets — that builds on first try.
  • Never write yaml from memory — completions and Markdown hover for every field on every type, driven by a schema pulled straight from Liferay's public YAML reference and cross-checked against 131 real production client-extension.yaml files.
  • Batch imports that don't fail — full schema IntelliSense inside batch/*.batch-engine-data.json for all 309 registered Liferay batch-engine entity types. Extracted from Liferay's public OpenAPI schemas, enriched with 169 hand-verified runtime FK patches. No more "No Country exists with primary key 0" deploy errors.
  • Catch typos before deploy fails — instanceableq when you meant instanceable? Squiggle on the exact line with a did-you-mean suggestion.
  • Per-extension build — blade gw buildClientExtensionZip runs inside the specific client-extension folder. Monorepo-aware, right-click friendly.

Features

Scaffold every type. One wizard.

Multi-step wizard for all 28 Liferay Client Extension types: Custom Element, IFrame, Global CSS, Global JS, Theme CSS, Theme Favicon, Theme Sprite Map, JS Import Map Entry, Editor Config Contributor, FDS Cell Renderer, FDS Filter, Static Content, OAuth Application (Headless Server / User Agent), Instance Settings, Notification Type, Object Action, Object Validation Rule, Object Entry Manager, Workflow Action, CAPTCHA, Batch, Site Initializer, Commerce Payment Integration, Commerce Checkout Step, Commerce Shipping Engine, Commerce Tax Engine, Audiences Custom Attributes.

Each type gets type-appropriate assets and required prompts.

IntelliSense that reads Liferay's docs

Completions and Markdown hover for every field on client-extension.yaml (all 28 types) and on batch/*.batch-engine-data.json (all 309 registered batch-engine entities). Unknown-field detection with did-you-mean suggestions. Missing-required-field diagnostics.

Batch data authoring — all 309 Liferay entities

Right-click any folder that contains a type: batch client-extension.yaml → Add Batch File… wizard → pick from 309 registered entity types (grouped by category: Objects, Users, Sites, Roles, Content, Taxonomies, Workflow, Commerce, and more) → generates a schema-correct batch/<entity>.batch-engine-data.json skeleton with the correct configuration.className, envelope shape, and required fields prepopulated.

Inside the file:

  • className autocomplete — all 309 entities, filterable, described
  • Field-name autocomplete inside items[] — driven by the file's specific className
  • Hover shows each field's type + Liferay's own description from the OpenAPI YAML
  • Diagnostics catch missing required fields — including runtime parent-FK requirements OpenAPI omits (169 hand-verified patches for things like Region.countryId, TaxonomyCategory.parentVocabulary)

Schemas extracted from Liferay's public OpenAPI schemas — the same source Liferay's batch importer validates against at deploy time.

Six validator types

  • client-extension.yaml — full schema, all 28 types
  • LCP.json — Liferay Cloud service configuration
  • Dockerfile — instruction ordering, deprecation warnings
  • Folder-level companion checks — Dockerfile / assemble source / referenced JSON
  • frontend-token-definition.json — walks up from the JSON to its themeCSS block, enforces the full frontendTokenCategories → sets → tokens → mappings schema
  • batch/*.batch-engine-data.json — schema-aware validation for all 309 batch-engine entity types

Auto-runs on save and open. Explicit Validate File command surfaces every diagnostic in the Problems panel plus a summary toast. Validate Whole CX (folder) scans the entire CX folder tree, including every batch data file.

AI-drafted scaffolding (Preview)

Describe what you need in one sentence — Draft with AI picks the CX type, drafts the yaml + handler code, and scaffolds a working project. Explain with AI provides schema-grounded hover explanations on any yaml block. Bring your own API key: Anthropic, OpenAI, Google, Groq, Azure, or run models locally with Ollama — no per-call cost from CX Composer, no data sent to our servers.

Per-extension build

Runs blade gw buildClientExtensionZip inside the specific client-extension folder — not the whole workspace. In monorepos, right-click any client-extension.yaml and the build targets exactly that project.

Right-click integrations

  • Right-click any folder → Scaffold New Project or Add Client Extension Here
  • Right-click a client-extension.yaml → Add Extension, Validate, Build
  • Right-click any file → Validate File (works on all three supported file types)

Activity Bar panel

Dedicated CX Composer view with grouped actions (Project, Build, License) and a live license status row that shows plan, account, start date, and renewal date.


Free vs. Pro

Free (everyone)

  • Validation for LCP.json and Dockerfile
  • Yaml validation for four static-asset CX types: globalJS, globalCSS, themeSpritemap, jsImportMapsEntry
  • Auto-runs on save + open
  • Did-you-mean suggestions for typos and unknown fields
  • Problems-panel integration

Pro — $5 / month · $15 / 6 months · $25 / year

  • Yaml validation for the other 24 CX types (all microservice / backend types, themeCSS, Site Initializer, Batch, Commerce)
  • Batch data IntelliSense + validation for all 309 registered Liferay entity types inside batch/*.batch-engine-data.json
  • Add Batch File wizard — right-click a batch CX folder, pick from 309 entities, get a schema-correct skeleton
  • Folder-level companion checks — Dockerfile / assemble source / referenced JSON
  • Deep frontend-token-definition.json validation
  • Scaffold new projects — all 28 CX types
  • Add Client Extension — append blocks or drop new manifests via folder right-click
  • Per-extension Build — blade gw buildClientExtensionZip
  • IntelliSense on client-extension.yaml — completions + Markdown hover
  • Snippets — YAML / JS / TS / CSS (lrcx-* prefixes)
  • AI-drafted scaffolding (Preview) — Draft with AI, Explain with AI, and BYOK provider setup (Anthropic / OpenAI / Google / Groq / Azure OpenAI / local Ollama). CX Composer never proxies your prompts.

Same feature set on every Pro plan — pick the billing cadence that suits you.

Get a Pro license: store.cxcomposer.dev

Run CX Composer: Activate License and paste your key. Keys are stored securely in VS Code's SecretStorage and re-verified on a 7-day cadence with an additional 7-day offline grace period. One machine per key.


Requirements

  • VS Code 1.90+
  • Blade CLI on your PATH — only if you use the Build command (configurable via cxComposer.blade.path)
  • Liferay Workspace with the workspace Gradle plugin — only if you build

IntelliSense, hover, validation, and scaffolding need nothing else — no additional VS Code extensions required.


Settings

Setting Default Description
cxComposer.blade.path blade Path to the Blade CLI executable.
cxComposer.build.gradleTask buildClientExtensionZip Gradle task run inside the client extension folder to produce its .zip.
cxComposer.license.key "" Legacy setting; prefer Activate License command.

FAQ

Q. What is a Liferay Client Extension? A declarative package defined by a client-extension.yaml manifest. There are 28 supported types — frontend widgets (Custom Element, IFrame), theming (Theme CSS, Global CSS/JS), configuration (OAuth apps, Instance Settings), microservices (Object Action, Workflow Action, Notification Type, CAPTCHA), batch (Batch, Site Initializer), and Liferay Commerce integrations. Extensions are built into a .zip with blade gw buildClientExtensionZip and deployed to a Liferay DXP server.

Q. Does CX Composer replace Blade? No — it complements Blade. CX Composer invokes Blade for build, but adds editor-first IntelliSense, validation, and a wizard-driven scaffold that Blade doesn't provide.

Q. Can I use CX Composer without paying? Yes. LCP.json and Dockerfile validation plus yaml validation for four static-asset CX types (globalJS, globalCSS, themeSpritemap, jsImportMapsEntry) is free forever. Pro extends validation to the other 24 CX types and unlocks scaffolding, IntelliSense, snippets, and per-extension build.

Q. What Liferay DXP versions are supported? CX Composer's schema targets Liferay DXP 2024.Q1+ and Liferay Portal GA100+. The Client Extension format has been stable since DXP 2023.Q4.

Q. Is CX Composer affiliated with Liferay? No. CX Composer is an independent third-party product. See cxcomposer.dev/legal for the trademark notice.

Q. How is my license key stored? In VS Code's built-in SecretStorage. Re-verification happens every 7 days with an additional 7-day offline grace period.


Support

  • Email: hello@cxcomposer.dev — usually a reply within 24h
  • Docs: cxcomposer.dev/extensions
  • Buy: store.cxcomposer.dev

Trademark notice

Liferay® and Liferay DXP® are registered trademarks of Liferay, Inc. CX Composer for Liferay is an independent third-party product and is not affiliated with, endorsed by, or sponsored by Liferay, Inc.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft