Hi,
We’re migrating a custom OSGi MVC Portlet from Liferay DXP 2024.Q1 to 2026.Q1 and we need some guidance on the JS migration path.
Our module is a standard MVC Portlet that uses propsTransformer in Clay taglibs:
<clay:management-toolbar
managementToolbarDisplayContext="${toolbar}"
propsTransformer="js/ManagementToolbarPropsTransformer"
/>
The transformer JS files import from Liferay modules:
import { openSelectionModal, getCheckedCheckboxes } from 'frontend-js-web';
export default function propsTransformer({ portletNamespace, ...props }) {
return {
...props,
onActionButtonClick: (event, {item}) => { ... }
};
}
The build currently uses liferay-npm-bundler + Babel to produce AMD modules.
Knowing that both liferay-npm-bundler and the AMD loader are deprecated (LPD-48372), what would be the recommended migration steps for this kind of module?
Specifically:
- Build tooling — What replaces
liferay-npm-bundler? (esbuild, webpack, vite…?) propsTransformersyntax — How should it be used in 2026.Q1 for a custom external module? We’ve seen the{ClassName} from module-namesyntax in Liferay’s own source code (e.g.trash-web) but we’re not sure if and how it applies to custom modules.frontend-js-webimports — How should imports from Liferay-provided modules be handled in the new setup?
Thanks in advance!
Javier, would you be able to share with me the project module? I have the frontend team ready to help with this, but they'd like to look at what you have for a reference...
– dnebing