From fffd36268a216044523c3f5227c3d375608c36dc Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 14 Feb 2026 12:17:23 +0900 Subject: refactor(frontend): migrate state management to jotai and jotai-tanstack-query Replace React Context + manual useEffect data fetching with jotai atoms for state management and jotai-tanstack-query for server state caching. - Add jotai, jotai-tanstack-query, @tanstack/query-core dependencies - Create atoms for auth (primitive + action), feeds (suspense query), and articles (infinite query with cursor-based pagination) - Wire up Provider, HydrateQueryClient, and StoreInitializer in main.tsx - Migrate all components from useAuth() context to jotai atoms - Replace manual fetch logic in FeedSidebar/FeedList with feedsAtom - Replace usePaginatedArticles hook with articlesInfiniteAtom - Add queryClient.invalidateQueries() after mutations for automatic cache refresh - Add ErrorBoundary and LoadingSpinner components for Suspense support - Remove callback prop chains (onFeedAdded, onFeedChanged, etc.) in favor of query invalidation Co-Authored-By: Claude Opus 4.6 --- frontend/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'frontend/package.json') diff --git a/frontend/package.json b/frontend/package.json index 807431a..04634e8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "build": "tsc -b && vite build", - "check": "biome check .", + "check": "biome check . && tsc --noEmit", "dev": "vite", "fix": "biome check --write .", "generate": "openapi-typescript ../openapi/openapi.yaml -o src/api/generated.d.ts", @@ -16,6 +16,9 @@ "@fortawesome/free-solid-svg-icons": "^6.7.2", "@fortawesome/react-fontawesome": "^0.2.6", "@tailwindcss/vite": "^4.1.17", + "@tanstack/query-core": "^5.90.20", + "jotai": "^2.17.1", + "jotai-tanstack-query": "^0.11.0", "openapi-fetch": "^0.17.0", "react": "^19.2.1", "react-dom": "^19.2.1", -- cgit v1.3-1-g0d28