Inside the script perfomed when the button inside the portal is clicked, you might include a commit record step to see if it will update the screen.
What are the conditional format expressions that control the visibility of these layout objects?
The condiontal format expression is:
Job List_Messages_Site::Read = "No" (The text is formatted white post-condition statement)
If that statement is true, then the text is set to red.
Now, placing the commit records step results in the conditional formatting occuring immediately. Removing the commit records step results in a one second delay which was not the same reaction as before (which is a bit odd). I can't actually recreate the original problem after adding the commit records step.
Is it better practice to have the commit records step in the script?
Commit records is usually a very safe "problem solver". It saves the entered data back to the hosted file or back to your hard drive and usually is very low profile.
There are a few details to be careful of:
Committing the record closes the open record (and open related records) so that they are no longer locked against other user edits. This means other users may be able to jump in an lock you out before you are ready to release control of the record. And this can make a partially created record visible to other users before you want them to be able to see it. Also, it could trigger some validation error messages simply because the validation rule require data in a field you haven't yet edited. This also releases the 'focus' on the portal row you just clicked/tapped to perform this script so if your script requires that focus, don't commit the record until the very end of your script so that this doesn't interfere.