Full source here, for reference.
I'm fairly new to TypeScript, and brand new to NextJS (13.4) and tRPC. I'm working on building something to understand how the stack works.
For a quick bit of context, @trpc/react-query extends your server routes definition by giving you access to, among many other functions, useQuery. One of the options you can provide to useQuery as an argument is initialData, which allows you to pre-populate the results of the query.
which is in src/app/_components/UserListClient.tsx
What I see in VS Code when I hover over initialData, underlined in red in the image above
This is I see when hovering over initialUsers, which is being supplied as the value for initialData from the first screenshot
Looking into the error, I see that useQuery expects the data provided to be an array of users, except instead of expecting the users to have updatedAt and createdAt as dates, it expects strings.
However, my server router definition for the user.list procedure clearly defines the return type to have dates with a Date type, not a string, as shown in the screenshot below.
What is the problem? Why does useQuery know about the correct return type, with the odd specific exception where it appears to turn Date types into string types?
I tried inspecting the types that useQuery expects, but as I said, since I'm fairly new to TypeScript I found it quite difficult to trace back the types to see if at any point useQuery is casting my types, or anything like that. Not sure how to approach this, and not sure how to debug.


tRPC is using JSON to serialize data. As JSON does not have a
Datetype, JSON.stringify would convert aDateto a string:If you really want to use
Datetypes instead of the string representation, have look at transformers using superjson:https://trpc.io/docs/server/data-transformers#using-superjson