SWR hooks (client components)
Client components use SWR for data fetching with caching and revalidation:React Server Components
Server components fetch data directly in the component body:API route handlers (mutations)
Mutations go through Next.js API routes. Client components call these viafetch:
mutate("/api/projects").