Custom buttons missing on Lightning Record Pages for contract management

We recently deployed a new Lightning Web Component bundle for our contract approval workflow in Summer '24. The bundle includes three custom action buttons (Approve, Reject, Send for Review) that should appear on Contract record pages. However, after deployment, these buttons are completely missing for most users.

I’ve verified the Lightning App Builder configuration shows all three buttons in the component palette, and they work perfectly in my System Admin profile. The component visibility filters are set to show for all Contract records where Status != ‘Executed’. Our contract managers have the Custom Contract Manager permission set assigned, which should grant access to these actions.

The strange part is that 2 out of 15 contract managers can see the buttons, but the rest cannot. All users are on the same profile (Contract Manager Profile) with identical permission set assignments. This is blocking our entire contract approval workflow and we have 47 contracts waiting for review. Has anyone encountered similar button visibility issues after deploying custom LWC components?

Good catches! I checked the Page Assignments and found we have three different assignments: Org Default, Contract Manager Profile, and Sales Profile. The Contract Manager Profile assignment was created last month and is missing the button component entirely. The 2 users who can see buttons are actually on a legacy profile that matches the Org Default assignment. I need to add the component to the profile-specific assignment, but I’m concerned about the component visibility filters - should those be configured at the component level or in the page assignment settings?

One more thing to check - verify that your Custom Contract Manager permission set includes the ‘View Setup and Configuration’ permission if your LWC component uses any dynamic metadata queries. Also check if there are any Sharing Rules or Record Types affecting those 13 users differently. Sometimes a combination of profile + permission set + sharing settings creates unexpected visibility gaps. Run a Permission Set Assignment report filtered by your Contract Manager users to spot any differences in their effective permissions.

I’ll add that Lightning Locker Service can also cause components to not render if there are security policy violations, though this would typically affect all users equally.

Also verify the Field-Level Security on any fields your LWC component references. If your buttons call controller methods that query fields the users can’t access, the entire component can fail to render silently. Check the Browser Console (F12) when logged in as one of the affected users - you might see FLS errors that aren’t obvious in the UI. The fact that 2 users can see them suggests permission differences rather than code issues.

Based on your symptoms, this is a classic Lightning App Builder page assignment issue combined with incomplete component configuration. Here’s the complete solution addressing all three areas:

Lightning App Builder Configuration: You have multiple page assignments creating a hierarchy where profile-specific assignments override the org default. Navigate to Setup > Lightning App Builder > locate your Contract Record Page > click Edit > select the Contract Manager Profile assignment. Add your custom button component to the appropriate region (typically the highlights panel or a custom region above related lists). Ensure the component is positioned identically to your working Org Default assignment.

Component Visibility Filters: Select your button component in the builder and configure visibility filters in the right-side panel. Add a filter rule: Show Component when Contract.Status NOT EQUAL TO Executed. This filter is evaluated client-side after the page loads, so it won’t affect initial rendering but will hide buttons for executed contracts. If you need more complex logic, consider adding a formula field like Show_Approval_Buttons__c and filter on that instead.

User Permission Sets: The Custom Contract Manager permission set needs several specific permissions beyond basic object access. Verify it includes: Read/Edit access to Contract object, Read access to all fields referenced by your LWC component (check your JavaScript controller and HTML template), and if your component uses Lightning Data Service or wire adapters, ensure users have API Enabled permission. Go to Setup > Permission Sets > Custom Contract Manager > Object Settings > Contracts and verify field-level security for Status, Contract Number, Owner, and any custom fields your buttons reference.

For the 13 affected users, run this validation: Setup > Users > select a user > Permission Set Assignments. Compare their assignments to one of the 2 working users. Look for differences in permission sets, not just the Custom Contract Manager one. Sometimes additional permission sets grant supplementary field access that makes components work.

Deployment Checklist:

  1. Edit Contract Manager Profile page assignment and add button component
  2. Configure component visibility filter: Status != ‘Executed’
  3. Activate the page assignment
  4. Verify permission set includes all required field permissions
  5. Have affected users log out and back in (permission changes require new session)
  6. Test with an affected user in a sandbox first if possible

After making these changes, the buttons should appear consistently for all 15 contract managers on appropriate contract records. The 2 users currently seeing buttons will continue to work since they’re on the Org Default assignment, and the other 13 will gain access through the corrected profile-specific assignment.