Apollo v4's useQuery uses reference equality for the query DocumentNode. Without memoization, generateFindManyRecordsQuery and similar functions create new DocumentNode objects on every render, causing the observable to be recreated before results are delivered - resulting in infinite loading state on first view load. Also fix new enterprise settings files from main for Apollo v4 (import paths, CombinedGraphQLErrors, typed query hooks). https://claude.ai/code/session_01EA7CMTUTG5zFP132yvUweT