function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Shubham Tripathi 24Shubham Tripathi 24 

Why need to refresh a lightning detail page in order to see changes done from vf page ?

I have a a scenario where i'm making changes in vfpage and then redirecting page to  previous page(lightning detail page) but changes doesn't reflect immediately but i need to refresh the detail page in order to see changes . Why is this so ? and how to overcome this .(It is working fine in classic but in lightning i need to refresh) Pls help .
Khan AnasKhan Anas (Salesforce Developers) 
Hi Shubham,

Greetings to you!

Currently, there is a known issue in lightning that prevents reflection of data updates on UI.

https://success.salesforce.com/issues_view?id=a1p3A0000001C8QQAU&title=data-not-updated-in-ui-after-an-apex-update-in-lightning-experience (https://success.salesforce.com/issues_view?id=a1p3A0000001C8QQAU&title=data-not-updated-in-ui-after-an-apex-update-in-lightning-experience)

Workaround by Salesforce:

Updates made to Lightning Experience and Salesforce app components may occasionally not be reflected in the UI. Updates initiated by a different user or a different channel (API, Apex Trigger, etc) require an additional mechanism in order to update the UI. 

The recommended solution is to refactor the component to use Lightning Data Service (force:recordData). Lightning Data Service provides a performance increase and eliminates out-of-sync issues. If you can’t refactor your component to use Lightning Data Service, you can also use force:refreshView to request a page refresh.

It means you need to create a lightning component. Try like this:
clientMethod : function(component,event,helper) {
        var action = component.get("c.serverMethod");   //calling server-side method
        action.setParams({
        "serverParameter":clientParameter
    });
        action.setCallback(this, function(response){
            var state = response.getState();
            if(state === 'SUCCESS'){
                $A.get('e.force:refreshView').fire();
            }
            ...
            ...
            ...
        )};
        $A.enqueueAction(action);
},

/*page refresh after data save*/
    
    isRefreshed: function(component, event, helper) {
        location.reload();
    },

And don't forget to add below handler in your component:
 
<aura:handler event="force:refreshView" action="{!c.isRefreshed}" />

Also, please make sure to turn off browser caching in your Org.

1. From Setup, locate the link to ‘Session Settings’.
2. Locate the ‘Caching’ section.
3. Uncheck the option to ‘Enable secure and persistent browser caching to improve performance’.

I hope it helps you.

Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in the future. It will help to keep this community clean.

Thanks and Regards,
Khan Anas