-
Notifications
You must be signed in to change notification settings - Fork 16
Use list fetches + setQueryData to prefetch items for *NameFromId cells
#2055
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
| method: M, | ||
| params: Params<A[M]>, | ||
| data: ErrorsAllowed<Result<A[M]>, ApiError> | ||
| ) => queryClient.setQueryData([method, params, ERRORS_ALLOWED], data), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is needed because there's no other way to sneak ERRORS_ALLOWED into the query key to match useApiQueryErrorsAllowed.
c308775 to
2c2ec21
Compare
charliepark
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing!
Also, thanks for including the diff w/ code changes for perf testing
… cells (#2055) get wild with prefetches for *NameFromId cells
oxidecomputer/console@784e8aa...7c96844 * [7c968443](oxidecomputer/console@7c968443) oxidecomputer/console#2083 * [b844a42c](oxidecomputer/console@b844a42c) oxidecomputer/console#2078 * [47835ee3](oxidecomputer/console@47835ee3) oxidecomputer/console#2086 * [c4ddebc2](oxidecomputer/console@c4ddebc2) oxidecomputer/console#2082 * [530a0997](oxidecomputer/console@530a0997) upload-artifact@v4 requires unique filenames for each run in matrix * [b996c34c](oxidecomputer/console@b996c34c) bump actions/upload-artifact to v4 * [bc51f530](oxidecomputer/console@bc51f530) bump API to latest main * [743da3b0](oxidecomputer/console@743da3b0) oxidecomputer/console#2080 * [7596d633](oxidecomputer/console@7596d633) oxidecomputer/console#2073 * [65531bff](oxidecomputer/console@65531bff) oxidecomputer/console#2074 * [4d226cd3](oxidecomputer/console@4d226cd3) oxidecomputer/console#1891 * [7490104a](oxidecomputer/console@7490104a) update readme with cool new preview URL * [a2218994](oxidecomputer/console@a2218994) oxidecomputer/console#2066 * [641ebe85](oxidecomputer/console@641ebe85) oxidecomputer/console#2061 * [1bb8dd3a](oxidecomputer/console@1bb8dd3a) oxidecomputer/console#2055 * [41dd9f06](oxidecomputer/console@41dd9f06) oxidecomputer/console#2059 * [04692802](oxidecomputer/console@04692802) oxidecomputer/console#2048 * [8c30305e](oxidecomputer/console@8c30305e) oxidecomputer/console#2050 * [53709d2a](oxidecomputer/console@53709d2a) oxidecomputer/console#2046 * [84caede7](oxidecomputer/console@84caede7) oxidecomputer/console#2026 * [bca9f42a](oxidecomputer/console@bca9f42a) oxidecomputer/console#2045 * [09e5f713](oxidecomputer/console@09e5f713) oxidecomputer/console#2043 * [d780e5d8](oxidecomputer/console@d780e5d8) fix casing on floating IP attach/detach toasts
oxidecomputer/console@784e8aa...7c96844 * [7c968443](oxidecomputer/console@7c968443) oxidecomputer/console#2083 * [b844a42c](oxidecomputer/console@b844a42c) oxidecomputer/console#2078 * [47835ee3](oxidecomputer/console@47835ee3) oxidecomputer/console#2086 * [c4ddebc2](oxidecomputer/console@c4ddebc2) oxidecomputer/console#2082 * [530a0997](oxidecomputer/console@530a0997) upload-artifact@v4 requires unique filenames for each run in matrix * [b996c34c](oxidecomputer/console@b996c34c) bump actions/upload-artifact to v4 * [bc51f530](oxidecomputer/console@bc51f530) bump API to latest main * [743da3b0](oxidecomputer/console@743da3b0) oxidecomputer/console#2080 * [7596d633](oxidecomputer/console@7596d633) oxidecomputer/console#2073 * [65531bff](oxidecomputer/console@65531bff) oxidecomputer/console#2074 * [4d226cd3](oxidecomputer/console@4d226cd3) oxidecomputer/console#1891 * [7490104a](oxidecomputer/console@7490104a) update readme with cool new preview URL * [a2218994](oxidecomputer/console@a2218994) oxidecomputer/console#2066 * [641ebe85](oxidecomputer/console@641ebe85) oxidecomputer/console#2061 * [1bb8dd3a](oxidecomputer/console@1bb8dd3a) oxidecomputer/console#2055 * [41dd9f06](oxidecomputer/console@41dd9f06) oxidecomputer/console#2059 * [04692802](oxidecomputer/console@04692802) oxidecomputer/console#2048 * [8c30305e](oxidecomputer/console@8c30305e) oxidecomputer/console#2050 * [53709d2a](oxidecomputer/console@53709d2a) oxidecomputer/console#2046 * [84caede7](oxidecomputer/console@84caede7) oxidecomputer/console#2026 * [bca9f42a](oxidecomputer/console@bca9f42a) oxidecomputer/console#2045 * [09e5f713](oxidecomputer/console@09e5f713) oxidecomputer/console#2043 * [d780e5d8](oxidecomputer/console@d780e5d8) fix casing on floating IP attach/detach toasts
Closes #1946
I love this. Using React Query's cache as a go-between, we can do the list prefetch idea with perfect fallback behavior (if the disk is not in the list we fetched, fetch it directly) without having to change the calling code.
I decided to limit each fetch to 200 items, as in general that should cover us. We could easily bump this higher if we wanted — no other code changes are required. In both FF and Chrome on M1 Mac, I timed how long it takes to loop through the items and call
setQueryDataon 200 items and it took 2-4ms. With a possibly more typical 10 items, it takes under 1ms as one would expect.diff showing code changes for testing perf