Your issue stems from three Winter '24 changes to LWC quick action registration, meta file requirements, and Lightning Message Service usage. Here’s the complete fix:
LWC Meta File Targets:
Winter '24 requires explicit actionType and objectApiName in your targetConfig. Your current meta file is missing both critical attributes. Update your meta XML to:
<targets>
<target>lightning__RecordAction</target>
</targets>
<targetConfigs>
<targetConfig targets="lightning__RecordAction">
<actionType>ScreenAction</actionType>
<objectApiName>Opportunity</objectApiName>
</targetConfig>
</targetConfigs>
The actionType=“ScreenAction” tells the platform this quick action opens a modal screen. The objectApiName=“Opportunity” provides the record context. Without these, Winter '24 silently fails to instantiate your component.
Quick Action Registration:
Verify your quick action metadata (Setup > Object Manager > Opportunity > Buttons, Links, and Actions). The quick action must specify your LWC component name exactly as defined in your meta file. If you renamed the component during the upgrade, update the quick action to reference the new name. Also ensure the action is added to the Opportunity page layout (Lightning Record Page > Quick Actions section). Winter '24 doesn’t fall back to org-wide quick actions like previous releases did.
Lightning Message Service Usage:
Winter '24 introduced scoped message contexts for LMS. If your component publishes messages to refresh the parent Opportunity page, you need to import and use APPLICATION_SCOPE explicitly:
import { publish, MessageContext, APPLICATION_SCOPE } from 'lightning/messageService';
import REFRESH_CHANNEL from '@salesforce/messageChannel/OpportunityRefresh__c';
publish(this.messageContext, REFRESH_CHANNEL, message, { scope: APPLICATION_SCOPE });
Without APPLICATION_SCOPE, messages only reach sibling components in the same template, not the parent record page. This explains why your data refresh stopped working.
Additionally, remove any references to force:lightningQuickAction interface from your component. LWC doesn’t use Aura interfaces. To close the modal after submission, dispatch the standard CloseActionScreenEvent:
import { CloseActionScreenEvent } from 'lightning/actions';
handleSubmit() {
// Save logic here
this.dispatchEvent(new CloseActionScreenEvent());
}
Deploy these changes and the modal will open correctly. The quick action will instantiate with proper Opportunity record context, your modal will display, and after submission the LMS message will refresh the parent page as expected. Test in sandbox first since meta file changes require redeployment of the entire LWC bundle.
This draft is based on general Salesforce knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.