Chatter actions no longer working

Our publisher actions are no longer working in the Chatter feed on our Skuid Opportunity page.  When people click them (e.g. Log a Call), nothing happens.  No JS error is logged in the debugger either.

The interesting thing is that when I edit the Skuid page and then preview it, they work.  But when people access the page normally, no luck.  At one point on Friday it started working again, but then stopped (with no changes to the page that I’m aware of).

I tried turning off the static resource critical update, but that didn’t help.

Can you post the code for your Visualforce override page? Is the Chatter Feed within a Page Include, or directly within your Opportunity page?

We are just using the Chatter Feed Component in a panel on the Skuid page.

Here is the VF override page:

<apex:page standardController=“Opportunity” extensions=“skuid.Redirects” showHeader=“true” sidebar=“false” readonly=“true” docType=“html-5.0” action=“{!IF(canUseSkuid,‘’,redirect)}” title=“{!Opportunity.Name} - {!Opportunity.Account.Name}”>
<skuid:page objectType=“Opportunity” actionType=“View” />

Are there no Javascript errors at all, or are there none in response to the click action?

I ask because I’ve seen cases where the user might not have access to a field or an object, but a quick action based on that object/field exists in the user’s standard layout for their profile. The result is that the Chatter component hits an error when it tries to fetch metadata about the object/field (which is usually visible in the console) and the quick action doesn’t finish building the quick action. So the UI will be there (the button), but it’s not been hooked up correctly, resulting in an unresponsive UI. The tricky thing is that the error occurs when the Chatter component is rendering, not when you click on the button.

I think the field/object access theory is a good one. I just tested it under a couple profiles and it seems to work for one, but not the other (I thought I had tried that on Friday, but maybe not). Again, not sure what changed last week, but I’ll see if I can track something down related to permissions or new fields.

And yes, there are really no JS errors (just this missing image that we get on all our pages):

There seem to be log messages from Chatter each time you try to click a button, but I can’t actually glean any information from them.

And for a bit more clarification, the difference between the two users I tested on was in their Role (not their Profile). The one user that it is working for has a different Role than the others (but the same Profile).

Try checking the “Pause on Caught Exceptions” box (under the Sources tab in Chrome Developer Tools). It’s possible that Salesforce is silently catching and ignoring the Javascript error (I can’t remember for sure). This would confirm whether or not it’s the Javascript bug I’m thinking of.

If you don’t get a Javascript error, then it’s possible that something is happening server-side (based on your logs), but I’ve not run directly into that issue before so you’d have to poke around a bit.

If you do detect an error, it’s likely due to one of the layouts in your global actions:

It could be as simple as the user not having access to the Stage field, etc., causing the Chatter component to bomb when it tries to get the picklist values:

Good call!  Pausing on caught exceptions turned up the following error:

DOMException: Failed to execute ‘querySelectorAll’ on ‘Document’: ‘.publishercontainer .publisherWrapper .09D60000000PIFN’ is not a valid selector. at Error (native) at n ( at ( at Object.b.first ( at Object.b.get ( at Publisher.openTypeSpecificPanel ( at HTMLAnchorElement.onclick (…)

Not sure if that’s helpful.  The code is pretty obfuscated so it is hard to see what’s happening at that point.  Nestled in the middle of this chunk:

b.getElementsByClassName(g)),c}if(l.qsa&&!U[a+" “]&&(!p||!p.test(a))){f=e=q;g=b;k=1!==h&&a;if(1===h&&“object”!==b.nodeName.toLowerCase()){h=R(a);(e=b.getAttribute(“id”))?f=e.replace(va,”$x26"):b.setAttribute(“id”,f);f=“[idx3d’”+f+“'] “;for(g=h.length;g–;)h[g]=f+V(h[g]);g=ba.test(a)&&ca(b.parentNode)||b;k=h.join(”,”)}if(k)try{return D.apply(c,g.querySelectorAll(k)),c}catch(S){}finally{e||b.removeAttribute(“id”)}}}return la(a.replace(W,“$1”),b,c,d)}function da(){function a(c,d){b.push(c+" ")>m.cacheLength&&

Important additional information from our support team: It actually doesn’t appear to be related to roles at all.  It’s related to some data on the Opportunity object itself.  So the Chatter links work on some Opportunities and not on others.

When I tested different users/roles, I was also hitting different Opportunities (e.g. which ever one they had most recently viewed).  But the Opportunities that don’t work for one user, don’t work for any (and vice versa).

Unfortunately, this sounds like an issues with Salesforce’s chatter component. If that’s the case, I’m not sure there’s much we can do to help you from our side. A good way to rule out Skuid, though, is to create a simple Visualforce page with nothing but the chatter component and test to see if you still get the error. If it’s there, then you can be certain that it’s a Salesforce bug and you could try opening a case with them. If not, then it may be something else on the page interfering the the Chatter component (possibly Skuid, possibly something else).

Here’s a sample Visualforce page you can use to do your testing:

<apex:page standardController="Opportunity">
 <chatter:feedWithFollowers entityId="{!Opportunity.Id}"/>

Sorry for the delay in following up on this.  I just created the chatter-only page.  Things work just fine there (i.e. the Log a Call link works in the chatter-only page, but not in the Skuid page for the same Opportunity).  So it’s not a simple Salesforce issue.  It is something specific to our Skuid page.

Is the component or one of its parent’s conditionally rendered? Or is it in a drawer or popup, or a tab component with deferred rendering?

The error message from the Salesforce control is basically that it can’t find an element (‘.publishercontainer .publisherWrapper .09D60000000PIFN’). The Salesforce Chatter component expects to be loaded when the page is loaded. Unfortunately, that means that conditional rendering, drawers, popups and deferred tabs are not supported. (You can get around this by using an iframe.)

I don’t think any of those things apply here. It’s just sitting in a panel at the top of the page.

It looks like the issue happens for Opportunities that have an open Case.  When there is an open Case, we can’t use the functions in the Chatter feed.  If we close the Case, those functions work.

We finally figured out how to fix this.  If we check the “Process Model client-side” box for our OpenCases model, the problem goes away.  I don’t know why, but that was the solution.