inertia
inertia copied to clipboard
[2.x] Prefetch causes stale data to be shown after post
Versions:
@inertiajs/coreversion: 2.0.0-beta.1@inertiajs/reactversion: 2.0.0-beta.1
Describe the problem:
After submitting a post request that changes the current page's data, the previous prefetch value will still be used and the user will be shown stale data.
Steps to reproduce:
Set a page to be prefetched: "/settings" Visit "/" Visit "/settings" router.post('/settings/update') - this returns data that modifies the settings page data Visit "/" Visit "/settings" - here you'll get the data from the prefetch, not the merged props from the post.
This should be fixed by #2023. Please test it once beta 2 is out 😉
@pedroborges @reinink Any chance this could get released? I'm experiencing quite a lot of issues and I'm not sure if this is solved by #2023 since the tests there only reference deferred props. But I'm also hesitant to report an issue if it's potentially already fixed.
Sadly not fixed by beta 2 @pedroborges
https://imgur.com/a/tUAzjgH
Yes, hopefully prefetch will get some love. Just upgraded to beta 2 and still getting those
Uncaught (in promise) DataCloneError: Failed to execute 'replaceState' on 'History': #<Object> could not be cloned.
From history.ts:101
@nick-potts we don't automatically flush the page prefetch after something like a posted form, but you can do it manually on success by passing the same options to router.flush() as you passed to router.prefetch. Does this help you solve this issue?
That does work. I'm struggling to get it to prefetch the page again afterwards, but I think that's skill issues.
has this issue been resolved now?
Not really, you can very easily end up with stale data in the cache. its mainly up the the developer to try manage it here.
I'm closing this as it's not a bug but something you have to manage yourself, as described above.