refreshGraphQL doesn't trigger refresh in Local Dev
Opened this issue · 1 comments
Summary
I've done my best to give you relevant info, but you might need me to grab more details from Devtools or whatever...
In the context of Local Dev, when using GraphQL with the lightning/uiGraphQLApi Wire adapter, a call to refreshGraphQL doesn't update the wire data on the component.
Deploying source to org and using the LWC without Local Dev, we get the expected result: re-query occurs and UI is re-rendered with fresh data.
Steps To Reproduce:
- Create a LWC importing {gql, graphql, refreshGraphQL} from "lightning/uiGraphQLApi" and making an API query
- store 'result' in graphQLqueryResult
- render API data in some way along with a button
- create a method 'refresh' which returns refreshGraphQL(this.graphQLqueryResult) and append to button
- adjust API data on the record. Hit refresh button.
Expected Result
Record data now reflects the change in the updated API wire property
Actual Result
API call is being made (can see it in Network tab) and is returning correct data, but it isn't making its way into the component API wire response.
Additional Information
I struggled to make a minimum reproducible example because when attaching it to a Lightning layout (in this instance, an Account record layout, with an API call against that same record) there was all sorts of funky cache issues going on in Local Dev, but I managed to get the issue to manifest before the page reaches for the cache.
Screenshots:
Logs:
System Information
SF CLI:
{
"architecture": "darwin-arm64",
"cliVersion": "@salesforce/cli/2.60.13",
"nodeVersion": "node-v20.16.0",
"osVersion": "Darwin 24.0.0",
"rootPath": "/Users/alan/.nvm/versions/node/v20.16.0/lib/node_modules/@salesforce/cli",
"shell": "zsh",
"pluginVersions": [
"@oclif/plugin-autocomplete 3.2.4 (core)",
"@oclif/plugin-commands 4.0.15 (core)",
"@oclif/plugin-help 6.2.12 (core)",
"@oclif/plugin-not-found 3.2.21 (core)",
"@oclif/plugin-plugins 5.4.9 (core)",
"@oclif/plugin-search 1.2.9 (core)",
"@oclif/plugin-update 4.5.9 (core)",
"@oclif/plugin-version 2.2.13 (core)",
"@oclif/plugin-warn-if-update-available 3.1.17 (core)",
"@oclif/plugin-which 3.2.14 (core)",
"@salesforce/cli 2.60.13 (core)",
"apex 3.4.10 (core)",
"api 1.2.2 (core)",
"auth 3.6.62 (core)",
"data 3.6.7 (core)",
"deploy-retrieve 3.12.11 (core)",
"info 3.4.9 (core)",
"lightning-dev 1.3.0 (user) published 18 days ago (Sat Sep 21 2024) (latest is 1.8.0)",
"limits 3.3.32 (core)",
"marketplace 1.2.26 (core)",
"org 4.5.10 (core)",
"packaging 2.8.11 (user) published 3 days ago (Sat Oct 05 2024)",
"schema 3.3.32 (core)",
"settings 2.3.21 (core)",
"signups 2.3.10 (user) published 121 days ago (Sun Jun 09 2024) (latest is 2.5.21)",
"sobject 1.4.38 (core)",
"source 3.5.21 (core)",
"telemetry 3.6.15 (core)",
"templates 56.3.21 (core)",
"trust 3.7.31 (core)",
"user 3.5.31 (core)",
"@salesforce/sfdx-scanner 4.4.0 (user) published 70 days ago (Wed Jul 31 2024) (latest is 4.6.0)",
"sfdmu 4.36.3 (user) published 19 days ago (Fri Sep 20 2024)",
"sfdx-essentials 2.12.0 (user) published 1029 days ago (Wed Dec 15 2021)",
"sfdx-git-delta 5.46.0 (user) published 7 days ago (Wed Oct 02 2024) (latest is 5.47.0)",
"sfdx-hardis 5.0.10 (user) published 5 days ago (Fri Oct 04 2024)",
"texei-sfdx-plugin 2.7.0 (user) published 28 days ago (Wed Sep 11 2024)"
]
}
OS:
MacOS 15.0.1
For context, I was using an Apex API call and using refreshApex with no issue. Swapping out GraphQL equivalents produced this result, so I'm relatively confident in the rest of my component's logic.
Also now I've created this issue, I've realised that my minReproduce example actually rerenders the LWC on the account page with the updated info because I assume it picks up the refreshed cache from the parent page.
The behaviour of the minReproduce component in local dev, if you refresh the page, it displays nothing, because now it's reaching for a cache that (I assume) is somehow incorrectly structured. Maybe the Local Dev cache doesn't handle graphql appropriately?