On client side: The type in book.ts lists all fields needed across entire app. The Browse and MyShelf pages render BookGrid with BookCard and do not need all this info, only a subsection The BookDetail page uses all fields For now, the same book type is passed around everywhere. For later: Narrow down the fields used for BookCard (..grid, browse, shelf) to only the necessary ones, to avoid fetching loads more data than needed. At the same time: make sure fetch asks for the same exact fields to ensure results match what's expected. To do - Add `BookSummary = Pick<Book, "id" | "title" | "authors" | "coverURL" | "publishedYear">` in `types/book.ts`. - Use `BookSummary` in `BookCard`, `BookGrid` and the list queries on Browse and My shelf. - Update the GraphQL list queries to request exactly the `BookSummary` fields, and nothing else. - Keep the full `Book` type (and query) for the BookDetail page. - Change the query and the type in the same commit, so they can't drift apart. TypeScript can't check GraphQL results, so a mismatch shows up only at runtime.