[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-expo-expo-data-fetching":3,"mdc-saj6q6-key":37,"related-repo-expo-expo-data-fetching":6586,"related-org-expo-expo-data-fetching":6693},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"expo-data-fetching","fetch and manage data in Expo apps","Framework (OSS). Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"expo","Expo","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fexpo.png",[12,16,17,20,23],{"name":13,"slug":14,"type":15},"React","react","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Mobile","mobile",{"name":21,"slug":22,"type":15},"API Development","api-development",{"name":24,"slug":25,"type":15},"Caching","caching",2190,"https:\u002F\u002Fgithub.com\u002Fexpo\u002Fskills","2026-07-24T05:36:42.177188","MIT",111,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"A collection of AI agent skills for working with Expo projects and Expo Application Services","https:\u002F\u002Fgithub.com\u002Fexpo\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fexpo\u002Fskills\u002Fexpo-data-fetching","---\nname: expo-data-fetching\ndescription: Framework (OSS). Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).\nversion: 1.0.0\nlicense: MIT\n---\n\n# Expo Networking\n\n**You MUST use this skill for ANY networking work including API requests, data fetching, caching, or network debugging.**\n\n## References\n\nConsult these resources as needed:\n\n```\nreferences\u002F\n  expo-router-loaders.md        Route-level data loading with Expo Router loaders (web, SDK 55+)\n  offline-and-cancellation.md   NetInfo network status, offline-first React Query, AbortController\n```\n\n## When to Use\n\nUse this skill when:\n\n- Implementing API requests\n- Setting up data fetching (React Query, SWR)\n- Using Expo Router data loaders (`useLoaderData`, web SDK 55+)\n- Debugging network failures\n- Implementing caching strategies\n- Handling offline scenarios\n- Authentication\u002Ftoken management\n- Configuring API URLs and environment variables\n\n## Preferences\n\n- Avoid axios, prefer expo\u002Ffetch\n\n## Common Issues & Solutions\n\n### 1. Basic Fetch Usage\n\n**Simple GET request**:\n\n```tsx\nconst fetchUser = async (userId: string) => {\n  const response = await fetch(`https:\u002F\u002Fapi.example.com\u002Fusers\u002F${userId}`);\n\n  if (!response.ok) {\n    throw new Error(`HTTP error! status: ${response.status}`);\n  }\n\n  return response.json();\n};\n```\n\n**POST request with body**:\n\n```tsx\nconst createUser = async (userData: UserData) => {\n  const response = await fetch(\"https:\u002F\u002Fapi.example.com\u002Fusers\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application\u002Fjson\",\n      Authorization: `Bearer ${token}`,\n    },\n    body: JSON.stringify(userData),\n  });\n\n  if (!response.ok) {\n    const error = await response.json();\n    throw new Error(error.message);\n  }\n\n  return response.json();\n};\n```\n\n---\n\n### 2. React Query (TanStack Query)\n\n**Setup**:\n\n```tsx\n\u002F\u002F app\u002F_layout.tsx\nimport { QueryClient, QueryClientProvider } from \"@tanstack\u002Freact-query\";\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      staleTime: 1000 * 60 * 5, \u002F\u002F 5 minutes\n      retry: 2,\n    },\n  },\n});\n\nexport default function RootLayout() {\n  return (\n    \u003CQueryClientProvider client={queryClient}>\n      \u003CStack \u002F>\n    \u003C\u002FQueryClientProvider>\n  );\n}\n```\n\n**Fetching data**:\n\n```tsx\nimport { useQuery } from \"@tanstack\u002Freact-query\";\n\nfunction UserProfile({ userId }: { userId: string }) {\n  const { data, isLoading, error, refetch } = useQuery({\n    queryKey: [\"user\", userId],\n    queryFn: () => fetchUser(userId),\n  });\n\n  if (isLoading) return \u003CLoading \u002F>;\n  if (error) return \u003CError message={error.message} \u002F>;\n\n  return \u003CProfile user={data} \u002F>;\n}\n```\n\n**Mutations**:\n\n```tsx\nimport { useMutation, useQueryClient } from \"@tanstack\u002Freact-query\";\n\nfunction CreateUserForm() {\n  const queryClient = useQueryClient();\n\n  const mutation = useMutation({\n    mutationFn: createUser,\n    onSuccess: () => {\n      \u002F\u002F Invalidate and refetch\n      queryClient.invalidateQueries({ queryKey: [\"users\"] });\n    },\n  });\n\n  const handleSubmit = (data: UserData) => {\n    mutation.mutate(data);\n  };\n\n  return \u003CForm onSubmit={handleSubmit} isLoading={mutation.isPending} \u002F>;\n}\n```\n\n---\n\n### 3. Error Handling\n\n**Comprehensive error handling**:\n\n```tsx\nclass ApiError extends Error {\n  constructor(message: string, public status: number, public code?: string) {\n    super(message);\n    this.name = \"ApiError\";\n  }\n}\n\nconst fetchWithErrorHandling = async (url: string, options?: RequestInit) => {\n  try {\n    const response = await fetch(url, options);\n\n    if (!response.ok) {\n      const error = await response.json().catch(() => ({}));\n      throw new ApiError(\n        error.message || \"Request failed\",\n        response.status,\n        error.code\n      );\n    }\n\n    return response.json();\n  } catch (error) {\n    if (error instanceof ApiError) {\n      throw error;\n    }\n    \u002F\u002F Network error (no internet, timeout, etc.)\n    throw new ApiError(\"Network error\", 0, \"NETWORK_ERROR\");\n  }\n};\n```\n\n**Retry logic**:\n\n```tsx\nconst fetchWithRetry = async (\n  url: string,\n  options?: RequestInit,\n  retries = 3\n) => {\n  for (let i = 0; i \u003C retries; i++) {\n    try {\n      return await fetchWithErrorHandling(url, options);\n    } catch (error) {\n      if (i === retries - 1) throw error;\n      \u002F\u002F Exponential backoff\n      await new Promise((r) => setTimeout(r, Math.pow(2, i) * 1000));\n    }\n  }\n};\n```\n\n---\n\n### 4. Authentication\n\n**Token management**:\n\n```tsx\nimport * as SecureStore from \"expo-secure-store\";\n\nconst TOKEN_KEY = \"auth_token\";\n\nexport const auth = {\n  getToken: () => SecureStore.getItemAsync(TOKEN_KEY),\n  setToken: (token: string) => SecureStore.setItemAsync(TOKEN_KEY, token),\n  removeToken: () => SecureStore.deleteItemAsync(TOKEN_KEY),\n};\n\n\u002F\u002F Authenticated fetch wrapper\nconst authFetch = async (url: string, options: RequestInit = {}) => {\n  const token = await auth.getToken();\n\n  return fetch(url, {\n    ...options,\n    headers: {\n      ...options.headers,\n      Authorization: token ? `Bearer ${token}` : \"\",\n    },\n  });\n};\n```\n\n**Token refresh**:\n\n```tsx\nlet isRefreshing = false;\nlet refreshPromise: Promise\u003Cstring> | null = null;\n\nconst getValidToken = async (): Promise\u003Cstring> => {\n  const token = await auth.getToken();\n\n  if (!token || isTokenExpired(token)) {\n    if (!isRefreshing) {\n      isRefreshing = true;\n      refreshPromise = refreshToken().finally(() => {\n        isRefreshing = false;\n        refreshPromise = null;\n      });\n    }\n    return refreshPromise!;\n  }\n\n  return token;\n};\n```\n\n---\n\n### 5. Offline Support\n\nNetwork-status detection with NetInfo and offline-first React Query setup: see [.\u002Freferences\u002Foffline-and-cancellation.md](.\u002Freferences\u002Foffline-and-cancellation.md).\n\n---\n\n### 6. Environment Variables\n\n**Using environment variables for API configuration**:\n\nExpo supports environment variables with the `EXPO_PUBLIC_` prefix. These are inlined at build time and available in your JavaScript code.\n\n```tsx\n\u002F\u002F .env\nEXPO_PUBLIC_API_URL=https:\u002F\u002Fapi.example.com\nEXPO_PUBLIC_API_VERSION=v1\n\n\u002F\u002F Usage in code\nconst API_URL = process.env.EXPO_PUBLIC_API_URL;\n\nconst fetchUsers = async () => {\n  const response = await fetch(`${API_URL}\u002Fusers`);\n  return response.json();\n};\n```\n\n**Environment-specific configuration**:\n\n```tsx\n\u002F\u002F .env.development\nEXPO_PUBLIC_API_URL=http:\u002F\u002Flocalhost:3000\n\n\u002F\u002F .env.production\nEXPO_PUBLIC_API_URL=https:\u002F\u002Fapi.production.com\n```\n\n**Creating an API client with environment config**:\n\n```tsx\n\u002F\u002F api\u002Fclient.ts\nconst BASE_URL = process.env.EXPO_PUBLIC_API_URL;\n\nif (!BASE_URL) {\n  throw new Error(\"EXPO_PUBLIC_API_URL is not defined\");\n}\n\nexport const apiClient = {\n  get: async \u003CT,>(path: string): Promise\u003CT> => {\n    const response = await fetch(`${BASE_URL}${path}`);\n    if (!response.ok) throw new Error(`HTTP ${response.status}`);\n    return response.json();\n  },\n\n  post: async \u003CT,>(path: string, body: unknown): Promise\u003CT> => {\n    const response = await fetch(`${BASE_URL}${path}`, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\u002Fjson\" },\n      body: JSON.stringify(body),\n    });\n    if (!response.ok) throw new Error(`HTTP ${response.status}`);\n    return response.json();\n  },\n};\n```\n\n**Important notes**:\n\n- Only variables prefixed with `EXPO_PUBLIC_` are exposed to the client bundle\n- Never put secrets (API keys with write access, database passwords) in `EXPO_PUBLIC_` variables—they're visible in the built app\n- Environment variables are inlined at **build time**, not runtime\n- Restart the dev server after changing `.env` files\n- For server-side secrets in API routes, use variables without the `EXPO_PUBLIC_` prefix\n\n**TypeScript support**:\n\n```tsx\n\u002F\u002F types\u002Fenv.d.ts\ndeclare global {\n  namespace NodeJS {\n    interface ProcessEnv {\n      EXPO_PUBLIC_API_URL: string;\n      EXPO_PUBLIC_API_VERSION?: string;\n    }\n  }\n}\n\nexport {};\n```\n\n---\n\n### 7. Request Cancellation\n\nAbortController on unmount (React Query cancels automatically): see [.\u002Freferences\u002Foffline-and-cancellation.md](.\u002Freferences\u002Foffline-and-cancellation.md).\n\n---\n\n## Decision Tree\n\n```\nUser asks about networking\n  |-- Route-level data loading (web, SDK 55+)?\n  |   \\-- Expo Router loaders — see references\u002Fexpo-router-loaders.md\n  |\n  |-- Basic fetch?\n  |   \\-- Use fetch API with error handling\n  |\n  |-- Need caching\u002Fstate management?\n  |   |-- Complex app -> React Query (TanStack Query)\n  |   \\-- Simpler needs -> SWR or custom hooks\n  |\n  |-- Authentication?\n  |   |-- Token storage -> expo-secure-store\n  |   \\-- Token refresh -> Implement refresh flow\n  |\n  |-- Error handling?\n  |   |-- Network errors -> Check connectivity first\n  |   |-- HTTP errors -> Parse response, throw typed errors\n  |   \\-- Retries -> Exponential backoff\n  |\n  |-- Offline support?\n  |   |-- Check status -> NetInfo\n  |   \\-- Queue requests -> React Query persistence\n  |\n  |-- Environment\u002FAPI config?\n  |   |-- Client-side URLs -> EXPO_PUBLIC_ prefix in .env\n  |   |-- Server secrets -> Non-prefixed env vars (API routes only)\n  |   \\-- Multiple environments -> .env.development, .env.production\n  |\n  \\-- Performance?\n      |-- Caching -> React Query with staleTime\n      |-- Deduplication -> React Query handles this\n      \\-- Cancellation -> AbortController or React Query\n```\n\n## Common Mistakes\n\n**Wrong: No error handling**\n\n```tsx\nconst data = await fetch(url).then((r) => r.json());\n```\n\n**Right: Check response status**\n\n```tsx\nconst response = await fetch(url);\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\n```\n\n**Wrong: Storing tokens in AsyncStorage**\n\n```tsx\nawait AsyncStorage.setItem(\"token\", token); \u002F\u002F Not secure!\n```\n\n**Right: Use SecureStore for sensitive data**\n\n```tsx\nawait SecureStore.setItemAsync(\"token\", token);\n```\n\n## Example Invocations\n\nUser: \"How do I make API calls in React Native?\"\n-> Use fetch, wrap with error handling\n\nUser: \"Should I use React Query or SWR?\"\n-> React Query for complex apps, SWR for simpler needs\n\nUser: \"My app needs to work offline\"\n-> Use NetInfo for status, React Query persistence for caching\n\nUser: \"How do I handle authentication tokens?\"\n-> Store in expo-secure-store, implement refresh flow\n\nUser: \"API calls are slow\"\n-> Check caching strategy, use React Query staleTime\nUser: \"How do I configure different API URLs for dev and prod?\"\n-> Use `EXPO_PUBLIC_` env vars with .env.development and .env.production files\nUser: \"Where should I put my API key?\"\n-> Client-safe keys: `EXPO_PUBLIC_` in .env. Secret keys: non-prefixed env vars in API routes only\n\nUser: \"How do I load data for a page in Expo Router?\"\n-> See references\u002Fexpo-router-loaders.md for route-level loaders (web, SDK 55+). For native, use React Query or fetch.\n\n## Submitting Feedback\nIf you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:\n```bash\nnpx --yes submit-expo-feedback@latest --category skills --subject \"expo-data-fetching\" \"\u003Cactionable feedback>\"\n```\nOnly submit when you have something specific and actionable to report. Include as much relevant context as possible.\n",{"data":38,"body":40},{"name":4,"description":6,"version":39,"license":29},"1.0.0",{"type":41,"children":42},"root",[43,52,62,69,74,87,93,98,151,157,165,171,178,188,504,513,990,994,1000,1009,1388,1397,1823,1832,2289,2292,2298,2307,3070,3079,3522,3525,3531,3540,4120,4129,4569,4572,4578,4590,4593,4599,4608,4621,4867,4876,4955,4964,5782,5791,5855,5864,6010,6013,6019,6029,6032,6038,6047,6053,6061,6148,6156,6314,6322,6384,6392,6446,6452,6457,6462,6467,6472,6491,6496,6502,6507,6575,6580],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"expo-networking",[49],{"type":50,"value":51},"text","Expo Networking",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56],{"type":44,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":50,"value":61},"You MUST use this skill for ANY networking work including API requests, data fetching, caching, or network debugging.",{"type":44,"tag":63,"props":64,"children":66},"h2",{"id":65},"references",[67],{"type":50,"value":68},"References",{"type":44,"tag":53,"props":70,"children":71},{},[72],{"type":50,"value":73},"Consult these resources as needed:",{"type":44,"tag":75,"props":76,"children":80},"pre",{"className":77,"code":79,"language":50},[78],"language-text","references\u002F\n  expo-router-loaders.md        Route-level data loading with Expo Router loaders (web, SDK 55+)\n  offline-and-cancellation.md   NetInfo network status, offline-first React Query, AbortController\n",[81],{"type":44,"tag":82,"props":83,"children":85},"code",{"__ignoreMap":84},"",[86],{"type":50,"value":79},{"type":44,"tag":63,"props":88,"children":90},{"id":89},"when-to-use",[91],{"type":50,"value":92},"When to Use",{"type":44,"tag":53,"props":94,"children":95},{},[96],{"type":50,"value":97},"Use this skill when:",{"type":44,"tag":99,"props":100,"children":101},"ul",{},[102,108,113,126,131,136,141,146],{"type":44,"tag":103,"props":104,"children":105},"li",{},[106],{"type":50,"value":107},"Implementing API requests",{"type":44,"tag":103,"props":109,"children":110},{},[111],{"type":50,"value":112},"Setting up data fetching (React Query, SWR)",{"type":44,"tag":103,"props":114,"children":115},{},[116,118,124],{"type":50,"value":117},"Using Expo Router data loaders (",{"type":44,"tag":82,"props":119,"children":121},{"className":120},[],[122],{"type":50,"value":123},"useLoaderData",{"type":50,"value":125},", web SDK 55+)",{"type":44,"tag":103,"props":127,"children":128},{},[129],{"type":50,"value":130},"Debugging network failures",{"type":44,"tag":103,"props":132,"children":133},{},[134],{"type":50,"value":135},"Implementing caching strategies",{"type":44,"tag":103,"props":137,"children":138},{},[139],{"type":50,"value":140},"Handling offline scenarios",{"type":44,"tag":103,"props":142,"children":143},{},[144],{"type":50,"value":145},"Authentication\u002Ftoken management",{"type":44,"tag":103,"props":147,"children":148},{},[149],{"type":50,"value":150},"Configuring API URLs and environment variables",{"type":44,"tag":63,"props":152,"children":154},{"id":153},"preferences",[155],{"type":50,"value":156},"Preferences",{"type":44,"tag":99,"props":158,"children":159},{},[160],{"type":44,"tag":103,"props":161,"children":162},{},[163],{"type":50,"value":164},"Avoid axios, prefer expo\u002Ffetch",{"type":44,"tag":63,"props":166,"children":168},{"id":167},"common-issues-solutions",[169],{"type":50,"value":170},"Common Issues & Solutions",{"type":44,"tag":172,"props":173,"children":175},"h3",{"id":174},"_1-basic-fetch-usage",[176],{"type":50,"value":177},"1. Basic Fetch Usage",{"type":44,"tag":53,"props":179,"children":180},{},[181,186],{"type":44,"tag":57,"props":182,"children":183},{},[184],{"type":50,"value":185},"Simple GET request",{"type":50,"value":187},":",{"type":44,"tag":75,"props":189,"children":193},{"className":190,"code":191,"language":192,"meta":84,"style":84},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const fetchUser = async (userId: string) => {\n  const response = await fetch(`https:\u002F\u002Fapi.example.com\u002Fusers\u002F${userId}`);\n\n  if (!response.ok) {\n    throw new Error(`HTTP error! status: ${response.status}`);\n  }\n\n  return response.json();\n};\n","tsx",[194],{"type":44,"tag":82,"props":195,"children":196},{"__ignoreMap":84},[197,262,333,343,386,447,456,464,495],{"type":44,"tag":198,"props":199,"children":202},"span",{"class":200,"line":201},"line",1,[203,209,215,221,226,231,237,241,247,252,257],{"type":44,"tag":198,"props":204,"children":206},{"style":205},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[207],{"type":50,"value":208},"const",{"type":44,"tag":198,"props":210,"children":212},{"style":211},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[213],{"type":50,"value":214}," fetchUser ",{"type":44,"tag":198,"props":216,"children":218},{"style":217},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[219],{"type":50,"value":220},"=",{"type":44,"tag":198,"props":222,"children":223},{"style":205},[224],{"type":50,"value":225}," async",{"type":44,"tag":198,"props":227,"children":228},{"style":217},[229],{"type":50,"value":230}," (",{"type":44,"tag":198,"props":232,"children":234},{"style":233},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[235],{"type":50,"value":236},"userId",{"type":44,"tag":198,"props":238,"children":239},{"style":217},[240],{"type":50,"value":187},{"type":44,"tag":198,"props":242,"children":244},{"style":243},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[245],{"type":50,"value":246}," string",{"type":44,"tag":198,"props":248,"children":249},{"style":217},[250],{"type":50,"value":251},")",{"type":44,"tag":198,"props":253,"children":254},{"style":205},[255],{"type":50,"value":256}," =>",{"type":44,"tag":198,"props":258,"children":259},{"style":217},[260],{"type":50,"value":261}," {\n",{"type":44,"tag":198,"props":263,"children":265},{"class":200,"line":264},2,[266,271,276,281,287,293,299,304,310,315,319,324,328],{"type":44,"tag":198,"props":267,"children":268},{"style":205},[269],{"type":50,"value":270},"  const",{"type":44,"tag":198,"props":272,"children":273},{"style":211},[274],{"type":50,"value":275}," response",{"type":44,"tag":198,"props":277,"children":278},{"style":217},[279],{"type":50,"value":280}," =",{"type":44,"tag":198,"props":282,"children":284},{"style":283},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[285],{"type":50,"value":286}," await",{"type":44,"tag":198,"props":288,"children":290},{"style":289},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[291],{"type":50,"value":292}," fetch",{"type":44,"tag":198,"props":294,"children":296},{"style":295},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[297],{"type":50,"value":298},"(",{"type":44,"tag":198,"props":300,"children":301},{"style":217},[302],{"type":50,"value":303},"`",{"type":44,"tag":198,"props":305,"children":307},{"style":306},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[308],{"type":50,"value":309},"https:\u002F\u002Fapi.example.com\u002Fusers\u002F",{"type":44,"tag":198,"props":311,"children":312},{"style":217},[313],{"type":50,"value":314},"${",{"type":44,"tag":198,"props":316,"children":317},{"style":211},[318],{"type":50,"value":236},{"type":44,"tag":198,"props":320,"children":321},{"style":217},[322],{"type":50,"value":323},"}`",{"type":44,"tag":198,"props":325,"children":326},{"style":295},[327],{"type":50,"value":251},{"type":44,"tag":198,"props":329,"children":330},{"style":217},[331],{"type":50,"value":332},";\n",{"type":44,"tag":198,"props":334,"children":336},{"class":200,"line":335},3,[337],{"type":44,"tag":198,"props":338,"children":340},{"emptyLinePlaceholder":339},true,[341],{"type":50,"value":342},"\n",{"type":44,"tag":198,"props":344,"children":346},{"class":200,"line":345},4,[347,352,356,361,366,371,376,381],{"type":44,"tag":198,"props":348,"children":349},{"style":283},[350],{"type":50,"value":351},"  if",{"type":44,"tag":198,"props":353,"children":354},{"style":295},[355],{"type":50,"value":230},{"type":44,"tag":198,"props":357,"children":358},{"style":217},[359],{"type":50,"value":360},"!",{"type":44,"tag":198,"props":362,"children":363},{"style":211},[364],{"type":50,"value":365},"response",{"type":44,"tag":198,"props":367,"children":368},{"style":217},[369],{"type":50,"value":370},".",{"type":44,"tag":198,"props":372,"children":373},{"style":211},[374],{"type":50,"value":375},"ok",{"type":44,"tag":198,"props":377,"children":378},{"style":295},[379],{"type":50,"value":380},") ",{"type":44,"tag":198,"props":382,"children":383},{"style":217},[384],{"type":50,"value":385},"{\n",{"type":44,"tag":198,"props":387,"children":389},{"class":200,"line":388},5,[390,395,400,405,409,413,418,422,426,430,435,439,443],{"type":44,"tag":198,"props":391,"children":392},{"style":283},[393],{"type":50,"value":394},"    throw",{"type":44,"tag":198,"props":396,"children":397},{"style":217},[398],{"type":50,"value":399}," new",{"type":44,"tag":198,"props":401,"children":402},{"style":289},[403],{"type":50,"value":404}," Error",{"type":44,"tag":198,"props":406,"children":407},{"style":295},[408],{"type":50,"value":298},{"type":44,"tag":198,"props":410,"children":411},{"style":217},[412],{"type":50,"value":303},{"type":44,"tag":198,"props":414,"children":415},{"style":306},[416],{"type":50,"value":417},"HTTP error! status: ",{"type":44,"tag":198,"props":419,"children":420},{"style":217},[421],{"type":50,"value":314},{"type":44,"tag":198,"props":423,"children":424},{"style":211},[425],{"type":50,"value":365},{"type":44,"tag":198,"props":427,"children":428},{"style":217},[429],{"type":50,"value":370},{"type":44,"tag":198,"props":431,"children":432},{"style":211},[433],{"type":50,"value":434},"status",{"type":44,"tag":198,"props":436,"children":437},{"style":217},[438],{"type":50,"value":323},{"type":44,"tag":198,"props":440,"children":441},{"style":295},[442],{"type":50,"value":251},{"type":44,"tag":198,"props":444,"children":445},{"style":217},[446],{"type":50,"value":332},{"type":44,"tag":198,"props":448,"children":450},{"class":200,"line":449},6,[451],{"type":44,"tag":198,"props":452,"children":453},{"style":217},[454],{"type":50,"value":455},"  }\n",{"type":44,"tag":198,"props":457,"children":459},{"class":200,"line":458},7,[460],{"type":44,"tag":198,"props":461,"children":462},{"emptyLinePlaceholder":339},[463],{"type":50,"value":342},{"type":44,"tag":198,"props":465,"children":467},{"class":200,"line":466},8,[468,473,477,481,486,491],{"type":44,"tag":198,"props":469,"children":470},{"style":283},[471],{"type":50,"value":472},"  return",{"type":44,"tag":198,"props":474,"children":475},{"style":211},[476],{"type":50,"value":275},{"type":44,"tag":198,"props":478,"children":479},{"style":217},[480],{"type":50,"value":370},{"type":44,"tag":198,"props":482,"children":483},{"style":289},[484],{"type":50,"value":485},"json",{"type":44,"tag":198,"props":487,"children":488},{"style":295},[489],{"type":50,"value":490},"()",{"type":44,"tag":198,"props":492,"children":493},{"style":217},[494],{"type":50,"value":332},{"type":44,"tag":198,"props":496,"children":498},{"class":200,"line":497},9,[499],{"type":44,"tag":198,"props":500,"children":501},{"style":217},[502],{"type":50,"value":503},"};\n",{"type":44,"tag":53,"props":505,"children":506},{},[507,512],{"type":44,"tag":57,"props":508,"children":509},{},[510],{"type":50,"value":511},"POST request with body",{"type":50,"value":187},{"type":44,"tag":75,"props":514,"children":516},{"className":190,"code":515,"language":192,"meta":84,"style":84},"const createUser = async (userData: UserData) => {\n  const response = await fetch(\"https:\u002F\u002Fapi.example.com\u002Fusers\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application\u002Fjson\",\n      Authorization: `Bearer ${token}`,\n    },\n    body: JSON.stringify(userData),\n  });\n\n  if (!response.ok) {\n    const error = await response.json();\n    throw new Error(error.message);\n  }\n\n  return response.json();\n};\n",[517],{"type":44,"tag":82,"props":518,"children":519},{"__ignoreMap":84},[520,570,620,651,667,705,744,752,794,810,818,854,896,938,946,954,982],{"type":44,"tag":198,"props":521,"children":522},{"class":200,"line":201},[523,527,532,536,540,544,549,553,558,562,566],{"type":44,"tag":198,"props":524,"children":525},{"style":205},[526],{"type":50,"value":208},{"type":44,"tag":198,"props":528,"children":529},{"style":211},[530],{"type":50,"value":531}," createUser ",{"type":44,"tag":198,"props":533,"children":534},{"style":217},[535],{"type":50,"value":220},{"type":44,"tag":198,"props":537,"children":538},{"style":205},[539],{"type":50,"value":225},{"type":44,"tag":198,"props":541,"children":542},{"style":217},[543],{"type":50,"value":230},{"type":44,"tag":198,"props":545,"children":546},{"style":233},[547],{"type":50,"value":548},"userData",{"type":44,"tag":198,"props":550,"children":551},{"style":217},[552],{"type":50,"value":187},{"type":44,"tag":198,"props":554,"children":555},{"style":243},[556],{"type":50,"value":557}," UserData",{"type":44,"tag":198,"props":559,"children":560},{"style":217},[561],{"type":50,"value":251},{"type":44,"tag":198,"props":563,"children":564},{"style":205},[565],{"type":50,"value":256},{"type":44,"tag":198,"props":567,"children":568},{"style":217},[569],{"type":50,"value":261},{"type":44,"tag":198,"props":571,"children":572},{"class":200,"line":264},[573,577,581,585,589,593,597,602,607,611,616],{"type":44,"tag":198,"props":574,"children":575},{"style":205},[576],{"type":50,"value":270},{"type":44,"tag":198,"props":578,"children":579},{"style":211},[580],{"type":50,"value":275},{"type":44,"tag":198,"props":582,"children":583},{"style":217},[584],{"type":50,"value":280},{"type":44,"tag":198,"props":586,"children":587},{"style":283},[588],{"type":50,"value":286},{"type":44,"tag":198,"props":590,"children":591},{"style":289},[592],{"type":50,"value":292},{"type":44,"tag":198,"props":594,"children":595},{"style":295},[596],{"type":50,"value":298},{"type":44,"tag":198,"props":598,"children":599},{"style":217},[600],{"type":50,"value":601},"\"",{"type":44,"tag":198,"props":603,"children":604},{"style":306},[605],{"type":50,"value":606},"https:\u002F\u002Fapi.example.com\u002Fusers",{"type":44,"tag":198,"props":608,"children":609},{"style":217},[610],{"type":50,"value":601},{"type":44,"tag":198,"props":612,"children":613},{"style":217},[614],{"type":50,"value":615},",",{"type":44,"tag":198,"props":617,"children":618},{"style":217},[619],{"type":50,"value":261},{"type":44,"tag":198,"props":621,"children":622},{"class":200,"line":335},[623,628,632,637,642,646],{"type":44,"tag":198,"props":624,"children":625},{"style":295},[626],{"type":50,"value":627},"    method",{"type":44,"tag":198,"props":629,"children":630},{"style":217},[631],{"type":50,"value":187},{"type":44,"tag":198,"props":633,"children":634},{"style":217},[635],{"type":50,"value":636}," \"",{"type":44,"tag":198,"props":638,"children":639},{"style":306},[640],{"type":50,"value":641},"POST",{"type":44,"tag":198,"props":643,"children":644},{"style":217},[645],{"type":50,"value":601},{"type":44,"tag":198,"props":647,"children":648},{"style":217},[649],{"type":50,"value":650},",\n",{"type":44,"tag":198,"props":652,"children":653},{"class":200,"line":345},[654,659,663],{"type":44,"tag":198,"props":655,"children":656},{"style":295},[657],{"type":50,"value":658},"    headers",{"type":44,"tag":198,"props":660,"children":661},{"style":217},[662],{"type":50,"value":187},{"type":44,"tag":198,"props":664,"children":665},{"style":217},[666],{"type":50,"value":261},{"type":44,"tag":198,"props":668,"children":669},{"class":200,"line":388},[670,675,680,684,688,692,697,701],{"type":44,"tag":198,"props":671,"children":672},{"style":217},[673],{"type":50,"value":674},"      \"",{"type":44,"tag":198,"props":676,"children":677},{"style":295},[678],{"type":50,"value":679},"Content-Type",{"type":44,"tag":198,"props":681,"children":682},{"style":217},[683],{"type":50,"value":601},{"type":44,"tag":198,"props":685,"children":686},{"style":217},[687],{"type":50,"value":187},{"type":44,"tag":198,"props":689,"children":690},{"style":217},[691],{"type":50,"value":636},{"type":44,"tag":198,"props":693,"children":694},{"style":306},[695],{"type":50,"value":696},"application\u002Fjson",{"type":44,"tag":198,"props":698,"children":699},{"style":217},[700],{"type":50,"value":601},{"type":44,"tag":198,"props":702,"children":703},{"style":217},[704],{"type":50,"value":650},{"type":44,"tag":198,"props":706,"children":707},{"class":200,"line":449},[708,713,717,722,727,731,736,740],{"type":44,"tag":198,"props":709,"children":710},{"style":295},[711],{"type":50,"value":712},"      Authorization",{"type":44,"tag":198,"props":714,"children":715},{"style":217},[716],{"type":50,"value":187},{"type":44,"tag":198,"props":718,"children":719},{"style":217},[720],{"type":50,"value":721}," `",{"type":44,"tag":198,"props":723,"children":724},{"style":306},[725],{"type":50,"value":726},"Bearer ",{"type":44,"tag":198,"props":728,"children":729},{"style":217},[730],{"type":50,"value":314},{"type":44,"tag":198,"props":732,"children":733},{"style":211},[734],{"type":50,"value":735},"token",{"type":44,"tag":198,"props":737,"children":738},{"style":217},[739],{"type":50,"value":323},{"type":44,"tag":198,"props":741,"children":742},{"style":217},[743],{"type":50,"value":650},{"type":44,"tag":198,"props":745,"children":746},{"class":200,"line":458},[747],{"type":44,"tag":198,"props":748,"children":749},{"style":217},[750],{"type":50,"value":751},"    },\n",{"type":44,"tag":198,"props":753,"children":754},{"class":200,"line":466},[755,760,764,769,773,778,782,786,790],{"type":44,"tag":198,"props":756,"children":757},{"style":295},[758],{"type":50,"value":759},"    body",{"type":44,"tag":198,"props":761,"children":762},{"style":217},[763],{"type":50,"value":187},{"type":44,"tag":198,"props":765,"children":766},{"style":211},[767],{"type":50,"value":768}," JSON",{"type":44,"tag":198,"props":770,"children":771},{"style":217},[772],{"type":50,"value":370},{"type":44,"tag":198,"props":774,"children":775},{"style":289},[776],{"type":50,"value":777},"stringify",{"type":44,"tag":198,"props":779,"children":780},{"style":295},[781],{"type":50,"value":298},{"type":44,"tag":198,"props":783,"children":784},{"style":211},[785],{"type":50,"value":548},{"type":44,"tag":198,"props":787,"children":788},{"style":295},[789],{"type":50,"value":251},{"type":44,"tag":198,"props":791,"children":792},{"style":217},[793],{"type":50,"value":650},{"type":44,"tag":198,"props":795,"children":796},{"class":200,"line":497},[797,802,806],{"type":44,"tag":198,"props":798,"children":799},{"style":217},[800],{"type":50,"value":801},"  }",{"type":44,"tag":198,"props":803,"children":804},{"style":295},[805],{"type":50,"value":251},{"type":44,"tag":198,"props":807,"children":808},{"style":217},[809],{"type":50,"value":332},{"type":44,"tag":198,"props":811,"children":813},{"class":200,"line":812},10,[814],{"type":44,"tag":198,"props":815,"children":816},{"emptyLinePlaceholder":339},[817],{"type":50,"value":342},{"type":44,"tag":198,"props":819,"children":821},{"class":200,"line":820},11,[822,826,830,834,838,842,846,850],{"type":44,"tag":198,"props":823,"children":824},{"style":283},[825],{"type":50,"value":351},{"type":44,"tag":198,"props":827,"children":828},{"style":295},[829],{"type":50,"value":230},{"type":44,"tag":198,"props":831,"children":832},{"style":217},[833],{"type":50,"value":360},{"type":44,"tag":198,"props":835,"children":836},{"style":211},[837],{"type":50,"value":365},{"type":44,"tag":198,"props":839,"children":840},{"style":217},[841],{"type":50,"value":370},{"type":44,"tag":198,"props":843,"children":844},{"style":211},[845],{"type":50,"value":375},{"type":44,"tag":198,"props":847,"children":848},{"style":295},[849],{"type":50,"value":380},{"type":44,"tag":198,"props":851,"children":852},{"style":217},[853],{"type":50,"value":385},{"type":44,"tag":198,"props":855,"children":857},{"class":200,"line":856},12,[858,863,868,872,876,880,884,888,892],{"type":44,"tag":198,"props":859,"children":860},{"style":205},[861],{"type":50,"value":862},"    const",{"type":44,"tag":198,"props":864,"children":865},{"style":211},[866],{"type":50,"value":867}," error",{"type":44,"tag":198,"props":869,"children":870},{"style":217},[871],{"type":50,"value":280},{"type":44,"tag":198,"props":873,"children":874},{"style":283},[875],{"type":50,"value":286},{"type":44,"tag":198,"props":877,"children":878},{"style":211},[879],{"type":50,"value":275},{"type":44,"tag":198,"props":881,"children":882},{"style":217},[883],{"type":50,"value":370},{"type":44,"tag":198,"props":885,"children":886},{"style":289},[887],{"type":50,"value":485},{"type":44,"tag":198,"props":889,"children":890},{"style":295},[891],{"type":50,"value":490},{"type":44,"tag":198,"props":893,"children":894},{"style":217},[895],{"type":50,"value":332},{"type":44,"tag":198,"props":897,"children":899},{"class":200,"line":898},13,[900,904,908,912,916,921,925,930,934],{"type":44,"tag":198,"props":901,"children":902},{"style":283},[903],{"type":50,"value":394},{"type":44,"tag":198,"props":905,"children":906},{"style":217},[907],{"type":50,"value":399},{"type":44,"tag":198,"props":909,"children":910},{"style":289},[911],{"type":50,"value":404},{"type":44,"tag":198,"props":913,"children":914},{"style":295},[915],{"type":50,"value":298},{"type":44,"tag":198,"props":917,"children":918},{"style":211},[919],{"type":50,"value":920},"error",{"type":44,"tag":198,"props":922,"children":923},{"style":217},[924],{"type":50,"value":370},{"type":44,"tag":198,"props":926,"children":927},{"style":211},[928],{"type":50,"value":929},"message",{"type":44,"tag":198,"props":931,"children":932},{"style":295},[933],{"type":50,"value":251},{"type":44,"tag":198,"props":935,"children":936},{"style":217},[937],{"type":50,"value":332},{"type":44,"tag":198,"props":939,"children":941},{"class":200,"line":940},14,[942],{"type":44,"tag":198,"props":943,"children":944},{"style":217},[945],{"type":50,"value":455},{"type":44,"tag":198,"props":947,"children":949},{"class":200,"line":948},15,[950],{"type":44,"tag":198,"props":951,"children":952},{"emptyLinePlaceholder":339},[953],{"type":50,"value":342},{"type":44,"tag":198,"props":955,"children":957},{"class":200,"line":956},16,[958,962,966,970,974,978],{"type":44,"tag":198,"props":959,"children":960},{"style":283},[961],{"type":50,"value":472},{"type":44,"tag":198,"props":963,"children":964},{"style":211},[965],{"type":50,"value":275},{"type":44,"tag":198,"props":967,"children":968},{"style":217},[969],{"type":50,"value":370},{"type":44,"tag":198,"props":971,"children":972},{"style":289},[973],{"type":50,"value":485},{"type":44,"tag":198,"props":975,"children":976},{"style":295},[977],{"type":50,"value":490},{"type":44,"tag":198,"props":979,"children":980},{"style":217},[981],{"type":50,"value":332},{"type":44,"tag":198,"props":983,"children":985},{"class":200,"line":984},17,[986],{"type":44,"tag":198,"props":987,"children":988},{"style":217},[989],{"type":50,"value":503},{"type":44,"tag":991,"props":992,"children":993},"hr",{},[],{"type":44,"tag":172,"props":995,"children":997},{"id":996},"_2-react-query-tanstack-query",[998],{"type":50,"value":999},"2. React Query (TanStack Query)",{"type":44,"tag":53,"props":1001,"children":1002},{},[1003,1008],{"type":44,"tag":57,"props":1004,"children":1005},{},[1006],{"type":50,"value":1007},"Setup",{"type":50,"value":187},{"type":44,"tag":75,"props":1010,"children":1012},{"className":190,"code":1011,"language":192,"meta":84,"style":84},"\u002F\u002F app\u002F_layout.tsx\nimport { QueryClient, QueryClientProvider } from \"@tanstack\u002Freact-query\";\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      staleTime: 1000 * 60 * 5, \u002F\u002F 5 minutes\n      retry: 2,\n    },\n  },\n});\n\nexport default function RootLayout() {\n  return (\n    \u003CQueryClientProvider client={queryClient}>\n      \u003CStack \u002F>\n    \u003C\u002FQueryClientProvider>\n  );\n}\n",[1013],{"type":44,"tag":82,"props":1014,"children":1015},{"__ignoreMap":84},[1016,1025,1079,1086,1118,1134,1150,1196,1217,1224,1232,1248,1255,1286,1298,1331,1349,1366,1379],{"type":44,"tag":198,"props":1017,"children":1018},{"class":200,"line":201},[1019],{"type":44,"tag":198,"props":1020,"children":1022},{"style":1021},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1023],{"type":50,"value":1024},"\u002F\u002F app\u002F_layout.tsx\n",{"type":44,"tag":198,"props":1026,"children":1027},{"class":200,"line":264},[1028,1033,1038,1043,1047,1052,1057,1062,1066,1071,1075],{"type":44,"tag":198,"props":1029,"children":1030},{"style":283},[1031],{"type":50,"value":1032},"import",{"type":44,"tag":198,"props":1034,"children":1035},{"style":217},[1036],{"type":50,"value":1037}," {",{"type":44,"tag":198,"props":1039,"children":1040},{"style":211},[1041],{"type":50,"value":1042}," QueryClient",{"type":44,"tag":198,"props":1044,"children":1045},{"style":217},[1046],{"type":50,"value":615},{"type":44,"tag":198,"props":1048,"children":1049},{"style":211},[1050],{"type":50,"value":1051}," QueryClientProvider",{"type":44,"tag":198,"props":1053,"children":1054},{"style":217},[1055],{"type":50,"value":1056}," }",{"type":44,"tag":198,"props":1058,"children":1059},{"style":283},[1060],{"type":50,"value":1061}," from",{"type":44,"tag":198,"props":1063,"children":1064},{"style":217},[1065],{"type":50,"value":636},{"type":44,"tag":198,"props":1067,"children":1068},{"style":306},[1069],{"type":50,"value":1070},"@tanstack\u002Freact-query",{"type":44,"tag":198,"props":1072,"children":1073},{"style":217},[1074],{"type":50,"value":601},{"type":44,"tag":198,"props":1076,"children":1077},{"style":217},[1078],{"type":50,"value":332},{"type":44,"tag":198,"props":1080,"children":1081},{"class":200,"line":335},[1082],{"type":44,"tag":198,"props":1083,"children":1084},{"emptyLinePlaceholder":339},[1085],{"type":50,"value":342},{"type":44,"tag":198,"props":1087,"children":1088},{"class":200,"line":345},[1089,1093,1098,1102,1106,1110,1114],{"type":44,"tag":198,"props":1090,"children":1091},{"style":205},[1092],{"type":50,"value":208},{"type":44,"tag":198,"props":1094,"children":1095},{"style":211},[1096],{"type":50,"value":1097}," queryClient ",{"type":44,"tag":198,"props":1099,"children":1100},{"style":217},[1101],{"type":50,"value":220},{"type":44,"tag":198,"props":1103,"children":1104},{"style":217},[1105],{"type":50,"value":399},{"type":44,"tag":198,"props":1107,"children":1108},{"style":289},[1109],{"type":50,"value":1042},{"type":44,"tag":198,"props":1111,"children":1112},{"style":211},[1113],{"type":50,"value":298},{"type":44,"tag":198,"props":1115,"children":1116},{"style":217},[1117],{"type":50,"value":385},{"type":44,"tag":198,"props":1119,"children":1120},{"class":200,"line":388},[1121,1126,1130],{"type":44,"tag":198,"props":1122,"children":1123},{"style":295},[1124],{"type":50,"value":1125},"  defaultOptions",{"type":44,"tag":198,"props":1127,"children":1128},{"style":217},[1129],{"type":50,"value":187},{"type":44,"tag":198,"props":1131,"children":1132},{"style":217},[1133],{"type":50,"value":261},{"type":44,"tag":198,"props":1135,"children":1136},{"class":200,"line":449},[1137,1142,1146],{"type":44,"tag":198,"props":1138,"children":1139},{"style":295},[1140],{"type":50,"value":1141},"    queries",{"type":44,"tag":198,"props":1143,"children":1144},{"style":217},[1145],{"type":50,"value":187},{"type":44,"tag":198,"props":1147,"children":1148},{"style":217},[1149],{"type":50,"value":261},{"type":44,"tag":198,"props":1151,"children":1152},{"class":200,"line":458},[1153,1158,1162,1168,1173,1178,1182,1187,1191],{"type":44,"tag":198,"props":1154,"children":1155},{"style":295},[1156],{"type":50,"value":1157},"      staleTime",{"type":44,"tag":198,"props":1159,"children":1160},{"style":217},[1161],{"type":50,"value":187},{"type":44,"tag":198,"props":1163,"children":1165},{"style":1164},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1166],{"type":50,"value":1167}," 1000",{"type":44,"tag":198,"props":1169,"children":1170},{"style":217},[1171],{"type":50,"value":1172}," *",{"type":44,"tag":198,"props":1174,"children":1175},{"style":1164},[1176],{"type":50,"value":1177}," 60",{"type":44,"tag":198,"props":1179,"children":1180},{"style":217},[1181],{"type":50,"value":1172},{"type":44,"tag":198,"props":1183,"children":1184},{"style":1164},[1185],{"type":50,"value":1186}," 5",{"type":44,"tag":198,"props":1188,"children":1189},{"style":217},[1190],{"type":50,"value":615},{"type":44,"tag":198,"props":1192,"children":1193},{"style":1021},[1194],{"type":50,"value":1195}," \u002F\u002F 5 minutes\n",{"type":44,"tag":198,"props":1197,"children":1198},{"class":200,"line":466},[1199,1204,1208,1213],{"type":44,"tag":198,"props":1200,"children":1201},{"style":295},[1202],{"type":50,"value":1203},"      retry",{"type":44,"tag":198,"props":1205,"children":1206},{"style":217},[1207],{"type":50,"value":187},{"type":44,"tag":198,"props":1209,"children":1210},{"style":1164},[1211],{"type":50,"value":1212}," 2",{"type":44,"tag":198,"props":1214,"children":1215},{"style":217},[1216],{"type":50,"value":650},{"type":44,"tag":198,"props":1218,"children":1219},{"class":200,"line":497},[1220],{"type":44,"tag":198,"props":1221,"children":1222},{"style":217},[1223],{"type":50,"value":751},{"type":44,"tag":198,"props":1225,"children":1226},{"class":200,"line":812},[1227],{"type":44,"tag":198,"props":1228,"children":1229},{"style":217},[1230],{"type":50,"value":1231},"  },\n",{"type":44,"tag":198,"props":1233,"children":1234},{"class":200,"line":820},[1235,1240,1244],{"type":44,"tag":198,"props":1236,"children":1237},{"style":217},[1238],{"type":50,"value":1239},"}",{"type":44,"tag":198,"props":1241,"children":1242},{"style":211},[1243],{"type":50,"value":251},{"type":44,"tag":198,"props":1245,"children":1246},{"style":217},[1247],{"type":50,"value":332},{"type":44,"tag":198,"props":1249,"children":1250},{"class":200,"line":856},[1251],{"type":44,"tag":198,"props":1252,"children":1253},{"emptyLinePlaceholder":339},[1254],{"type":50,"value":342},{"type":44,"tag":198,"props":1256,"children":1257},{"class":200,"line":898},[1258,1263,1268,1273,1278,1282],{"type":44,"tag":198,"props":1259,"children":1260},{"style":283},[1261],{"type":50,"value":1262},"export",{"type":44,"tag":198,"props":1264,"children":1265},{"style":283},[1266],{"type":50,"value":1267}," default",{"type":44,"tag":198,"props":1269,"children":1270},{"style":205},[1271],{"type":50,"value":1272}," function",{"type":44,"tag":198,"props":1274,"children":1275},{"style":289},[1276],{"type":50,"value":1277}," RootLayout",{"type":44,"tag":198,"props":1279,"children":1280},{"style":217},[1281],{"type":50,"value":490},{"type":44,"tag":198,"props":1283,"children":1284},{"style":217},[1285],{"type":50,"value":261},{"type":44,"tag":198,"props":1287,"children":1288},{"class":200,"line":940},[1289,1293],{"type":44,"tag":198,"props":1290,"children":1291},{"style":283},[1292],{"type":50,"value":472},{"type":44,"tag":198,"props":1294,"children":1295},{"style":295},[1296],{"type":50,"value":1297}," (\n",{"type":44,"tag":198,"props":1299,"children":1300},{"class":200,"line":948},[1301,1306,1311,1316,1321,1326],{"type":44,"tag":198,"props":1302,"children":1303},{"style":217},[1304],{"type":50,"value":1305},"    \u003C",{"type":44,"tag":198,"props":1307,"children":1308},{"style":243},[1309],{"type":50,"value":1310},"QueryClientProvider",{"type":44,"tag":198,"props":1312,"children":1313},{"style":205},[1314],{"type":50,"value":1315}," client",{"type":44,"tag":198,"props":1317,"children":1318},{"style":217},[1319],{"type":50,"value":1320},"={",{"type":44,"tag":198,"props":1322,"children":1323},{"style":211},[1324],{"type":50,"value":1325},"queryClient",{"type":44,"tag":198,"props":1327,"children":1328},{"style":217},[1329],{"type":50,"value":1330},"}>\n",{"type":44,"tag":198,"props":1332,"children":1333},{"class":200,"line":956},[1334,1339,1344],{"type":44,"tag":198,"props":1335,"children":1336},{"style":217},[1337],{"type":50,"value":1338},"      \u003C",{"type":44,"tag":198,"props":1340,"children":1341},{"style":243},[1342],{"type":50,"value":1343},"Stack",{"type":44,"tag":198,"props":1345,"children":1346},{"style":217},[1347],{"type":50,"value":1348}," \u002F>\n",{"type":44,"tag":198,"props":1350,"children":1351},{"class":200,"line":984},[1352,1357,1361],{"type":44,"tag":198,"props":1353,"children":1354},{"style":217},[1355],{"type":50,"value":1356},"    \u003C\u002F",{"type":44,"tag":198,"props":1358,"children":1359},{"style":243},[1360],{"type":50,"value":1310},{"type":44,"tag":198,"props":1362,"children":1363},{"style":217},[1364],{"type":50,"value":1365},">\n",{"type":44,"tag":198,"props":1367,"children":1369},{"class":200,"line":1368},18,[1370,1375],{"type":44,"tag":198,"props":1371,"children":1372},{"style":295},[1373],{"type":50,"value":1374},"  )",{"type":44,"tag":198,"props":1376,"children":1377},{"style":217},[1378],{"type":50,"value":332},{"type":44,"tag":198,"props":1380,"children":1382},{"class":200,"line":1381},19,[1383],{"type":44,"tag":198,"props":1384,"children":1385},{"style":217},[1386],{"type":50,"value":1387},"}\n",{"type":44,"tag":53,"props":1389,"children":1390},{},[1391,1396],{"type":44,"tag":57,"props":1392,"children":1393},{},[1394],{"type":50,"value":1395},"Fetching data",{"type":50,"value":187},{"type":44,"tag":75,"props":1398,"children":1400},{"className":190,"code":1399,"language":192,"meta":84,"style":84},"import { useQuery } from \"@tanstack\u002Freact-query\";\n\nfunction UserProfile({ userId }: { userId: string }) {\n  const { data, isLoading, error, refetch } = useQuery({\n    queryKey: [\"user\", userId],\n    queryFn: () => fetchUser(userId),\n  });\n\n  if (isLoading) return \u003CLoading \u002F>;\n  if (error) return \u003CError message={error.message} \u002F>;\n\n  return \u003CProfile user={data} \u002F>;\n}\n",[1401],{"type":44,"tag":82,"props":1402,"children":1403},{"__ignoreMap":84},[1404,1444,1451,1504,1566,1613,1655,1670,1677,1717,1775,1782,1816],{"type":44,"tag":198,"props":1405,"children":1406},{"class":200,"line":201},[1407,1411,1415,1420,1424,1428,1432,1436,1440],{"type":44,"tag":198,"props":1408,"children":1409},{"style":283},[1410],{"type":50,"value":1032},{"type":44,"tag":198,"props":1412,"children":1413},{"style":217},[1414],{"type":50,"value":1037},{"type":44,"tag":198,"props":1416,"children":1417},{"style":211},[1418],{"type":50,"value":1419}," useQuery",{"type":44,"tag":198,"props":1421,"children":1422},{"style":217},[1423],{"type":50,"value":1056},{"type":44,"tag":198,"props":1425,"children":1426},{"style":283},[1427],{"type":50,"value":1061},{"type":44,"tag":198,"props":1429,"children":1430},{"style":217},[1431],{"type":50,"value":636},{"type":44,"tag":198,"props":1433,"children":1434},{"style":306},[1435],{"type":50,"value":1070},{"type":44,"tag":198,"props":1437,"children":1438},{"style":217},[1439],{"type":50,"value":601},{"type":44,"tag":198,"props":1441,"children":1442},{"style":217},[1443],{"type":50,"value":332},{"type":44,"tag":198,"props":1445,"children":1446},{"class":200,"line":264},[1447],{"type":44,"tag":198,"props":1448,"children":1449},{"emptyLinePlaceholder":339},[1450],{"type":50,"value":342},{"type":44,"tag":198,"props":1452,"children":1453},{"class":200,"line":335},[1454,1459,1464,1469,1474,1479,1483,1487,1491,1495,1500],{"type":44,"tag":198,"props":1455,"children":1456},{"style":205},[1457],{"type":50,"value":1458},"function",{"type":44,"tag":198,"props":1460,"children":1461},{"style":289},[1462],{"type":50,"value":1463}," UserProfile",{"type":44,"tag":198,"props":1465,"children":1466},{"style":217},[1467],{"type":50,"value":1468},"({",{"type":44,"tag":198,"props":1470,"children":1471},{"style":233},[1472],{"type":50,"value":1473}," userId",{"type":44,"tag":198,"props":1475,"children":1476},{"style":217},[1477],{"type":50,"value":1478}," }:",{"type":44,"tag":198,"props":1480,"children":1481},{"style":217},[1482],{"type":50,"value":1037},{"type":44,"tag":198,"props":1484,"children":1485},{"style":295},[1486],{"type":50,"value":1473},{"type":44,"tag":198,"props":1488,"children":1489},{"style":217},[1490],{"type":50,"value":187},{"type":44,"tag":198,"props":1492,"children":1493},{"style":243},[1494],{"type":50,"value":246},{"type":44,"tag":198,"props":1496,"children":1497},{"style":217},[1498],{"type":50,"value":1499}," })",{"type":44,"tag":198,"props":1501,"children":1502},{"style":217},[1503],{"type":50,"value":261},{"type":44,"tag":198,"props":1505,"children":1506},{"class":200,"line":345},[1507,1511,1515,1520,1524,1529,1533,1537,1541,1546,1550,1554,1558,1562],{"type":44,"tag":198,"props":1508,"children":1509},{"style":205},[1510],{"type":50,"value":270},{"type":44,"tag":198,"props":1512,"children":1513},{"style":217},[1514],{"type":50,"value":1037},{"type":44,"tag":198,"props":1516,"children":1517},{"style":211},[1518],{"type":50,"value":1519}," data",{"type":44,"tag":198,"props":1521,"children":1522},{"style":217},[1523],{"type":50,"value":615},{"type":44,"tag":198,"props":1525,"children":1526},{"style":211},[1527],{"type":50,"value":1528}," isLoading",{"type":44,"tag":198,"props":1530,"children":1531},{"style":217},[1532],{"type":50,"value":615},{"type":44,"tag":198,"props":1534,"children":1535},{"style":211},[1536],{"type":50,"value":867},{"type":44,"tag":198,"props":1538,"children":1539},{"style":217},[1540],{"type":50,"value":615},{"type":44,"tag":198,"props":1542,"children":1543},{"style":211},[1544],{"type":50,"value":1545}," refetch",{"type":44,"tag":198,"props":1547,"children":1548},{"style":217},[1549],{"type":50,"value":1056},{"type":44,"tag":198,"props":1551,"children":1552},{"style":217},[1553],{"type":50,"value":280},{"type":44,"tag":198,"props":1555,"children":1556},{"style":289},[1557],{"type":50,"value":1419},{"type":44,"tag":198,"props":1559,"children":1560},{"style":295},[1561],{"type":50,"value":298},{"type":44,"tag":198,"props":1563,"children":1564},{"style":217},[1565],{"type":50,"value":385},{"type":44,"tag":198,"props":1567,"children":1568},{"class":200,"line":388},[1569,1574,1578,1583,1587,1592,1596,1600,1604,1609],{"type":44,"tag":198,"props":1570,"children":1571},{"style":295},[1572],{"type":50,"value":1573},"    queryKey",{"type":44,"tag":198,"props":1575,"children":1576},{"style":217},[1577],{"type":50,"value":187},{"type":44,"tag":198,"props":1579,"children":1580},{"style":295},[1581],{"type":50,"value":1582}," [",{"type":44,"tag":198,"props":1584,"children":1585},{"style":217},[1586],{"type":50,"value":601},{"type":44,"tag":198,"props":1588,"children":1589},{"style":306},[1590],{"type":50,"value":1591},"user",{"type":44,"tag":198,"props":1593,"children":1594},{"style":217},[1595],{"type":50,"value":601},{"type":44,"tag":198,"props":1597,"children":1598},{"style":217},[1599],{"type":50,"value":615},{"type":44,"tag":198,"props":1601,"children":1602},{"style":211},[1603],{"type":50,"value":1473},{"type":44,"tag":198,"props":1605,"children":1606},{"style":295},[1607],{"type":50,"value":1608},"]",{"type":44,"tag":198,"props":1610,"children":1611},{"style":217},[1612],{"type":50,"value":650},{"type":44,"tag":198,"props":1614,"children":1615},{"class":200,"line":449},[1616,1621,1625,1630,1634,1639,1643,1647,1651],{"type":44,"tag":198,"props":1617,"children":1618},{"style":289},[1619],{"type":50,"value":1620},"    queryFn",{"type":44,"tag":198,"props":1622,"children":1623},{"style":217},[1624],{"type":50,"value":187},{"type":44,"tag":198,"props":1626,"children":1627},{"style":217},[1628],{"type":50,"value":1629}," ()",{"type":44,"tag":198,"props":1631,"children":1632},{"style":205},[1633],{"type":50,"value":256},{"type":44,"tag":198,"props":1635,"children":1636},{"style":289},[1637],{"type":50,"value":1638}," fetchUser",{"type":44,"tag":198,"props":1640,"children":1641},{"style":295},[1642],{"type":50,"value":298},{"type":44,"tag":198,"props":1644,"children":1645},{"style":211},[1646],{"type":50,"value":236},{"type":44,"tag":198,"props":1648,"children":1649},{"style":295},[1650],{"type":50,"value":251},{"type":44,"tag":198,"props":1652,"children":1653},{"style":217},[1654],{"type":50,"value":650},{"type":44,"tag":198,"props":1656,"children":1657},{"class":200,"line":458},[1658,1662,1666],{"type":44,"tag":198,"props":1659,"children":1660},{"style":217},[1661],{"type":50,"value":801},{"type":44,"tag":198,"props":1663,"children":1664},{"style":295},[1665],{"type":50,"value":251},{"type":44,"tag":198,"props":1667,"children":1668},{"style":217},[1669],{"type":50,"value":332},{"type":44,"tag":198,"props":1671,"children":1672},{"class":200,"line":466},[1673],{"type":44,"tag":198,"props":1674,"children":1675},{"emptyLinePlaceholder":339},[1676],{"type":50,"value":342},{"type":44,"tag":198,"props":1678,"children":1679},{"class":200,"line":497},[1680,1684,1688,1693,1697,1702,1707,1712],{"type":44,"tag":198,"props":1681,"children":1682},{"style":283},[1683],{"type":50,"value":351},{"type":44,"tag":198,"props":1685,"children":1686},{"style":295},[1687],{"type":50,"value":230},{"type":44,"tag":198,"props":1689,"children":1690},{"style":211},[1691],{"type":50,"value":1692},"isLoading",{"type":44,"tag":198,"props":1694,"children":1695},{"style":295},[1696],{"type":50,"value":380},{"type":44,"tag":198,"props":1698,"children":1699},{"style":283},[1700],{"type":50,"value":1701},"return",{"type":44,"tag":198,"props":1703,"children":1704},{"style":217},[1705],{"type":50,"value":1706}," \u003C",{"type":44,"tag":198,"props":1708,"children":1709},{"style":243},[1710],{"type":50,"value":1711},"Loading",{"type":44,"tag":198,"props":1713,"children":1714},{"style":217},[1715],{"type":50,"value":1716}," \u002F>;\n",{"type":44,"tag":198,"props":1718,"children":1719},{"class":200,"line":812},[1720,1724,1728,1732,1736,1740,1744,1749,1754,1758,1762,1766,1770],{"type":44,"tag":198,"props":1721,"children":1722},{"style":283},[1723],{"type":50,"value":351},{"type":44,"tag":198,"props":1725,"children":1726},{"style":295},[1727],{"type":50,"value":230},{"type":44,"tag":198,"props":1729,"children":1730},{"style":211},[1731],{"type":50,"value":920},{"type":44,"tag":198,"props":1733,"children":1734},{"style":295},[1735],{"type":50,"value":380},{"type":44,"tag":198,"props":1737,"children":1738},{"style":283},[1739],{"type":50,"value":1701},{"type":44,"tag":198,"props":1741,"children":1742},{"style":217},[1743],{"type":50,"value":1706},{"type":44,"tag":198,"props":1745,"children":1746},{"style":243},[1747],{"type":50,"value":1748},"Error",{"type":44,"tag":198,"props":1750,"children":1751},{"style":205},[1752],{"type":50,"value":1753}," message",{"type":44,"tag":198,"props":1755,"children":1756},{"style":217},[1757],{"type":50,"value":1320},{"type":44,"tag":198,"props":1759,"children":1760},{"style":211},[1761],{"type":50,"value":920},{"type":44,"tag":198,"props":1763,"children":1764},{"style":217},[1765],{"type":50,"value":370},{"type":44,"tag":198,"props":1767,"children":1768},{"style":211},[1769],{"type":50,"value":929},{"type":44,"tag":198,"props":1771,"children":1772},{"style":217},[1773],{"type":50,"value":1774},"} \u002F>;\n",{"type":44,"tag":198,"props":1776,"children":1777},{"class":200,"line":820},[1778],{"type":44,"tag":198,"props":1779,"children":1780},{"emptyLinePlaceholder":339},[1781],{"type":50,"value":342},{"type":44,"tag":198,"props":1783,"children":1784},{"class":200,"line":856},[1785,1789,1793,1798,1803,1807,1812],{"type":44,"tag":198,"props":1786,"children":1787},{"style":283},[1788],{"type":50,"value":472},{"type":44,"tag":198,"props":1790,"children":1791},{"style":217},[1792],{"type":50,"value":1706},{"type":44,"tag":198,"props":1794,"children":1795},{"style":243},[1796],{"type":50,"value":1797},"Profile",{"type":44,"tag":198,"props":1799,"children":1800},{"style":205},[1801],{"type":50,"value":1802}," user",{"type":44,"tag":198,"props":1804,"children":1805},{"style":217},[1806],{"type":50,"value":1320},{"type":44,"tag":198,"props":1808,"children":1809},{"style":211},[1810],{"type":50,"value":1811},"data",{"type":44,"tag":198,"props":1813,"children":1814},{"style":217},[1815],{"type":50,"value":1774},{"type":44,"tag":198,"props":1817,"children":1818},{"class":200,"line":898},[1819],{"type":44,"tag":198,"props":1820,"children":1821},{"style":217},[1822],{"type":50,"value":1387},{"type":44,"tag":53,"props":1824,"children":1825},{},[1826,1831],{"type":44,"tag":57,"props":1827,"children":1828},{},[1829],{"type":50,"value":1830},"Mutations",{"type":50,"value":187},{"type":44,"tag":75,"props":1833,"children":1835},{"className":190,"code":1834,"language":192,"meta":84,"style":84},"import { useMutation, useQueryClient } from \"@tanstack\u002Freact-query\";\n\nfunction CreateUserForm() {\n  const queryClient = useQueryClient();\n\n  const mutation = useMutation({\n    mutationFn: createUser,\n    onSuccess: () => {\n      \u002F\u002F Invalidate and refetch\n      queryClient.invalidateQueries({ queryKey: [\"users\"] });\n    },\n  });\n\n  const handleSubmit = (data: UserData) => {\n    mutation.mutate(data);\n  };\n\n  return \u003CForm onSubmit={handleSubmit} isLoading={mutation.isPending} \u002F>;\n}\n",[1836],{"type":44,"tag":82,"props":1837,"children":1838},{"__ignoreMap":84},[1839,1888,1895,1915,1943,1950,1978,1999,2023,2031,2100,2107,2122,2129,2173,2206,2214,2221,2282],{"type":44,"tag":198,"props":1840,"children":1841},{"class":200,"line":201},[1842,1846,1850,1855,1859,1864,1868,1872,1876,1880,1884],{"type":44,"tag":198,"props":1843,"children":1844},{"style":283},[1845],{"type":50,"value":1032},{"type":44,"tag":198,"props":1847,"children":1848},{"style":217},[1849],{"type":50,"value":1037},{"type":44,"tag":198,"props":1851,"children":1852},{"style":211},[1853],{"type":50,"value":1854}," useMutation",{"type":44,"tag":198,"props":1856,"children":1857},{"style":217},[1858],{"type":50,"value":615},{"type":44,"tag":198,"props":1860,"children":1861},{"style":211},[1862],{"type":50,"value":1863}," useQueryClient",{"type":44,"tag":198,"props":1865,"children":1866},{"style":217},[1867],{"type":50,"value":1056},{"type":44,"tag":198,"props":1869,"children":1870},{"style":283},[1871],{"type":50,"value":1061},{"type":44,"tag":198,"props":1873,"children":1874},{"style":217},[1875],{"type":50,"value":636},{"type":44,"tag":198,"props":1877,"children":1878},{"style":306},[1879],{"type":50,"value":1070},{"type":44,"tag":198,"props":1881,"children":1882},{"style":217},[1883],{"type":50,"value":601},{"type":44,"tag":198,"props":1885,"children":1886},{"style":217},[1887],{"type":50,"value":332},{"type":44,"tag":198,"props":1889,"children":1890},{"class":200,"line":264},[1891],{"type":44,"tag":198,"props":1892,"children":1893},{"emptyLinePlaceholder":339},[1894],{"type":50,"value":342},{"type":44,"tag":198,"props":1896,"children":1897},{"class":200,"line":335},[1898,1902,1907,1911],{"type":44,"tag":198,"props":1899,"children":1900},{"style":205},[1901],{"type":50,"value":1458},{"type":44,"tag":198,"props":1903,"children":1904},{"style":289},[1905],{"type":50,"value":1906}," CreateUserForm",{"type":44,"tag":198,"props":1908,"children":1909},{"style":217},[1910],{"type":50,"value":490},{"type":44,"tag":198,"props":1912,"children":1913},{"style":217},[1914],{"type":50,"value":261},{"type":44,"tag":198,"props":1916,"children":1917},{"class":200,"line":345},[1918,1922,1927,1931,1935,1939],{"type":44,"tag":198,"props":1919,"children":1920},{"style":205},[1921],{"type":50,"value":270},{"type":44,"tag":198,"props":1923,"children":1924},{"style":211},[1925],{"type":50,"value":1926}," queryClient",{"type":44,"tag":198,"props":1928,"children":1929},{"style":217},[1930],{"type":50,"value":280},{"type":44,"tag":198,"props":1932,"children":1933},{"style":289},[1934],{"type":50,"value":1863},{"type":44,"tag":198,"props":1936,"children":1937},{"style":295},[1938],{"type":50,"value":490},{"type":44,"tag":198,"props":1940,"children":1941},{"style":217},[1942],{"type":50,"value":332},{"type":44,"tag":198,"props":1944,"children":1945},{"class":200,"line":388},[1946],{"type":44,"tag":198,"props":1947,"children":1948},{"emptyLinePlaceholder":339},[1949],{"type":50,"value":342},{"type":44,"tag":198,"props":1951,"children":1952},{"class":200,"line":449},[1953,1957,1962,1966,1970,1974],{"type":44,"tag":198,"props":1954,"children":1955},{"style":205},[1956],{"type":50,"value":270},{"type":44,"tag":198,"props":1958,"children":1959},{"style":211},[1960],{"type":50,"value":1961}," mutation",{"type":44,"tag":198,"props":1963,"children":1964},{"style":217},[1965],{"type":50,"value":280},{"type":44,"tag":198,"props":1967,"children":1968},{"style":289},[1969],{"type":50,"value":1854},{"type":44,"tag":198,"props":1971,"children":1972},{"style":295},[1973],{"type":50,"value":298},{"type":44,"tag":198,"props":1975,"children":1976},{"style":217},[1977],{"type":50,"value":385},{"type":44,"tag":198,"props":1979,"children":1980},{"class":200,"line":458},[1981,1986,1990,1995],{"type":44,"tag":198,"props":1982,"children":1983},{"style":295},[1984],{"type":50,"value":1985},"    mutationFn",{"type":44,"tag":198,"props":1987,"children":1988},{"style":217},[1989],{"type":50,"value":187},{"type":44,"tag":198,"props":1991,"children":1992},{"style":211},[1993],{"type":50,"value":1994}," createUser",{"type":44,"tag":198,"props":1996,"children":1997},{"style":217},[1998],{"type":50,"value":650},{"type":44,"tag":198,"props":2000,"children":2001},{"class":200,"line":466},[2002,2007,2011,2015,2019],{"type":44,"tag":198,"props":2003,"children":2004},{"style":289},[2005],{"type":50,"value":2006},"    onSuccess",{"type":44,"tag":198,"props":2008,"children":2009},{"style":217},[2010],{"type":50,"value":187},{"type":44,"tag":198,"props":2012,"children":2013},{"style":217},[2014],{"type":50,"value":1629},{"type":44,"tag":198,"props":2016,"children":2017},{"style":205},[2018],{"type":50,"value":256},{"type":44,"tag":198,"props":2020,"children":2021},{"style":217},[2022],{"type":50,"value":261},{"type":44,"tag":198,"props":2024,"children":2025},{"class":200,"line":497},[2026],{"type":44,"tag":198,"props":2027,"children":2028},{"style":1021},[2029],{"type":50,"value":2030},"      \u002F\u002F Invalidate and refetch\n",{"type":44,"tag":198,"props":2032,"children":2033},{"class":200,"line":812},[2034,2039,2043,2048,2052,2057,2062,2066,2070,2074,2079,2083,2088,2092,2096],{"type":44,"tag":198,"props":2035,"children":2036},{"style":211},[2037],{"type":50,"value":2038},"      queryClient",{"type":44,"tag":198,"props":2040,"children":2041},{"style":217},[2042],{"type":50,"value":370},{"type":44,"tag":198,"props":2044,"children":2045},{"style":289},[2046],{"type":50,"value":2047},"invalidateQueries",{"type":44,"tag":198,"props":2049,"children":2050},{"style":295},[2051],{"type":50,"value":298},{"type":44,"tag":198,"props":2053,"children":2054},{"style":217},[2055],{"type":50,"value":2056},"{",{"type":44,"tag":198,"props":2058,"children":2059},{"style":295},[2060],{"type":50,"value":2061}," queryKey",{"type":44,"tag":198,"props":2063,"children":2064},{"style":217},[2065],{"type":50,"value":187},{"type":44,"tag":198,"props":2067,"children":2068},{"style":295},[2069],{"type":50,"value":1582},{"type":44,"tag":198,"props":2071,"children":2072},{"style":217},[2073],{"type":50,"value":601},{"type":44,"tag":198,"props":2075,"children":2076},{"style":306},[2077],{"type":50,"value":2078},"users",{"type":44,"tag":198,"props":2080,"children":2081},{"style":217},[2082],{"type":50,"value":601},{"type":44,"tag":198,"props":2084,"children":2085},{"style":295},[2086],{"type":50,"value":2087},"] ",{"type":44,"tag":198,"props":2089,"children":2090},{"style":217},[2091],{"type":50,"value":1239},{"type":44,"tag":198,"props":2093,"children":2094},{"style":295},[2095],{"type":50,"value":251},{"type":44,"tag":198,"props":2097,"children":2098},{"style":217},[2099],{"type":50,"value":332},{"type":44,"tag":198,"props":2101,"children":2102},{"class":200,"line":820},[2103],{"type":44,"tag":198,"props":2104,"children":2105},{"style":217},[2106],{"type":50,"value":751},{"type":44,"tag":198,"props":2108,"children":2109},{"class":200,"line":856},[2110,2114,2118],{"type":44,"tag":198,"props":2111,"children":2112},{"style":217},[2113],{"type":50,"value":801},{"type":44,"tag":198,"props":2115,"children":2116},{"style":295},[2117],{"type":50,"value":251},{"type":44,"tag":198,"props":2119,"children":2120},{"style":217},[2121],{"type":50,"value":332},{"type":44,"tag":198,"props":2123,"children":2124},{"class":200,"line":898},[2125],{"type":44,"tag":198,"props":2126,"children":2127},{"emptyLinePlaceholder":339},[2128],{"type":50,"value":342},{"type":44,"tag":198,"props":2130,"children":2131},{"class":200,"line":940},[2132,2136,2141,2145,2149,2153,2157,2161,2165,2169],{"type":44,"tag":198,"props":2133,"children":2134},{"style":205},[2135],{"type":50,"value":270},{"type":44,"tag":198,"props":2137,"children":2138},{"style":211},[2139],{"type":50,"value":2140}," handleSubmit",{"type":44,"tag":198,"props":2142,"children":2143},{"style":217},[2144],{"type":50,"value":280},{"type":44,"tag":198,"props":2146,"children":2147},{"style":217},[2148],{"type":50,"value":230},{"type":44,"tag":198,"props":2150,"children":2151},{"style":233},[2152],{"type":50,"value":1811},{"type":44,"tag":198,"props":2154,"children":2155},{"style":217},[2156],{"type":50,"value":187},{"type":44,"tag":198,"props":2158,"children":2159},{"style":243},[2160],{"type":50,"value":557},{"type":44,"tag":198,"props":2162,"children":2163},{"style":217},[2164],{"type":50,"value":251},{"type":44,"tag":198,"props":2166,"children":2167},{"style":205},[2168],{"type":50,"value":256},{"type":44,"tag":198,"props":2170,"children":2171},{"style":217},[2172],{"type":50,"value":261},{"type":44,"tag":198,"props":2174,"children":2175},{"class":200,"line":948},[2176,2181,2185,2190,2194,2198,2202],{"type":44,"tag":198,"props":2177,"children":2178},{"style":211},[2179],{"type":50,"value":2180},"    mutation",{"type":44,"tag":198,"props":2182,"children":2183},{"style":217},[2184],{"type":50,"value":370},{"type":44,"tag":198,"props":2186,"children":2187},{"style":289},[2188],{"type":50,"value":2189},"mutate",{"type":44,"tag":198,"props":2191,"children":2192},{"style":295},[2193],{"type":50,"value":298},{"type":44,"tag":198,"props":2195,"children":2196},{"style":211},[2197],{"type":50,"value":1811},{"type":44,"tag":198,"props":2199,"children":2200},{"style":295},[2201],{"type":50,"value":251},{"type":44,"tag":198,"props":2203,"children":2204},{"style":217},[2205],{"type":50,"value":332},{"type":44,"tag":198,"props":2207,"children":2208},{"class":200,"line":956},[2209],{"type":44,"tag":198,"props":2210,"children":2211},{"style":217},[2212],{"type":50,"value":2213},"  };\n",{"type":44,"tag":198,"props":2215,"children":2216},{"class":200,"line":984},[2217],{"type":44,"tag":198,"props":2218,"children":2219},{"emptyLinePlaceholder":339},[2220],{"type":50,"value":342},{"type":44,"tag":198,"props":2222,"children":2223},{"class":200,"line":1368},[2224,2228,2232,2237,2242,2246,2251,2256,2260,2264,2269,2273,2278],{"type":44,"tag":198,"props":2225,"children":2226},{"style":283},[2227],{"type":50,"value":472},{"type":44,"tag":198,"props":2229,"children":2230},{"style":217},[2231],{"type":50,"value":1706},{"type":44,"tag":198,"props":2233,"children":2234},{"style":243},[2235],{"type":50,"value":2236},"Form",{"type":44,"tag":198,"props":2238,"children":2239},{"style":205},[2240],{"type":50,"value":2241}," onSubmit",{"type":44,"tag":198,"props":2243,"children":2244},{"style":217},[2245],{"type":50,"value":1320},{"type":44,"tag":198,"props":2247,"children":2248},{"style":211},[2249],{"type":50,"value":2250},"handleSubmit",{"type":44,"tag":198,"props":2252,"children":2253},{"style":217},[2254],{"type":50,"value":2255},"} ",{"type":44,"tag":198,"props":2257,"children":2258},{"style":205},[2259],{"type":50,"value":1692},{"type":44,"tag":198,"props":2261,"children":2262},{"style":217},[2263],{"type":50,"value":1320},{"type":44,"tag":198,"props":2265,"children":2266},{"style":211},[2267],{"type":50,"value":2268},"mutation",{"type":44,"tag":198,"props":2270,"children":2271},{"style":217},[2272],{"type":50,"value":370},{"type":44,"tag":198,"props":2274,"children":2275},{"style":211},[2276],{"type":50,"value":2277},"isPending",{"type":44,"tag":198,"props":2279,"children":2280},{"style":217},[2281],{"type":50,"value":1774},{"type":44,"tag":198,"props":2283,"children":2284},{"class":200,"line":1381},[2285],{"type":44,"tag":198,"props":2286,"children":2287},{"style":217},[2288],{"type":50,"value":1387},{"type":44,"tag":991,"props":2290,"children":2291},{},[],{"type":44,"tag":172,"props":2293,"children":2295},{"id":2294},"_3-error-handling",[2296],{"type":50,"value":2297},"3. Error Handling",{"type":44,"tag":53,"props":2299,"children":2300},{},[2301,2306],{"type":44,"tag":57,"props":2302,"children":2303},{},[2304],{"type":50,"value":2305},"Comprehensive error handling",{"type":50,"value":187},{"type":44,"tag":75,"props":2308,"children":2310},{"className":190,"code":2309,"language":192,"meta":84,"style":84},"class ApiError extends Error {\n  constructor(message: string, public status: number, public code?: string) {\n    super(message);\n    this.name = \"ApiError\";\n  }\n}\n\nconst fetchWithErrorHandling = async (url: string, options?: RequestInit) => {\n  try {\n    const response = await fetch(url, options);\n\n    if (!response.ok) {\n      const error = await response.json().catch(() => ({}));\n      throw new ApiError(\n        error.message || \"Request failed\",\n        response.status,\n        error.code\n      );\n    }\n\n    return response.json();\n  } catch (error) {\n    if (error instanceof ApiError) {\n      throw error;\n    }\n    \u002F\u002F Network error (no internet, timeout, etc.)\n    throw new ApiError(\"Network error\", 0, \"NETWORK_ERROR\");\n  }\n};\n",[2311],{"type":44,"tag":82,"props":2312,"children":2313},{"__ignoreMap":84},[2314,2340,2417,2441,2475,2482,2489,2496,2563,2575,2622,2629,2665,2740,2761,2799,2819,2835,2847,2855,2863,2892,2921,2954,2970,2978,2987,3054,3062],{"type":44,"tag":198,"props":2315,"children":2316},{"class":200,"line":201},[2317,2322,2327,2332,2336],{"type":44,"tag":198,"props":2318,"children":2319},{"style":205},[2320],{"type":50,"value":2321},"class",{"type":44,"tag":198,"props":2323,"children":2324},{"style":243},[2325],{"type":50,"value":2326}," ApiError",{"type":44,"tag":198,"props":2328,"children":2329},{"style":205},[2330],{"type":50,"value":2331}," extends",{"type":44,"tag":198,"props":2333,"children":2334},{"style":243},[2335],{"type":50,"value":404},{"type":44,"tag":198,"props":2337,"children":2338},{"style":217},[2339],{"type":50,"value":261},{"type":44,"tag":198,"props":2341,"children":2342},{"class":200,"line":264},[2343,2348,2352,2356,2360,2364,2368,2373,2378,2382,2387,2391,2395,2400,2405,2409,2413],{"type":44,"tag":198,"props":2344,"children":2345},{"style":205},[2346],{"type":50,"value":2347},"  constructor",{"type":44,"tag":198,"props":2349,"children":2350},{"style":217},[2351],{"type":50,"value":298},{"type":44,"tag":198,"props":2353,"children":2354},{"style":233},[2355],{"type":50,"value":929},{"type":44,"tag":198,"props":2357,"children":2358},{"style":217},[2359],{"type":50,"value":187},{"type":44,"tag":198,"props":2361,"children":2362},{"style":243},[2363],{"type":50,"value":246},{"type":44,"tag":198,"props":2365,"children":2366},{"style":217},[2367],{"type":50,"value":615},{"type":44,"tag":198,"props":2369,"children":2370},{"style":205},[2371],{"type":50,"value":2372}," public",{"type":44,"tag":198,"props":2374,"children":2375},{"style":233},[2376],{"type":50,"value":2377}," status",{"type":44,"tag":198,"props":2379,"children":2380},{"style":217},[2381],{"type":50,"value":187},{"type":44,"tag":198,"props":2383,"children":2384},{"style":243},[2385],{"type":50,"value":2386}," number",{"type":44,"tag":198,"props":2388,"children":2389},{"style":217},[2390],{"type":50,"value":615},{"type":44,"tag":198,"props":2392,"children":2393},{"style":205},[2394],{"type":50,"value":2372},{"type":44,"tag":198,"props":2396,"children":2397},{"style":233},[2398],{"type":50,"value":2399}," code",{"type":44,"tag":198,"props":2401,"children":2402},{"style":217},[2403],{"type":50,"value":2404},"?:",{"type":44,"tag":198,"props":2406,"children":2407},{"style":243},[2408],{"type":50,"value":246},{"type":44,"tag":198,"props":2410,"children":2411},{"style":217},[2412],{"type":50,"value":251},{"type":44,"tag":198,"props":2414,"children":2415},{"style":217},[2416],{"type":50,"value":261},{"type":44,"tag":198,"props":2418,"children":2419},{"class":200,"line":335},[2420,2425,2429,2433,2437],{"type":44,"tag":198,"props":2421,"children":2422},{"style":211},[2423],{"type":50,"value":2424},"    super",{"type":44,"tag":198,"props":2426,"children":2427},{"style":295},[2428],{"type":50,"value":298},{"type":44,"tag":198,"props":2430,"children":2431},{"style":211},[2432],{"type":50,"value":929},{"type":44,"tag":198,"props":2434,"children":2435},{"style":295},[2436],{"type":50,"value":251},{"type":44,"tag":198,"props":2438,"children":2439},{"style":217},[2440],{"type":50,"value":332},{"type":44,"tag":198,"props":2442,"children":2443},{"class":200,"line":345},[2444,2449,2454,2458,2462,2467,2471],{"type":44,"tag":198,"props":2445,"children":2446},{"style":217},[2447],{"type":50,"value":2448},"    this.",{"type":44,"tag":198,"props":2450,"children":2451},{"style":211},[2452],{"type":50,"value":2453},"name",{"type":44,"tag":198,"props":2455,"children":2456},{"style":217},[2457],{"type":50,"value":280},{"type":44,"tag":198,"props":2459,"children":2460},{"style":217},[2461],{"type":50,"value":636},{"type":44,"tag":198,"props":2463,"children":2464},{"style":306},[2465],{"type":50,"value":2466},"ApiError",{"type":44,"tag":198,"props":2468,"children":2469},{"style":217},[2470],{"type":50,"value":601},{"type":44,"tag":198,"props":2472,"children":2473},{"style":217},[2474],{"type":50,"value":332},{"type":44,"tag":198,"props":2476,"children":2477},{"class":200,"line":388},[2478],{"type":44,"tag":198,"props":2479,"children":2480},{"style":217},[2481],{"type":50,"value":455},{"type":44,"tag":198,"props":2483,"children":2484},{"class":200,"line":449},[2485],{"type":44,"tag":198,"props":2486,"children":2487},{"style":217},[2488],{"type":50,"value":1387},{"type":44,"tag":198,"props":2490,"children":2491},{"class":200,"line":458},[2492],{"type":44,"tag":198,"props":2493,"children":2494},{"emptyLinePlaceholder":339},[2495],{"type":50,"value":342},{"type":44,"tag":198,"props":2497,"children":2498},{"class":200,"line":466},[2499,2503,2508,2512,2516,2520,2525,2529,2533,2537,2542,2546,2551,2555,2559],{"type":44,"tag":198,"props":2500,"children":2501},{"style":205},[2502],{"type":50,"value":208},{"type":44,"tag":198,"props":2504,"children":2505},{"style":211},[2506],{"type":50,"value":2507}," fetchWithErrorHandling ",{"type":44,"tag":198,"props":2509,"children":2510},{"style":217},[2511],{"type":50,"value":220},{"type":44,"tag":198,"props":2513,"children":2514},{"style":205},[2515],{"type":50,"value":225},{"type":44,"tag":198,"props":2517,"children":2518},{"style":217},[2519],{"type":50,"value":230},{"type":44,"tag":198,"props":2521,"children":2522},{"style":233},[2523],{"type":50,"value":2524},"url",{"type":44,"tag":198,"props":2526,"children":2527},{"style":217},[2528],{"type":50,"value":187},{"type":44,"tag":198,"props":2530,"children":2531},{"style":243},[2532],{"type":50,"value":246},{"type":44,"tag":198,"props":2534,"children":2535},{"style":217},[2536],{"type":50,"value":615},{"type":44,"tag":198,"props":2538,"children":2539},{"style":233},[2540],{"type":50,"value":2541}," options",{"type":44,"tag":198,"props":2543,"children":2544},{"style":217},[2545],{"type":50,"value":2404},{"type":44,"tag":198,"props":2547,"children":2548},{"style":243},[2549],{"type":50,"value":2550}," RequestInit",{"type":44,"tag":198,"props":2552,"children":2553},{"style":217},[2554],{"type":50,"value":251},{"type":44,"tag":198,"props":2556,"children":2557},{"style":205},[2558],{"type":50,"value":256},{"type":44,"tag":198,"props":2560,"children":2561},{"style":217},[2562],{"type":50,"value":261},{"type":44,"tag":198,"props":2564,"children":2565},{"class":200,"line":497},[2566,2571],{"type":44,"tag":198,"props":2567,"children":2568},{"style":283},[2569],{"type":50,"value":2570},"  try",{"type":44,"tag":198,"props":2572,"children":2573},{"style":217},[2574],{"type":50,"value":261},{"type":44,"tag":198,"props":2576,"children":2577},{"class":200,"line":812},[2578,2582,2586,2590,2594,2598,2602,2606,2610,2614,2618],{"type":44,"tag":198,"props":2579,"children":2580},{"style":205},[2581],{"type":50,"value":862},{"type":44,"tag":198,"props":2583,"children":2584},{"style":211},[2585],{"type":50,"value":275},{"type":44,"tag":198,"props":2587,"children":2588},{"style":217},[2589],{"type":50,"value":280},{"type":44,"tag":198,"props":2591,"children":2592},{"style":283},[2593],{"type":50,"value":286},{"type":44,"tag":198,"props":2595,"children":2596},{"style":289},[2597],{"type":50,"value":292},{"type":44,"tag":198,"props":2599,"children":2600},{"style":295},[2601],{"type":50,"value":298},{"type":44,"tag":198,"props":2603,"children":2604},{"style":211},[2605],{"type":50,"value":2524},{"type":44,"tag":198,"props":2607,"children":2608},{"style":217},[2609],{"type":50,"value":615},{"type":44,"tag":198,"props":2611,"children":2612},{"style":211},[2613],{"type":50,"value":2541},{"type":44,"tag":198,"props":2615,"children":2616},{"style":295},[2617],{"type":50,"value":251},{"type":44,"tag":198,"props":2619,"children":2620},{"style":217},[2621],{"type":50,"value":332},{"type":44,"tag":198,"props":2623,"children":2624},{"class":200,"line":820},[2625],{"type":44,"tag":198,"props":2626,"children":2627},{"emptyLinePlaceholder":339},[2628],{"type":50,"value":342},{"type":44,"tag":198,"props":2630,"children":2631},{"class":200,"line":856},[2632,2637,2641,2645,2649,2653,2657,2661],{"type":44,"tag":198,"props":2633,"children":2634},{"style":283},[2635],{"type":50,"value":2636},"    if",{"type":44,"tag":198,"props":2638,"children":2639},{"style":295},[2640],{"type":50,"value":230},{"type":44,"tag":198,"props":2642,"children":2643},{"style":217},[2644],{"type":50,"value":360},{"type":44,"tag":198,"props":2646,"children":2647},{"style":211},[2648],{"type":50,"value":365},{"type":44,"tag":198,"props":2650,"children":2651},{"style":217},[2652],{"type":50,"value":370},{"type":44,"tag":198,"props":2654,"children":2655},{"style":211},[2656],{"type":50,"value":375},{"type":44,"tag":198,"props":2658,"children":2659},{"style":295},[2660],{"type":50,"value":380},{"type":44,"tag":198,"props":2662,"children":2663},{"style":217},[2664],{"type":50,"value":385},{"type":44,"tag":198,"props":2666,"children":2667},{"class":200,"line":898},[2668,2673,2677,2681,2685,2689,2693,2697,2701,2705,2710,2714,2718,2722,2726,2731,2736],{"type":44,"tag":198,"props":2669,"children":2670},{"style":205},[2671],{"type":50,"value":2672},"      const",{"type":44,"tag":198,"props":2674,"children":2675},{"style":211},[2676],{"type":50,"value":867},{"type":44,"tag":198,"props":2678,"children":2679},{"style":217},[2680],{"type":50,"value":280},{"type":44,"tag":198,"props":2682,"children":2683},{"style":283},[2684],{"type":50,"value":286},{"type":44,"tag":198,"props":2686,"children":2687},{"style":211},[2688],{"type":50,"value":275},{"type":44,"tag":198,"props":2690,"children":2691},{"style":217},[2692],{"type":50,"value":370},{"type":44,"tag":198,"props":2694,"children":2695},{"style":289},[2696],{"type":50,"value":485},{"type":44,"tag":198,"props":2698,"children":2699},{"style":295},[2700],{"type":50,"value":490},{"type":44,"tag":198,"props":2702,"children":2703},{"style":217},[2704],{"type":50,"value":370},{"type":44,"tag":198,"props":2706,"children":2707},{"style":289},[2708],{"type":50,"value":2709},"catch",{"type":44,"tag":198,"props":2711,"children":2712},{"style":295},[2713],{"type":50,"value":298},{"type":44,"tag":198,"props":2715,"children":2716},{"style":217},[2717],{"type":50,"value":490},{"type":44,"tag":198,"props":2719,"children":2720},{"style":205},[2721],{"type":50,"value":256},{"type":44,"tag":198,"props":2723,"children":2724},{"style":295},[2725],{"type":50,"value":230},{"type":44,"tag":198,"props":2727,"children":2728},{"style":217},[2729],{"type":50,"value":2730},"{}",{"type":44,"tag":198,"props":2732,"children":2733},{"style":295},[2734],{"type":50,"value":2735},"))",{"type":44,"tag":198,"props":2737,"children":2738},{"style":217},[2739],{"type":50,"value":332},{"type":44,"tag":198,"props":2741,"children":2742},{"class":200,"line":940},[2743,2748,2752,2756],{"type":44,"tag":198,"props":2744,"children":2745},{"style":283},[2746],{"type":50,"value":2747},"      throw",{"type":44,"tag":198,"props":2749,"children":2750},{"style":217},[2751],{"type":50,"value":399},{"type":44,"tag":198,"props":2753,"children":2754},{"style":289},[2755],{"type":50,"value":2326},{"type":44,"tag":198,"props":2757,"children":2758},{"style":295},[2759],{"type":50,"value":2760},"(\n",{"type":44,"tag":198,"props":2762,"children":2763},{"class":200,"line":948},[2764,2769,2773,2777,2782,2786,2791,2795],{"type":44,"tag":198,"props":2765,"children":2766},{"style":211},[2767],{"type":50,"value":2768},"        error",{"type":44,"tag":198,"props":2770,"children":2771},{"style":217},[2772],{"type":50,"value":370},{"type":44,"tag":198,"props":2774,"children":2775},{"style":211},[2776],{"type":50,"value":929},{"type":44,"tag":198,"props":2778,"children":2779},{"style":217},[2780],{"type":50,"value":2781}," ||",{"type":44,"tag":198,"props":2783,"children":2784},{"style":217},[2785],{"type":50,"value":636},{"type":44,"tag":198,"props":2787,"children":2788},{"style":306},[2789],{"type":50,"value":2790},"Request failed",{"type":44,"tag":198,"props":2792,"children":2793},{"style":217},[2794],{"type":50,"value":601},{"type":44,"tag":198,"props":2796,"children":2797},{"style":217},[2798],{"type":50,"value":650},{"type":44,"tag":198,"props":2800,"children":2801},{"class":200,"line":956},[2802,2807,2811,2815],{"type":44,"tag":198,"props":2803,"children":2804},{"style":211},[2805],{"type":50,"value":2806},"        response",{"type":44,"tag":198,"props":2808,"children":2809},{"style":217},[2810],{"type":50,"value":370},{"type":44,"tag":198,"props":2812,"children":2813},{"style":211},[2814],{"type":50,"value":434},{"type":44,"tag":198,"props":2816,"children":2817},{"style":217},[2818],{"type":50,"value":650},{"type":44,"tag":198,"props":2820,"children":2821},{"class":200,"line":984},[2822,2826,2830],{"type":44,"tag":198,"props":2823,"children":2824},{"style":211},[2825],{"type":50,"value":2768},{"type":44,"tag":198,"props":2827,"children":2828},{"style":217},[2829],{"type":50,"value":370},{"type":44,"tag":198,"props":2831,"children":2832},{"style":211},[2833],{"type":50,"value":2834},"code\n",{"type":44,"tag":198,"props":2836,"children":2837},{"class":200,"line":1368},[2838,2843],{"type":44,"tag":198,"props":2839,"children":2840},{"style":295},[2841],{"type":50,"value":2842},"      )",{"type":44,"tag":198,"props":2844,"children":2845},{"style":217},[2846],{"type":50,"value":332},{"type":44,"tag":198,"props":2848,"children":2849},{"class":200,"line":1381},[2850],{"type":44,"tag":198,"props":2851,"children":2852},{"style":217},[2853],{"type":50,"value":2854},"    }\n",{"type":44,"tag":198,"props":2856,"children":2858},{"class":200,"line":2857},20,[2859],{"type":44,"tag":198,"props":2860,"children":2861},{"emptyLinePlaceholder":339},[2862],{"type":50,"value":342},{"type":44,"tag":198,"props":2864,"children":2866},{"class":200,"line":2865},21,[2867,2872,2876,2880,2884,2888],{"type":44,"tag":198,"props":2868,"children":2869},{"style":283},[2870],{"type":50,"value":2871},"    return",{"type":44,"tag":198,"props":2873,"children":2874},{"style":211},[2875],{"type":50,"value":275},{"type":44,"tag":198,"props":2877,"children":2878},{"style":217},[2879],{"type":50,"value":370},{"type":44,"tag":198,"props":2881,"children":2882},{"style":289},[2883],{"type":50,"value":485},{"type":44,"tag":198,"props":2885,"children":2886},{"style":295},[2887],{"type":50,"value":490},{"type":44,"tag":198,"props":2889,"children":2890},{"style":217},[2891],{"type":50,"value":332},{"type":44,"tag":198,"props":2893,"children":2895},{"class":200,"line":2894},22,[2896,2900,2905,2909,2913,2917],{"type":44,"tag":198,"props":2897,"children":2898},{"style":217},[2899],{"type":50,"value":801},{"type":44,"tag":198,"props":2901,"children":2902},{"style":283},[2903],{"type":50,"value":2904}," catch",{"type":44,"tag":198,"props":2906,"children":2907},{"style":295},[2908],{"type":50,"value":230},{"type":44,"tag":198,"props":2910,"children":2911},{"style":211},[2912],{"type":50,"value":920},{"type":44,"tag":198,"props":2914,"children":2915},{"style":295},[2916],{"type":50,"value":380},{"type":44,"tag":198,"props":2918,"children":2919},{"style":217},[2920],{"type":50,"value":385},{"type":44,"tag":198,"props":2922,"children":2924},{"class":200,"line":2923},23,[2925,2929,2933,2937,2942,2946,2950],{"type":44,"tag":198,"props":2926,"children":2927},{"style":283},[2928],{"type":50,"value":2636},{"type":44,"tag":198,"props":2930,"children":2931},{"style":295},[2932],{"type":50,"value":230},{"type":44,"tag":198,"props":2934,"children":2935},{"style":211},[2936],{"type":50,"value":920},{"type":44,"tag":198,"props":2938,"children":2939},{"style":217},[2940],{"type":50,"value":2941}," instanceof",{"type":44,"tag":198,"props":2943,"children":2944},{"style":243},[2945],{"type":50,"value":2326},{"type":44,"tag":198,"props":2947,"children":2948},{"style":295},[2949],{"type":50,"value":380},{"type":44,"tag":198,"props":2951,"children":2952},{"style":217},[2953],{"type":50,"value":385},{"type":44,"tag":198,"props":2955,"children":2957},{"class":200,"line":2956},24,[2958,2962,2966],{"type":44,"tag":198,"props":2959,"children":2960},{"style":283},[2961],{"type":50,"value":2747},{"type":44,"tag":198,"props":2963,"children":2964},{"style":211},[2965],{"type":50,"value":867},{"type":44,"tag":198,"props":2967,"children":2968},{"style":217},[2969],{"type":50,"value":332},{"type":44,"tag":198,"props":2971,"children":2973},{"class":200,"line":2972},25,[2974],{"type":44,"tag":198,"props":2975,"children":2976},{"style":217},[2977],{"type":50,"value":2854},{"type":44,"tag":198,"props":2979,"children":2981},{"class":200,"line":2980},26,[2982],{"type":44,"tag":198,"props":2983,"children":2984},{"style":1021},[2985],{"type":50,"value":2986},"    \u002F\u002F Network error (no internet, timeout, etc.)\n",{"type":44,"tag":198,"props":2988,"children":2990},{"class":200,"line":2989},27,[2991,2995,2999,3003,3007,3011,3016,3020,3024,3029,3033,3037,3042,3046,3050],{"type":44,"tag":198,"props":2992,"children":2993},{"style":283},[2994],{"type":50,"value":394},{"type":44,"tag":198,"props":2996,"children":2997},{"style":217},[2998],{"type":50,"value":399},{"type":44,"tag":198,"props":3000,"children":3001},{"style":289},[3002],{"type":50,"value":2326},{"type":44,"tag":198,"props":3004,"children":3005},{"style":295},[3006],{"type":50,"value":298},{"type":44,"tag":198,"props":3008,"children":3009},{"style":217},[3010],{"type":50,"value":601},{"type":44,"tag":198,"props":3012,"children":3013},{"style":306},[3014],{"type":50,"value":3015},"Network error",{"type":44,"tag":198,"props":3017,"children":3018},{"style":217},[3019],{"type":50,"value":601},{"type":44,"tag":198,"props":3021,"children":3022},{"style":217},[3023],{"type":50,"value":615},{"type":44,"tag":198,"props":3025,"children":3026},{"style":1164},[3027],{"type":50,"value":3028}," 0",{"type":44,"tag":198,"props":3030,"children":3031},{"style":217},[3032],{"type":50,"value":615},{"type":44,"tag":198,"props":3034,"children":3035},{"style":217},[3036],{"type":50,"value":636},{"type":44,"tag":198,"props":3038,"children":3039},{"style":306},[3040],{"type":50,"value":3041},"NETWORK_ERROR",{"type":44,"tag":198,"props":3043,"children":3044},{"style":217},[3045],{"type":50,"value":601},{"type":44,"tag":198,"props":3047,"children":3048},{"style":295},[3049],{"type":50,"value":251},{"type":44,"tag":198,"props":3051,"children":3052},{"style":217},[3053],{"type":50,"value":332},{"type":44,"tag":198,"props":3055,"children":3057},{"class":200,"line":3056},28,[3058],{"type":44,"tag":198,"props":3059,"children":3060},{"style":217},[3061],{"type":50,"value":455},{"type":44,"tag":198,"props":3063,"children":3065},{"class":200,"line":3064},29,[3066],{"type":44,"tag":198,"props":3067,"children":3068},{"style":217},[3069],{"type":50,"value":503},{"type":44,"tag":53,"props":3071,"children":3072},{},[3073,3078],{"type":44,"tag":57,"props":3074,"children":3075},{},[3076],{"type":50,"value":3077},"Retry logic",{"type":50,"value":187},{"type":44,"tag":75,"props":3080,"children":3082},{"className":190,"code":3081,"language":192,"meta":84,"style":84},"const fetchWithRetry = async (\n  url: string,\n  options?: RequestInit,\n  retries = 3\n) => {\n  for (let i = 0; i \u003C retries; i++) {\n    try {\n      return await fetchWithErrorHandling(url, options);\n    } catch (error) {\n      if (i === retries - 1) throw error;\n      \u002F\u002F Exponential backoff\n      await new Promise((r) => setTimeout(r, Math.pow(2, i) * 1000));\n    }\n  }\n};\n",[3083],{"type":44,"tag":82,"props":3084,"children":3085},{"__ignoreMap":84},[3086,3110,3130,3150,3167,3183,3252,3264,3305,3333,3386,3394,3501,3508,3515],{"type":44,"tag":198,"props":3087,"children":3088},{"class":200,"line":201},[3089,3093,3098,3102,3106],{"type":44,"tag":198,"props":3090,"children":3091},{"style":205},[3092],{"type":50,"value":208},{"type":44,"tag":198,"props":3094,"children":3095},{"style":211},[3096],{"type":50,"value":3097}," fetchWithRetry ",{"type":44,"tag":198,"props":3099,"children":3100},{"style":217},[3101],{"type":50,"value":220},{"type":44,"tag":198,"props":3103,"children":3104},{"style":205},[3105],{"type":50,"value":225},{"type":44,"tag":198,"props":3107,"children":3108},{"style":211},[3109],{"type":50,"value":1297},{"type":44,"tag":198,"props":3111,"children":3112},{"class":200,"line":264},[3113,3118,3122,3126],{"type":44,"tag":198,"props":3114,"children":3115},{"style":233},[3116],{"type":50,"value":3117},"  url",{"type":44,"tag":198,"props":3119,"children":3120},{"style":217},[3121],{"type":50,"value":187},{"type":44,"tag":198,"props":3123,"children":3124},{"style":243},[3125],{"type":50,"value":246},{"type":44,"tag":198,"props":3127,"children":3128},{"style":217},[3129],{"type":50,"value":650},{"type":44,"tag":198,"props":3131,"children":3132},{"class":200,"line":335},[3133,3138,3142,3146],{"type":44,"tag":198,"props":3134,"children":3135},{"style":233},[3136],{"type":50,"value":3137},"  options",{"type":44,"tag":198,"props":3139,"children":3140},{"style":217},[3141],{"type":50,"value":2404},{"type":44,"tag":198,"props":3143,"children":3144},{"style":243},[3145],{"type":50,"value":2550},{"type":44,"tag":198,"props":3147,"children":3148},{"style":217},[3149],{"type":50,"value":650},{"type":44,"tag":198,"props":3151,"children":3152},{"class":200,"line":345},[3153,3158,3162],{"type":44,"tag":198,"props":3154,"children":3155},{"style":211},[3156],{"type":50,"value":3157},"  retries ",{"type":44,"tag":198,"props":3159,"children":3160},{"style":217},[3161],{"type":50,"value":220},{"type":44,"tag":198,"props":3163,"children":3164},{"style":1164},[3165],{"type":50,"value":3166}," 3\n",{"type":44,"tag":198,"props":3168,"children":3169},{"class":200,"line":388},[3170,3174,3179],{"type":44,"tag":198,"props":3171,"children":3172},{"style":211},[3173],{"type":50,"value":380},{"type":44,"tag":198,"props":3175,"children":3176},{"style":205},[3177],{"type":50,"value":3178},"=>",{"type":44,"tag":198,"props":3180,"children":3181},{"style":217},[3182],{"type":50,"value":261},{"type":44,"tag":198,"props":3184,"children":3185},{"class":200,"line":449},[3186,3191,3195,3200,3205,3209,3213,3218,3222,3226,3231,3235,3239,3244,3248],{"type":44,"tag":198,"props":3187,"children":3188},{"style":283},[3189],{"type":50,"value":3190},"  for",{"type":44,"tag":198,"props":3192,"children":3193},{"style":295},[3194],{"type":50,"value":230},{"type":44,"tag":198,"props":3196,"children":3197},{"style":205},[3198],{"type":50,"value":3199},"let",{"type":44,"tag":198,"props":3201,"children":3202},{"style":211},[3203],{"type":50,"value":3204}," i",{"type":44,"tag":198,"props":3206,"children":3207},{"style":217},[3208],{"type":50,"value":280},{"type":44,"tag":198,"props":3210,"children":3211},{"style":1164},[3212],{"type":50,"value":3028},{"type":44,"tag":198,"props":3214,"children":3215},{"style":217},[3216],{"type":50,"value":3217},";",{"type":44,"tag":198,"props":3219,"children":3220},{"style":211},[3221],{"type":50,"value":3204},{"type":44,"tag":198,"props":3223,"children":3224},{"style":217},[3225],{"type":50,"value":1706},{"type":44,"tag":198,"props":3227,"children":3228},{"style":211},[3229],{"type":50,"value":3230}," retries",{"type":44,"tag":198,"props":3232,"children":3233},{"style":217},[3234],{"type":50,"value":3217},{"type":44,"tag":198,"props":3236,"children":3237},{"style":211},[3238],{"type":50,"value":3204},{"type":44,"tag":198,"props":3240,"children":3241},{"style":217},[3242],{"type":50,"value":3243},"++",{"type":44,"tag":198,"props":3245,"children":3246},{"style":295},[3247],{"type":50,"value":380},{"type":44,"tag":198,"props":3249,"children":3250},{"style":217},[3251],{"type":50,"value":385},{"type":44,"tag":198,"props":3253,"children":3254},{"class":200,"line":458},[3255,3260],{"type":44,"tag":198,"props":3256,"children":3257},{"style":283},[3258],{"type":50,"value":3259},"    try",{"type":44,"tag":198,"props":3261,"children":3262},{"style":217},[3263],{"type":50,"value":261},{"type":44,"tag":198,"props":3265,"children":3266},{"class":200,"line":466},[3267,3272,3276,3281,3285,3289,3293,3297,3301],{"type":44,"tag":198,"props":3268,"children":3269},{"style":283},[3270],{"type":50,"value":3271},"      return",{"type":44,"tag":198,"props":3273,"children":3274},{"style":283},[3275],{"type":50,"value":286},{"type":44,"tag":198,"props":3277,"children":3278},{"style":289},[3279],{"type":50,"value":3280}," fetchWithErrorHandling",{"type":44,"tag":198,"props":3282,"children":3283},{"style":295},[3284],{"type":50,"value":298},{"type":44,"tag":198,"props":3286,"children":3287},{"style":211},[3288],{"type":50,"value":2524},{"type":44,"tag":198,"props":3290,"children":3291},{"style":217},[3292],{"type":50,"value":615},{"type":44,"tag":198,"props":3294,"children":3295},{"style":211},[3296],{"type":50,"value":2541},{"type":44,"tag":198,"props":3298,"children":3299},{"style":295},[3300],{"type":50,"value":251},{"type":44,"tag":198,"props":3302,"children":3303},{"style":217},[3304],{"type":50,"value":332},{"type":44,"tag":198,"props":3306,"children":3307},{"class":200,"line":497},[3308,3313,3317,3321,3325,3329],{"type":44,"tag":198,"props":3309,"children":3310},{"style":217},[3311],{"type":50,"value":3312},"    }",{"type":44,"tag":198,"props":3314,"children":3315},{"style":283},[3316],{"type":50,"value":2904},{"type":44,"tag":198,"props":3318,"children":3319},{"style":295},[3320],{"type":50,"value":230},{"type":44,"tag":198,"props":3322,"children":3323},{"style":211},[3324],{"type":50,"value":920},{"type":44,"tag":198,"props":3326,"children":3327},{"style":295},[3328],{"type":50,"value":380},{"type":44,"tag":198,"props":3330,"children":3331},{"style":217},[3332],{"type":50,"value":385},{"type":44,"tag":198,"props":3334,"children":3335},{"class":200,"line":812},[3336,3341,3345,3350,3355,3359,3364,3369,3373,3378,3382],{"type":44,"tag":198,"props":3337,"children":3338},{"style":283},[3339],{"type":50,"value":3340},"      if",{"type":44,"tag":198,"props":3342,"children":3343},{"style":295},[3344],{"type":50,"value":230},{"type":44,"tag":198,"props":3346,"children":3347},{"style":211},[3348],{"type":50,"value":3349},"i",{"type":44,"tag":198,"props":3351,"children":3352},{"style":217},[3353],{"type":50,"value":3354}," ===",{"type":44,"tag":198,"props":3356,"children":3357},{"style":211},[3358],{"type":50,"value":3230},{"type":44,"tag":198,"props":3360,"children":3361},{"style":217},[3362],{"type":50,"value":3363}," -",{"type":44,"tag":198,"props":3365,"children":3366},{"style":1164},[3367],{"type":50,"value":3368}," 1",{"type":44,"tag":198,"props":3370,"children":3371},{"style":295},[3372],{"type":50,"value":380},{"type":44,"tag":198,"props":3374,"children":3375},{"style":283},[3376],{"type":50,"value":3377},"throw",{"type":44,"tag":198,"props":3379,"children":3380},{"style":211},[3381],{"type":50,"value":867},{"type":44,"tag":198,"props":3383,"children":3384},{"style":217},[3385],{"type":50,"value":332},{"type":44,"tag":198,"props":3387,"children":3388},{"class":200,"line":820},[3389],{"type":44,"tag":198,"props":3390,"children":3391},{"style":1021},[3392],{"type":50,"value":3393},"      \u002F\u002F Exponential backoff\n",{"type":44,"tag":198,"props":3395,"children":3396},{"class":200,"line":856},[3397,3402,3406,3411,3415,3419,3424,3428,3432,3437,3441,3445,3449,3454,3458,3463,3467,3472,3476,3480,3484,3489,3493,3497],{"type":44,"tag":198,"props":3398,"children":3399},{"style":283},[3400],{"type":50,"value":3401},"      await",{"type":44,"tag":198,"props":3403,"children":3404},{"style":217},[3405],{"type":50,"value":399},{"type":44,"tag":198,"props":3407,"children":3408},{"style":243},[3409],{"type":50,"value":3410}," Promise",{"type":44,"tag":198,"props":3412,"children":3413},{"style":295},[3414],{"type":50,"value":298},{"type":44,"tag":198,"props":3416,"children":3417},{"style":217},[3418],{"type":50,"value":298},{"type":44,"tag":198,"props":3420,"children":3421},{"style":233},[3422],{"type":50,"value":3423},"r",{"type":44,"tag":198,"props":3425,"children":3426},{"style":217},[3427],{"type":50,"value":251},{"type":44,"tag":198,"props":3429,"children":3430},{"style":205},[3431],{"type":50,"value":256},{"type":44,"tag":198,"props":3433,"children":3434},{"style":289},[3435],{"type":50,"value":3436}," setTimeout",{"type":44,"tag":198,"props":3438,"children":3439},{"style":295},[3440],{"type":50,"value":298},{"type":44,"tag":198,"props":3442,"children":3443},{"style":211},[3444],{"type":50,"value":3423},{"type":44,"tag":198,"props":3446,"children":3447},{"style":217},[3448],{"type":50,"value":615},{"type":44,"tag":198,"props":3450,"children":3451},{"style":211},[3452],{"type":50,"value":3453}," Math",{"type":44,"tag":198,"props":3455,"children":3456},{"style":217},[3457],{"type":50,"value":370},{"type":44,"tag":198,"props":3459,"children":3460},{"style":289},[3461],{"type":50,"value":3462},"pow",{"type":44,"tag":198,"props":3464,"children":3465},{"style":295},[3466],{"type":50,"value":298},{"type":44,"tag":198,"props":3468,"children":3469},{"style":1164},[3470],{"type":50,"value":3471},"2",{"type":44,"tag":198,"props":3473,"children":3474},{"style":217},[3475],{"type":50,"value":615},{"type":44,"tag":198,"props":3477,"children":3478},{"style":211},[3479],{"type":50,"value":3204},{"type":44,"tag":198,"props":3481,"children":3482},{"style":295},[3483],{"type":50,"value":380},{"type":44,"tag":198,"props":3485,"children":3486},{"style":217},[3487],{"type":50,"value":3488},"*",{"type":44,"tag":198,"props":3490,"children":3491},{"style":1164},[3492],{"type":50,"value":1167},{"type":44,"tag":198,"props":3494,"children":3495},{"style":295},[3496],{"type":50,"value":2735},{"type":44,"tag":198,"props":3498,"children":3499},{"style":217},[3500],{"type":50,"value":332},{"type":44,"tag":198,"props":3502,"children":3503},{"class":200,"line":898},[3504],{"type":44,"tag":198,"props":3505,"children":3506},{"style":217},[3507],{"type":50,"value":2854},{"type":44,"tag":198,"props":3509,"children":3510},{"class":200,"line":940},[3511],{"type":44,"tag":198,"props":3512,"children":3513},{"style":217},[3514],{"type":50,"value":455},{"type":44,"tag":198,"props":3516,"children":3517},{"class":200,"line":948},[3518],{"type":44,"tag":198,"props":3519,"children":3520},{"style":217},[3521],{"type":50,"value":503},{"type":44,"tag":991,"props":3523,"children":3524},{},[],{"type":44,"tag":172,"props":3526,"children":3528},{"id":3527},"_4-authentication",[3529],{"type":50,"value":3530},"4. Authentication",{"type":44,"tag":53,"props":3532,"children":3533},{},[3534,3539],{"type":44,"tag":57,"props":3535,"children":3536},{},[3537],{"type":50,"value":3538},"Token management",{"type":50,"value":187},{"type":44,"tag":75,"props":3541,"children":3543},{"className":190,"code":3542,"language":192,"meta":84,"style":84},"import * as SecureStore from \"expo-secure-store\";\n\nconst TOKEN_KEY = \"auth_token\";\n\nexport const auth = {\n  getToken: () => SecureStore.getItemAsync(TOKEN_KEY),\n  setToken: (token: string) => SecureStore.setItemAsync(TOKEN_KEY, token),\n  removeToken: () => SecureStore.deleteItemAsync(TOKEN_KEY),\n};\n\n\u002F\u002F Authenticated fetch wrapper\nconst authFetch = async (url: string, options: RequestInit = {}) => {\n  const token = await auth.getToken();\n\n  return fetch(url, {\n    ...options,\n    headers: {\n      ...options.headers,\n      Authorization: token ? `Bearer ${token}` : \"\",\n    },\n  });\n};\n",[3544],{"type":44,"tag":82,"props":3545,"children":3546},{"__ignoreMap":84},[3547,3590,3597,3630,3637,3662,3705,3772,3813,3820,3827,3835,3904,3946,3953,3980,3997,4012,4037,4091,4098,4113],{"type":44,"tag":198,"props":3548,"children":3549},{"class":200,"line":201},[3550,3554,3558,3563,3568,3573,3577,3582,3586],{"type":44,"tag":198,"props":3551,"children":3552},{"style":283},[3553],{"type":50,"value":1032},{"type":44,"tag":198,"props":3555,"children":3556},{"style":217},[3557],{"type":50,"value":1172},{"type":44,"tag":198,"props":3559,"children":3560},{"style":283},[3561],{"type":50,"value":3562}," as",{"type":44,"tag":198,"props":3564,"children":3565},{"style":211},[3566],{"type":50,"value":3567}," SecureStore ",{"type":44,"tag":198,"props":3569,"children":3570},{"style":283},[3571],{"type":50,"value":3572},"from",{"type":44,"tag":198,"props":3574,"children":3575},{"style":217},[3576],{"type":50,"value":636},{"type":44,"tag":198,"props":3578,"children":3579},{"style":306},[3580],{"type":50,"value":3581},"expo-secure-store",{"type":44,"tag":198,"props":3583,"children":3584},{"style":217},[3585],{"type":50,"value":601},{"type":44,"tag":198,"props":3587,"children":3588},{"style":217},[3589],{"type":50,"value":332},{"type":44,"tag":198,"props":3591,"children":3592},{"class":200,"line":264},[3593],{"type":44,"tag":198,"props":3594,"children":3595},{"emptyLinePlaceholder":339},[3596],{"type":50,"value":342},{"type":44,"tag":198,"props":3598,"children":3599},{"class":200,"line":335},[3600,3604,3609,3613,3617,3622,3626],{"type":44,"tag":198,"props":3601,"children":3602},{"style":205},[3603],{"type":50,"value":208},{"type":44,"tag":198,"props":3605,"children":3606},{"style":211},[3607],{"type":50,"value":3608}," TOKEN_KEY ",{"type":44,"tag":198,"props":3610,"children":3611},{"style":217},[3612],{"type":50,"value":220},{"type":44,"tag":198,"props":3614,"children":3615},{"style":217},[3616],{"type":50,"value":636},{"type":44,"tag":198,"props":3618,"children":3619},{"style":306},[3620],{"type":50,"value":3621},"auth_token",{"type":44,"tag":198,"props":3623,"children":3624},{"style":217},[3625],{"type":50,"value":601},{"type":44,"tag":198,"props":3627,"children":3628},{"style":217},[3629],{"type":50,"value":332},{"type":44,"tag":198,"props":3631,"children":3632},{"class":200,"line":345},[3633],{"type":44,"tag":198,"props":3634,"children":3635},{"emptyLinePlaceholder":339},[3636],{"type":50,"value":342},{"type":44,"tag":198,"props":3638,"children":3639},{"class":200,"line":388},[3640,3644,3649,3654,3658],{"type":44,"tag":198,"props":3641,"children":3642},{"style":283},[3643],{"type":50,"value":1262},{"type":44,"tag":198,"props":3645,"children":3646},{"style":205},[3647],{"type":50,"value":3648}," const",{"type":44,"tag":198,"props":3650,"children":3651},{"style":211},[3652],{"type":50,"value":3653}," auth ",{"type":44,"tag":198,"props":3655,"children":3656},{"style":217},[3657],{"type":50,"value":220},{"type":44,"tag":198,"props":3659,"children":3660},{"style":217},[3661],{"type":50,"value":261},{"type":44,"tag":198,"props":3663,"children":3664},{"class":200,"line":449},[3665,3670,3674,3678,3682,3687,3691,3696,3701],{"type":44,"tag":198,"props":3666,"children":3667},{"style":289},[3668],{"type":50,"value":3669},"  getToken",{"type":44,"tag":198,"props":3671,"children":3672},{"style":217},[3673],{"type":50,"value":187},{"type":44,"tag":198,"props":3675,"children":3676},{"style":217},[3677],{"type":50,"value":1629},{"type":44,"tag":198,"props":3679,"children":3680},{"style":205},[3681],{"type":50,"value":256},{"type":44,"tag":198,"props":3683,"children":3684},{"style":211},[3685],{"type":50,"value":3686}," SecureStore",{"type":44,"tag":198,"props":3688,"children":3689},{"style":217},[3690],{"type":50,"value":370},{"type":44,"tag":198,"props":3692,"children":3693},{"style":289},[3694],{"type":50,"value":3695},"getItemAsync",{"type":44,"tag":198,"props":3697,"children":3698},{"style":211},[3699],{"type":50,"value":3700},"(TOKEN_KEY)",{"type":44,"tag":198,"props":3702,"children":3703},{"style":217},[3704],{"type":50,"value":650},{"type":44,"tag":198,"props":3706,"children":3707},{"class":200,"line":458},[3708,3713,3717,3721,3725,3729,3733,3737,3741,3745,3749,3754,3759,3763,3768],{"type":44,"tag":198,"props":3709,"children":3710},{"style":289},[3711],{"type":50,"value":3712},"  setToken",{"type":44,"tag":198,"props":3714,"children":3715},{"style":217},[3716],{"type":50,"value":187},{"type":44,"tag":198,"props":3718,"children":3719},{"style":217},[3720],{"type":50,"value":230},{"type":44,"tag":198,"props":3722,"children":3723},{"style":233},[3724],{"type":50,"value":735},{"type":44,"tag":198,"props":3726,"children":3727},{"style":217},[3728],{"type":50,"value":187},{"type":44,"tag":198,"props":3730,"children":3731},{"style":243},[3732],{"type":50,"value":246},{"type":44,"tag":198,"props":3734,"children":3735},{"style":217},[3736],{"type":50,"value":251},{"type":44,"tag":198,"props":3738,"children":3739},{"style":205},[3740],{"type":50,"value":256},{"type":44,"tag":198,"props":3742,"children":3743},{"style":211},[3744],{"type":50,"value":3686},{"type":44,"tag":198,"props":3746,"children":3747},{"style":217},[3748],{"type":50,"value":370},{"type":44,"tag":198,"props":3750,"children":3751},{"style":289},[3752],{"type":50,"value":3753},"setItemAsync",{"type":44,"tag":198,"props":3755,"children":3756},{"style":211},[3757],{"type":50,"value":3758},"(TOKEN_KEY",{"type":44,"tag":198,"props":3760,"children":3761},{"style":217},[3762],{"type":50,"value":615},{"type":44,"tag":198,"props":3764,"children":3765},{"style":211},[3766],{"type":50,"value":3767}," token)",{"type":44,"tag":198,"props":3769,"children":3770},{"style":217},[3771],{"type":50,"value":650},{"type":44,"tag":198,"props":3773,"children":3774},{"class":200,"line":466},[3775,3780,3784,3788,3792,3796,3800,3805,3809],{"type":44,"tag":198,"props":3776,"children":3777},{"style":289},[3778],{"type":50,"value":3779},"  removeToken",{"type":44,"tag":198,"props":3781,"children":3782},{"style":217},[3783],{"type":50,"value":187},{"type":44,"tag":198,"props":3785,"children":3786},{"style":217},[3787],{"type":50,"value":1629},{"type":44,"tag":198,"props":3789,"children":3790},{"style":205},[3791],{"type":50,"value":256},{"type":44,"tag":198,"props":3793,"children":3794},{"style":211},[3795],{"type":50,"value":3686},{"type":44,"tag":198,"props":3797,"children":3798},{"style":217},[3799],{"type":50,"value":370},{"type":44,"tag":198,"props":3801,"children":3802},{"style":289},[3803],{"type":50,"value":3804},"deleteItemAsync",{"type":44,"tag":198,"props":3806,"children":3807},{"style":211},[3808],{"type":50,"value":3700},{"type":44,"tag":198,"props":3810,"children":3811},{"style":217},[3812],{"type":50,"value":650},{"type":44,"tag":198,"props":3814,"children":3815},{"class":200,"line":497},[3816],{"type":44,"tag":198,"props":3817,"children":3818},{"style":217},[3819],{"type":50,"value":503},{"type":44,"tag":198,"props":3821,"children":3822},{"class":200,"line":812},[3823],{"type":44,"tag":198,"props":3824,"children":3825},{"emptyLinePlaceholder":339},[3826],{"type":50,"value":342},{"type":44,"tag":198,"props":3828,"children":3829},{"class":200,"line":820},[3830],{"type":44,"tag":198,"props":3831,"children":3832},{"style":1021},[3833],{"type":50,"value":3834},"\u002F\u002F Authenticated fetch wrapper\n",{"type":44,"tag":198,"props":3836,"children":3837},{"class":200,"line":856},[3838,3842,3847,3851,3855,3859,3863,3867,3871,3875,3879,3883,3887,3891,3896,3900],{"type":44,"tag":198,"props":3839,"children":3840},{"style":205},[3841],{"type":50,"value":208},{"type":44,"tag":198,"props":3843,"children":3844},{"style":211},[3845],{"type":50,"value":3846}," authFetch ",{"type":44,"tag":198,"props":3848,"children":3849},{"style":217},[3850],{"type":50,"value":220},{"type":44,"tag":198,"props":3852,"children":3853},{"style":205},[3854],{"type":50,"value":225},{"type":44,"tag":198,"props":3856,"children":3857},{"style":217},[3858],{"type":50,"value":230},{"type":44,"tag":198,"props":3860,"children":3861},{"style":233},[3862],{"type":50,"value":2524},{"type":44,"tag":198,"props":3864,"children":3865},{"style":217},[3866],{"type":50,"value":187},{"type":44,"tag":198,"props":3868,"children":3869},{"style":243},[3870],{"type":50,"value":246},{"type":44,"tag":198,"props":3872,"children":3873},{"style":217},[3874],{"type":50,"value":615},{"type":44,"tag":198,"props":3876,"children":3877},{"style":233},[3878],{"type":50,"value":2541},{"type":44,"tag":198,"props":3880,"children":3881},{"style":217},[3882],{"type":50,"value":187},{"type":44,"tag":198,"props":3884,"children":3885},{"style":243},[3886],{"type":50,"value":2550},{"type":44,"tag":198,"props":3888,"children":3889},{"style":217},[3890],{"type":50,"value":280},{"type":44,"tag":198,"props":3892,"children":3893},{"style":217},[3894],{"type":50,"value":3895}," {})",{"type":44,"tag":198,"props":3897,"children":3898},{"style":205},[3899],{"type":50,"value":256},{"type":44,"tag":198,"props":3901,"children":3902},{"style":217},[3903],{"type":50,"value":261},{"type":44,"tag":198,"props":3905,"children":3906},{"class":200,"line":898},[3907,3911,3916,3920,3924,3929,3933,3938,3942],{"type":44,"tag":198,"props":3908,"children":3909},{"style":205},[3910],{"type":50,"value":270},{"type":44,"tag":198,"props":3912,"children":3913},{"style":211},[3914],{"type":50,"value":3915}," token",{"type":44,"tag":198,"props":3917,"children":3918},{"style":217},[3919],{"type":50,"value":280},{"type":44,"tag":198,"props":3921,"children":3922},{"style":283},[3923],{"type":50,"value":286},{"type":44,"tag":198,"props":3925,"children":3926},{"style":211},[3927],{"type":50,"value":3928}," auth",{"type":44,"tag":198,"props":3930,"children":3931},{"style":217},[3932],{"type":50,"value":370},{"type":44,"tag":198,"props":3934,"children":3935},{"style":289},[3936],{"type":50,"value":3937},"getToken",{"type":44,"tag":198,"props":3939,"children":3940},{"style":295},[3941],{"type":50,"value":490},{"type":44,"tag":198,"props":3943,"children":3944},{"style":217},[3945],{"type":50,"value":332},{"type":44,"tag":198,"props":3947,"children":3948},{"class":200,"line":940},[3949],{"type":44,"tag":198,"props":3950,"children":3951},{"emptyLinePlaceholder":339},[3952],{"type":50,"value":342},{"type":44,"tag":198,"props":3954,"children":3955},{"class":200,"line":948},[3956,3960,3964,3968,3972,3976],{"type":44,"tag":198,"props":3957,"children":3958},{"style":283},[3959],{"type":50,"value":472},{"type":44,"tag":198,"props":3961,"children":3962},{"style":289},[3963],{"type":50,"value":292},{"type":44,"tag":198,"props":3965,"children":3966},{"style":295},[3967],{"type":50,"value":298},{"type":44,"tag":198,"props":3969,"children":3970},{"style":211},[3971],{"type":50,"value":2524},{"type":44,"tag":198,"props":3973,"children":3974},{"style":217},[3975],{"type":50,"value":615},{"type":44,"tag":198,"props":3977,"children":3978},{"style":217},[3979],{"type":50,"value":261},{"type":44,"tag":198,"props":3981,"children":3982},{"class":200,"line":956},[3983,3988,3993],{"type":44,"tag":198,"props":3984,"children":3985},{"style":217},[3986],{"type":50,"value":3987},"    ...",{"type":44,"tag":198,"props":3989,"children":3990},{"style":211},[3991],{"type":50,"value":3992},"options",{"type":44,"tag":198,"props":3994,"children":3995},{"style":217},[3996],{"type":50,"value":650},{"type":44,"tag":198,"props":3998,"children":3999},{"class":200,"line":984},[4000,4004,4008],{"type":44,"tag":198,"props":4001,"children":4002},{"style":295},[4003],{"type":50,"value":658},{"type":44,"tag":198,"props":4005,"children":4006},{"style":217},[4007],{"type":50,"value":187},{"type":44,"tag":198,"props":4009,"children":4010},{"style":217},[4011],{"type":50,"value":261},{"type":44,"tag":198,"props":4013,"children":4014},{"class":200,"line":1368},[4015,4020,4024,4028,4033],{"type":44,"tag":198,"props":4016,"children":4017},{"style":217},[4018],{"type":50,"value":4019},"      ...",{"type":44,"tag":198,"props":4021,"children":4022},{"style":211},[4023],{"type":50,"value":3992},{"type":44,"tag":198,"props":4025,"children":4026},{"style":217},[4027],{"type":50,"value":370},{"type":44,"tag":198,"props":4029,"children":4030},{"style":211},[4031],{"type":50,"value":4032},"headers",{"type":44,"tag":198,"props":4034,"children":4035},{"style":217},[4036],{"type":50,"value":650},{"type":44,"tag":198,"props":4038,"children":4039},{"class":200,"line":1381},[4040,4044,4048,4052,4057,4061,4065,4069,4073,4077,4082,4087],{"type":44,"tag":198,"props":4041,"children":4042},{"style":295},[4043],{"type":50,"value":712},{"type":44,"tag":198,"props":4045,"children":4046},{"style":217},[4047],{"type":50,"value":187},{"type":44,"tag":198,"props":4049,"children":4050},{"style":211},[4051],{"type":50,"value":3915},{"type":44,"tag":198,"props":4053,"children":4054},{"style":217},[4055],{"type":50,"value":4056}," ?",{"type":44,"tag":198,"props":4058,"children":4059},{"style":217},[4060],{"type":50,"value":721},{"type":44,"tag":198,"props":4062,"children":4063},{"style":306},[4064],{"type":50,"value":726},{"type":44,"tag":198,"props":4066,"children":4067},{"style":217},[4068],{"type":50,"value":314},{"type":44,"tag":198,"props":4070,"children":4071},{"style":211},[4072],{"type":50,"value":735},{"type":44,"tag":198,"props":4074,"children":4075},{"style":217},[4076],{"type":50,"value":323},{"type":44,"tag":198,"props":4078,"children":4079},{"style":217},[4080],{"type":50,"value":4081}," :",{"type":44,"tag":198,"props":4083,"children":4084},{"style":217},[4085],{"type":50,"value":4086}," \"\"",{"type":44,"tag":198,"props":4088,"children":4089},{"style":217},[4090],{"type":50,"value":650},{"type":44,"tag":198,"props":4092,"children":4093},{"class":200,"line":2857},[4094],{"type":44,"tag":198,"props":4095,"children":4096},{"style":217},[4097],{"type":50,"value":751},{"type":44,"tag":198,"props":4099,"children":4100},{"class":200,"line":2865},[4101,4105,4109],{"type":44,"tag":198,"props":4102,"children":4103},{"style":217},[4104],{"type":50,"value":801},{"type":44,"tag":198,"props":4106,"children":4107},{"style":295},[4108],{"type":50,"value":251},{"type":44,"tag":198,"props":4110,"children":4111},{"style":217},[4112],{"type":50,"value":332},{"type":44,"tag":198,"props":4114,"children":4115},{"class":200,"line":2894},[4116],{"type":44,"tag":198,"props":4117,"children":4118},{"style":217},[4119],{"type":50,"value":503},{"type":44,"tag":53,"props":4121,"children":4122},{},[4123,4128],{"type":44,"tag":57,"props":4124,"children":4125},{},[4126],{"type":50,"value":4127},"Token refresh",{"type":50,"value":187},{"type":44,"tag":75,"props":4130,"children":4132},{"className":190,"code":4131,"language":192,"meta":84,"style":84},"let isRefreshing = false;\nlet refreshPromise: Promise\u003Cstring> | null = null;\n\nconst getValidToken = async (): Promise\u003Cstring> => {\n  const token = await auth.getToken();\n\n  if (!token || isTokenExpired(token)) {\n    if (!isRefreshing) {\n      isRefreshing = true;\n      refreshPromise = refreshToken().finally(() => {\n        isRefreshing = false;\n        refreshPromise = null;\n      });\n    }\n    return refreshPromise!;\n  }\n\n  return token;\n};\n",[4133],{"type":44,"tag":82,"props":4134,"children":4135},{"__ignoreMap":84},[4136,4162,4216,4223,4272,4311,4318,4363,4391,4412,4458,4478,4494,4510,4517,4533,4540,4547,4562],{"type":44,"tag":198,"props":4137,"children":4138},{"class":200,"line":201},[4139,4143,4148,4152,4158],{"type":44,"tag":198,"props":4140,"children":4141},{"style":205},[4142],{"type":50,"value":3199},{"type":44,"tag":198,"props":4144,"children":4145},{"style":211},[4146],{"type":50,"value":4147}," isRefreshing ",{"type":44,"tag":198,"props":4149,"children":4150},{"style":217},[4151],{"type":50,"value":220},{"type":44,"tag":198,"props":4153,"children":4155},{"style":4154},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[4156],{"type":50,"value":4157}," false",{"type":44,"tag":198,"props":4159,"children":4160},{"style":217},[4161],{"type":50,"value":332},{"type":44,"tag":198,"props":4163,"children":4164},{"class":200,"line":264},[4165,4169,4174,4178,4182,4187,4192,4197,4202,4207,4211],{"type":44,"tag":198,"props":4166,"children":4167},{"style":205},[4168],{"type":50,"value":3199},{"type":44,"tag":198,"props":4170,"children":4171},{"style":211},[4172],{"type":50,"value":4173}," refreshPromise",{"type":44,"tag":198,"props":4175,"children":4176},{"style":217},[4177],{"type":50,"value":187},{"type":44,"tag":198,"props":4179,"children":4180},{"style":243},[4181],{"type":50,"value":3410},{"type":44,"tag":198,"props":4183,"children":4184},{"style":217},[4185],{"type":50,"value":4186},"\u003C",{"type":44,"tag":198,"props":4188,"children":4189},{"style":243},[4190],{"type":50,"value":4191},"string",{"type":44,"tag":198,"props":4193,"children":4194},{"style":217},[4195],{"type":50,"value":4196},">",{"type":44,"tag":198,"props":4198,"children":4199},{"style":217},[4200],{"type":50,"value":4201}," |",{"type":44,"tag":198,"props":4203,"children":4204},{"style":243},[4205],{"type":50,"value":4206}," null",{"type":44,"tag":198,"props":4208,"children":4209},{"style":217},[4210],{"type":50,"value":280},{"type":44,"tag":198,"props":4212,"children":4213},{"style":217},[4214],{"type":50,"value":4215}," null;\n",{"type":44,"tag":198,"props":4217,"children":4218},{"class":200,"line":335},[4219],{"type":44,"tag":198,"props":4220,"children":4221},{"emptyLinePlaceholder":339},[4222],{"type":50,"value":342},{"type":44,"tag":198,"props":4224,"children":4225},{"class":200,"line":345},[4226,4230,4235,4239,4243,4248,4252,4256,4260,4264,4268],{"type":44,"tag":198,"props":4227,"children":4228},{"style":205},[4229],{"type":50,"value":208},{"type":44,"tag":198,"props":4231,"children":4232},{"style":211},[4233],{"type":50,"value":4234}," getValidToken ",{"type":44,"tag":198,"props":4236,"children":4237},{"style":217},[4238],{"type":50,"value":220},{"type":44,"tag":198,"props":4240,"children":4241},{"style":205},[4242],{"type":50,"value":225},{"type":44,"tag":198,"props":4244,"children":4245},{"style":217},[4246],{"type":50,"value":4247}," ():",{"type":44,"tag":198,"props":4249,"children":4250},{"style":243},[4251],{"type":50,"value":3410},{"type":44,"tag":198,"props":4253,"children":4254},{"style":217},[4255],{"type":50,"value":4186},{"type":44,"tag":198,"props":4257,"children":4258},{"style":243},[4259],{"type":50,"value":4191},{"type":44,"tag":198,"props":4261,"children":4262},{"style":217},[4263],{"type":50,"value":4196},{"type":44,"tag":198,"props":4265,"children":4266},{"style":205},[4267],{"type":50,"value":256},{"type":44,"tag":198,"props":4269,"children":4270},{"style":217},[4271],{"type":50,"value":261},{"type":44,"tag":198,"props":4273,"children":4274},{"class":200,"line":388},[4275,4279,4283,4287,4291,4295,4299,4303,4307],{"type":44,"tag":198,"props":4276,"children":4277},{"style":205},[4278],{"type":50,"value":270},{"type":44,"tag":198,"props":4280,"children":4281},{"style":211},[4282],{"type":50,"value":3915},{"type":44,"tag":198,"props":4284,"children":4285},{"style":217},[4286],{"type":50,"value":280},{"type":44,"tag":198,"props":4288,"children":4289},{"style":283},[4290],{"type":50,"value":286},{"type":44,"tag":198,"props":4292,"children":4293},{"style":211},[4294],{"type":50,"value":3928},{"type":44,"tag":198,"props":4296,"children":4297},{"style":217},[4298],{"type":50,"value":370},{"type":44,"tag":198,"props":4300,"children":4301},{"style":289},[4302],{"type":50,"value":3937},{"type":44,"tag":198,"props":4304,"children":4305},{"style":295},[4306],{"type":50,"value":490},{"type":44,"tag":198,"props":4308,"children":4309},{"style":217},[4310],{"type":50,"value":332},{"type":44,"tag":198,"props":4312,"children":4313},{"class":200,"line":449},[4314],{"type":44,"tag":198,"props":4315,"children":4316},{"emptyLinePlaceholder":339},[4317],{"type":50,"value":342},{"type":44,"tag":198,"props":4319,"children":4320},{"class":200,"line":458},[4321,4325,4329,4333,4337,4341,4346,4350,4354,4359],{"type":44,"tag":198,"props":4322,"children":4323},{"style":283},[4324],{"type":50,"value":351},{"type":44,"tag":198,"props":4326,"children":4327},{"style":295},[4328],{"type":50,"value":230},{"type":44,"tag":198,"props":4330,"children":4331},{"style":217},[4332],{"type":50,"value":360},{"type":44,"tag":198,"props":4334,"children":4335},{"style":211},[4336],{"type":50,"value":735},{"type":44,"tag":198,"props":4338,"children":4339},{"style":217},[4340],{"type":50,"value":2781},{"type":44,"tag":198,"props":4342,"children":4343},{"style":289},[4344],{"type":50,"value":4345}," isTokenExpired",{"type":44,"tag":198,"props":4347,"children":4348},{"style":295},[4349],{"type":50,"value":298},{"type":44,"tag":198,"props":4351,"children":4352},{"style":211},[4353],{"type":50,"value":735},{"type":44,"tag":198,"props":4355,"children":4356},{"style":295},[4357],{"type":50,"value":4358},")) ",{"type":44,"tag":198,"props":4360,"children":4361},{"style":217},[4362],{"type":50,"value":385},{"type":44,"tag":198,"props":4364,"children":4365},{"class":200,"line":466},[4366,4370,4374,4378,4383,4387],{"type":44,"tag":198,"props":4367,"children":4368},{"style":283},[4369],{"type":50,"value":2636},{"type":44,"tag":198,"props":4371,"children":4372},{"style":295},[4373],{"type":50,"value":230},{"type":44,"tag":198,"props":4375,"children":4376},{"style":217},[4377],{"type":50,"value":360},{"type":44,"tag":198,"props":4379,"children":4380},{"style":211},[4381],{"type":50,"value":4382},"isRefreshing",{"type":44,"tag":198,"props":4384,"children":4385},{"style":295},[4386],{"type":50,"value":380},{"type":44,"tag":198,"props":4388,"children":4389},{"style":217},[4390],{"type":50,"value":385},{"type":44,"tag":198,"props":4392,"children":4393},{"class":200,"line":497},[4394,4399,4403,4408],{"type":44,"tag":198,"props":4395,"children":4396},{"style":211},[4397],{"type":50,"value":4398},"      isRefreshing",{"type":44,"tag":198,"props":4400,"children":4401},{"style":217},[4402],{"type":50,"value":280},{"type":44,"tag":198,"props":4404,"children":4405},{"style":4154},[4406],{"type":50,"value":4407}," true",{"type":44,"tag":198,"props":4409,"children":4410},{"style":217},[4411],{"type":50,"value":332},{"type":44,"tag":198,"props":4413,"children":4414},{"class":200,"line":812},[4415,4420,4424,4429,4433,4437,4442,4446,4450,4454],{"type":44,"tag":198,"props":4416,"children":4417},{"style":211},[4418],{"type":50,"value":4419},"      refreshPromise",{"type":44,"tag":198,"props":4421,"children":4422},{"style":217},[4423],{"type":50,"value":280},{"type":44,"tag":198,"props":4425,"children":4426},{"style":289},[4427],{"type":50,"value":4428}," refreshToken",{"type":44,"tag":198,"props":4430,"children":4431},{"style":295},[4432],{"type":50,"value":490},{"type":44,"tag":198,"props":4434,"children":4435},{"style":217},[4436],{"type":50,"value":370},{"type":44,"tag":198,"props":4438,"children":4439},{"style":289},[4440],{"type":50,"value":4441},"finally",{"type":44,"tag":198,"props":4443,"children":4444},{"style":295},[4445],{"type":50,"value":298},{"type":44,"tag":198,"props":4447,"children":4448},{"style":217},[4449],{"type":50,"value":490},{"type":44,"tag":198,"props":4451,"children":4452},{"style":205},[4453],{"type":50,"value":256},{"type":44,"tag":198,"props":4455,"children":4456},{"style":217},[4457],{"type":50,"value":261},{"type":44,"tag":198,"props":4459,"children":4460},{"class":200,"line":820},[4461,4466,4470,4474],{"type":44,"tag":198,"props":4462,"children":4463},{"style":211},[4464],{"type":50,"value":4465},"        isRefreshing",{"type":44,"tag":198,"props":4467,"children":4468},{"style":217},[4469],{"type":50,"value":280},{"type":44,"tag":198,"props":4471,"children":4472},{"style":4154},[4473],{"type":50,"value":4157},{"type":44,"tag":198,"props":4475,"children":4476},{"style":217},[4477],{"type":50,"value":332},{"type":44,"tag":198,"props":4479,"children":4480},{"class":200,"line":856},[4481,4486,4490],{"type":44,"tag":198,"props":4482,"children":4483},{"style":211},[4484],{"type":50,"value":4485},"        refreshPromise",{"type":44,"tag":198,"props":4487,"children":4488},{"style":217},[4489],{"type":50,"value":280},{"type":44,"tag":198,"props":4491,"children":4492},{"style":217},[4493],{"type":50,"value":4215},{"type":44,"tag":198,"props":4495,"children":4496},{"class":200,"line":898},[4497,4502,4506],{"type":44,"tag":198,"props":4498,"children":4499},{"style":217},[4500],{"type":50,"value":4501},"      }",{"type":44,"tag":198,"props":4503,"children":4504},{"style":295},[4505],{"type":50,"value":251},{"type":44,"tag":198,"props":4507,"children":4508},{"style":217},[4509],{"type":50,"value":332},{"type":44,"tag":198,"props":4511,"children":4512},{"class":200,"line":940},[4513],{"type":44,"tag":198,"props":4514,"children":4515},{"style":217},[4516],{"type":50,"value":2854},{"type":44,"tag":198,"props":4518,"children":4519},{"class":200,"line":948},[4520,4524,4528],{"type":44,"tag":198,"props":4521,"children":4522},{"style":283},[4523],{"type":50,"value":2871},{"type":44,"tag":198,"props":4525,"children":4526},{"style":211},[4527],{"type":50,"value":4173},{"type":44,"tag":198,"props":4529,"children":4530},{"style":217},[4531],{"type":50,"value":4532},"!;\n",{"type":44,"tag":198,"props":4534,"children":4535},{"class":200,"line":956},[4536],{"type":44,"tag":198,"props":4537,"children":4538},{"style":217},[4539],{"type":50,"value":455},{"type":44,"tag":198,"props":4541,"children":4542},{"class":200,"line":984},[4543],{"type":44,"tag":198,"props":4544,"children":4545},{"emptyLinePlaceholder":339},[4546],{"type":50,"value":342},{"type":44,"tag":198,"props":4548,"children":4549},{"class":200,"line":1368},[4550,4554,4558],{"type":44,"tag":198,"props":4551,"children":4552},{"style":283},[4553],{"type":50,"value":472},{"type":44,"tag":198,"props":4555,"children":4556},{"style":211},[4557],{"type":50,"value":3915},{"type":44,"tag":198,"props":4559,"children":4560},{"style":217},[4561],{"type":50,"value":332},{"type":44,"tag":198,"props":4563,"children":4564},{"class":200,"line":1381},[4565],{"type":44,"tag":198,"props":4566,"children":4567},{"style":217},[4568],{"type":50,"value":503},{"type":44,"tag":991,"props":4570,"children":4571},{},[],{"type":44,"tag":172,"props":4573,"children":4575},{"id":4574},"_5-offline-support",[4576],{"type":50,"value":4577},"5. Offline Support",{"type":44,"tag":53,"props":4579,"children":4580},{},[4581,4583,4589],{"type":50,"value":4582},"Network-status detection with NetInfo and offline-first React Query setup: see ",{"type":44,"tag":4584,"props":4585,"children":4587},"a",{"href":4586},".\u002Freferences\u002Foffline-and-cancellation.md",[4588],{"type":50,"value":4586},{"type":50,"value":370},{"type":44,"tag":991,"props":4591,"children":4592},{},[],{"type":44,"tag":172,"props":4594,"children":4596},{"id":4595},"_6-environment-variables",[4597],{"type":50,"value":4598},"6. Environment Variables",{"type":44,"tag":53,"props":4600,"children":4601},{},[4602,4607],{"type":44,"tag":57,"props":4603,"children":4604},{},[4605],{"type":50,"value":4606},"Using environment variables for API configuration",{"type":50,"value":187},{"type":44,"tag":53,"props":4609,"children":4610},{},[4611,4613,4619],{"type":50,"value":4612},"Expo supports environment variables with the ",{"type":44,"tag":82,"props":4614,"children":4616},{"className":4615},[],[4617],{"type":50,"value":4618},"EXPO_PUBLIC_",{"type":50,"value":4620}," prefix. These are inlined at build time and available in your JavaScript code.",{"type":44,"tag":75,"props":4622,"children":4624},{"className":190,"code":4623,"language":192,"meta":84,"style":84},"\u002F\u002F .env\nEXPO_PUBLIC_API_URL=https:\u002F\u002Fapi.example.com\nEXPO_PUBLIC_API_VERSION=v1\n\n\u002F\u002F Usage in code\nconst API_URL = process.env.EXPO_PUBLIC_API_URL;\n\nconst fetchUsers = async () => {\n  const response = await fetch(`${API_URL}\u002Fusers`);\n  return response.json();\n};\n",[4625],{"type":44,"tag":82,"props":4626,"children":4627},{"__ignoreMap":84},[4628,4636,4662,4679,4686,4694,4736,4743,4775,4833,4860],{"type":44,"tag":198,"props":4629,"children":4630},{"class":200,"line":201},[4631],{"type":44,"tag":198,"props":4632,"children":4633},{"style":1021},[4634],{"type":50,"value":4635},"\u002F\u002F .env\n",{"type":44,"tag":198,"props":4637,"children":4638},{"class":200,"line":264},[4639,4644,4648,4653,4657],{"type":44,"tag":198,"props":4640,"children":4641},{"style":211},[4642],{"type":50,"value":4643},"EXPO_PUBLIC_API_URL",{"type":44,"tag":198,"props":4645,"children":4646},{"style":217},[4647],{"type":50,"value":220},{"type":44,"tag":198,"props":4649,"children":4650},{"style":243},[4651],{"type":50,"value":4652},"https",{"type":44,"tag":198,"props":4654,"children":4655},{"style":217},[4656],{"type":50,"value":187},{"type":44,"tag":198,"props":4658,"children":4659},{"style":1021},[4660],{"type":50,"value":4661},"\u002F\u002Fapi.example.com\n",{"type":44,"tag":198,"props":4663,"children":4664},{"class":200,"line":335},[4665,4670,4674],{"type":44,"tag":198,"props":4666,"children":4667},{"style":211},[4668],{"type":50,"value":4669},"EXPO_PUBLIC_API_VERSION",{"type":44,"tag":198,"props":4671,"children":4672},{"style":217},[4673],{"type":50,"value":220},{"type":44,"tag":198,"props":4675,"children":4676},{"style":211},[4677],{"type":50,"value":4678},"v1\n",{"type":44,"tag":198,"props":4680,"children":4681},{"class":200,"line":345},[4682],{"type":44,"tag":198,"props":4683,"children":4684},{"emptyLinePlaceholder":339},[4685],{"type":50,"value":342},{"type":44,"tag":198,"props":4687,"children":4688},{"class":200,"line":388},[4689],{"type":44,"tag":198,"props":4690,"children":4691},{"style":1021},[4692],{"type":50,"value":4693},"\u002F\u002F Usage in code\n",{"type":44,"tag":198,"props":4695,"children":4696},{"class":200,"line":449},[4697,4701,4706,4710,4715,4719,4724,4728,4732],{"type":44,"tag":198,"props":4698,"children":4699},{"style":205},[4700],{"type":50,"value":208},{"type":44,"tag":198,"props":4702,"children":4703},{"style":211},[4704],{"type":50,"value":4705}," API_URL ",{"type":44,"tag":198,"props":4707,"children":4708},{"style":217},[4709],{"type":50,"value":220},{"type":44,"tag":198,"props":4711,"children":4712},{"style":211},[4713],{"type":50,"value":4714}," process",{"type":44,"tag":198,"props":4716,"children":4717},{"style":217},[4718],{"type":50,"value":370},{"type":44,"tag":198,"props":4720,"children":4721},{"style":211},[4722],{"type":50,"value":4723},"env",{"type":44,"tag":198,"props":4725,"children":4726},{"style":217},[4727],{"type":50,"value":370},{"type":44,"tag":198,"props":4729,"children":4730},{"style":211},[4731],{"type":50,"value":4643},{"type":44,"tag":198,"props":4733,"children":4734},{"style":217},[4735],{"type":50,"value":332},{"type":44,"tag":198,"props":4737,"children":4738},{"class":200,"line":458},[4739],{"type":44,"tag":198,"props":4740,"children":4741},{"emptyLinePlaceholder":339},[4742],{"type":50,"value":342},{"type":44,"tag":198,"props":4744,"children":4745},{"class":200,"line":466},[4746,4750,4755,4759,4763,4767,4771],{"type":44,"tag":198,"props":4747,"children":4748},{"style":205},[4749],{"type":50,"value":208},{"type":44,"tag":198,"props":4751,"children":4752},{"style":211},[4753],{"type":50,"value":4754}," fetchUsers ",{"type":44,"tag":198,"props":4756,"children":4757},{"style":217},[4758],{"type":50,"value":220},{"type":44,"tag":198,"props":4760,"children":4761},{"style":205},[4762],{"type":50,"value":225},{"type":44,"tag":198,"props":4764,"children":4765},{"style":217},[4766],{"type":50,"value":1629},{"type":44,"tag":198,"props":4768,"children":4769},{"style":205},[4770],{"type":50,"value":256},{"type":44,"tag":198,"props":4772,"children":4773},{"style":217},[4774],{"type":50,"value":261},{"type":44,"tag":198,"props":4776,"children":4777},{"class":200,"line":497},[4778,4782,4786,4790,4794,4798,4802,4807,4812,4816,4821,4825,4829],{"type":44,"tag":198,"props":4779,"children":4780},{"style":205},[4781],{"type":50,"value":270},{"type":44,"tag":198,"props":4783,"children":4784},{"style":211},[4785],{"type":50,"value":275},{"type":44,"tag":198,"props":4787,"children":4788},{"style":217},[4789],{"type":50,"value":280},{"type":44,"tag":198,"props":4791,"children":4792},{"style":283},[4793],{"type":50,"value":286},{"type":44,"tag":198,"props":4795,"children":4796},{"style":289},[4797],{"type":50,"value":292},{"type":44,"tag":198,"props":4799,"children":4800},{"style":295},[4801],{"type":50,"value":298},{"type":44,"tag":198,"props":4803,"children":4804},{"style":217},[4805],{"type":50,"value":4806},"`${",{"type":44,"tag":198,"props":4808,"children":4809},{"style":211},[4810],{"type":50,"value":4811},"API_URL",{"type":44,"tag":198,"props":4813,"children":4814},{"style":217},[4815],{"type":50,"value":1239},{"type":44,"tag":198,"props":4817,"children":4818},{"style":306},[4819],{"type":50,"value":4820},"\u002Fusers",{"type":44,"tag":198,"props":4822,"children":4823},{"style":217},[4824],{"type":50,"value":303},{"type":44,"tag":198,"props":4826,"children":4827},{"style":295},[4828],{"type":50,"value":251},{"type":44,"tag":198,"props":4830,"children":4831},{"style":217},[4832],{"type":50,"value":332},{"type":44,"tag":198,"props":4834,"children":4835},{"class":200,"line":812},[4836,4840,4844,4848,4852,4856],{"type":44,"tag":198,"props":4837,"children":4838},{"style":283},[4839],{"type":50,"value":472},{"type":44,"tag":198,"props":4841,"children":4842},{"style":211},[4843],{"type":50,"value":275},{"type":44,"tag":198,"props":4845,"children":4846},{"style":217},[4847],{"type":50,"value":370},{"type":44,"tag":198,"props":4849,"children":4850},{"style":289},[4851],{"type":50,"value":485},{"type":44,"tag":198,"props":4853,"children":4854},{"style":295},[4855],{"type":50,"value":490},{"type":44,"tag":198,"props":4857,"children":4858},{"style":217},[4859],{"type":50,"value":332},{"type":44,"tag":198,"props":4861,"children":4862},{"class":200,"line":820},[4863],{"type":44,"tag":198,"props":4864,"children":4865},{"style":217},[4866],{"type":50,"value":503},{"type":44,"tag":53,"props":4868,"children":4869},{},[4870,4875],{"type":44,"tag":57,"props":4871,"children":4872},{},[4873],{"type":50,"value":4874},"Environment-specific configuration",{"type":50,"value":187},{"type":44,"tag":75,"props":4877,"children":4879},{"className":190,"code":4878,"language":192,"meta":84,"style":84},"\u002F\u002F .env.development\nEXPO_PUBLIC_API_URL=http:\u002F\u002Flocalhost:3000\n\n\u002F\u002F .env.production\nEXPO_PUBLIC_API_URL=https:\u002F\u002Fapi.production.com\n",[4880],{"type":44,"tag":82,"props":4881,"children":4882},{"__ignoreMap":84},[4883,4891,4916,4923,4931],{"type":44,"tag":198,"props":4884,"children":4885},{"class":200,"line":201},[4886],{"type":44,"tag":198,"props":4887,"children":4888},{"style":1021},[4889],{"type":50,"value":4890},"\u002F\u002F .env.development\n",{"type":44,"tag":198,"props":4892,"children":4893},{"class":200,"line":264},[4894,4898,4902,4907,4911],{"type":44,"tag":198,"props":4895,"children":4896},{"style":211},[4897],{"type":50,"value":4643},{"type":44,"tag":198,"props":4899,"children":4900},{"style":217},[4901],{"type":50,"value":220},{"type":44,"tag":198,"props":4903,"children":4904},{"style":243},[4905],{"type":50,"value":4906},"http",{"type":44,"tag":198,"props":4908,"children":4909},{"style":217},[4910],{"type":50,"value":187},{"type":44,"tag":198,"props":4912,"children":4913},{"style":1021},[4914],{"type":50,"value":4915},"\u002F\u002Flocalhost:3000\n",{"type":44,"tag":198,"props":4917,"children":4918},{"class":200,"line":335},[4919],{"type":44,"tag":198,"props":4920,"children":4921},{"emptyLinePlaceholder":339},[4922],{"type":50,"value":342},{"type":44,"tag":198,"props":4924,"children":4925},{"class":200,"line":345},[4926],{"type":44,"tag":198,"props":4927,"children":4928},{"style":1021},[4929],{"type":50,"value":4930},"\u002F\u002F .env.production\n",{"type":44,"tag":198,"props":4932,"children":4933},{"class":200,"line":388},[4934,4938,4942,4946,4950],{"type":44,"tag":198,"props":4935,"children":4936},{"style":211},[4937],{"type":50,"value":4643},{"type":44,"tag":198,"props":4939,"children":4940},{"style":217},[4941],{"type":50,"value":220},{"type":44,"tag":198,"props":4943,"children":4944},{"style":243},[4945],{"type":50,"value":4652},{"type":44,"tag":198,"props":4947,"children":4948},{"style":217},[4949],{"type":50,"value":187},{"type":44,"tag":198,"props":4951,"children":4952},{"style":1021},[4953],{"type":50,"value":4954},"\u002F\u002Fapi.production.com\n",{"type":44,"tag":53,"props":4956,"children":4957},{},[4958,4963],{"type":44,"tag":57,"props":4959,"children":4960},{},[4961],{"type":50,"value":4962},"Creating an API client with environment config",{"type":50,"value":187},{"type":44,"tag":75,"props":4965,"children":4967},{"className":190,"code":4966,"language":192,"meta":84,"style":84},"\u002F\u002F api\u002Fclient.ts\nconst BASE_URL = process.env.EXPO_PUBLIC_API_URL;\n\nif (!BASE_URL) {\n  throw new Error(\"EXPO_PUBLIC_API_URL is not defined\");\n}\n\nexport const apiClient = {\n  get: async \u003CT,>(path: string): Promise\u003CT> => {\n    const response = await fetch(`${BASE_URL}${path}`);\n    if (!response.ok) throw new Error(`HTTP ${response.status}`);\n    return response.json();\n  },\n\n  post: async \u003CT,>(path: string, body: unknown): Promise\u003CT> => {\n    const response = await fetch(`${BASE_URL}${path}`, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\u002Fjson\" },\n      body: JSON.stringify(body),\n    });\n    if (!response.ok) throw new Error(`HTTP ${response.status}`);\n    return response.json();\n  },\n};\n",[4968],{"type":44,"tag":82,"props":4969,"children":4970},{"__ignoreMap":84},[4971,4979,5019,5026,5051,5092,5099,5106,5130,5202,5259,5343,5370,5377,5384,5470,5525,5553,5602,5643,5658,5741,5768,5775],{"type":44,"tag":198,"props":4972,"children":4973},{"class":200,"line":201},[4974],{"type":44,"tag":198,"props":4975,"children":4976},{"style":1021},[4977],{"type":50,"value":4978},"\u002F\u002F api\u002Fclient.ts\n",{"type":44,"tag":198,"props":4980,"children":4981},{"class":200,"line":264},[4982,4986,4991,4995,4999,5003,5007,5011,5015],{"type":44,"tag":198,"props":4983,"children":4984},{"style":205},[4985],{"type":50,"value":208},{"type":44,"tag":198,"props":4987,"children":4988},{"style":211},[4989],{"type":50,"value":4990}," BASE_URL ",{"type":44,"tag":198,"props":4992,"children":4993},{"style":217},[4994],{"type":50,"value":220},{"type":44,"tag":198,"props":4996,"children":4997},{"style":211},[4998],{"type":50,"value":4714},{"type":44,"tag":198,"props":5000,"children":5001},{"style":217},[5002],{"type":50,"value":370},{"type":44,"tag":198,"props":5004,"children":5005},{"style":211},[5006],{"type":50,"value":4723},{"type":44,"tag":198,"props":5008,"children":5009},{"style":217},[5010],{"type":50,"value":370},{"type":44,"tag":198,"props":5012,"children":5013},{"style":211},[5014],{"type":50,"value":4643},{"type":44,"tag":198,"props":5016,"children":5017},{"style":217},[5018],{"type":50,"value":332},{"type":44,"tag":198,"props":5020,"children":5021},{"class":200,"line":335},[5022],{"type":44,"tag":198,"props":5023,"children":5024},{"emptyLinePlaceholder":339},[5025],{"type":50,"value":342},{"type":44,"tag":198,"props":5027,"children":5028},{"class":200,"line":345},[5029,5034,5038,5042,5047],{"type":44,"tag":198,"props":5030,"children":5031},{"style":283},[5032],{"type":50,"value":5033},"if",{"type":44,"tag":198,"props":5035,"children":5036},{"style":211},[5037],{"type":50,"value":230},{"type":44,"tag":198,"props":5039,"children":5040},{"style":217},[5041],{"type":50,"value":360},{"type":44,"tag":198,"props":5043,"children":5044},{"style":211},[5045],{"type":50,"value":5046},"BASE_URL) ",{"type":44,"tag":198,"props":5048,"children":5049},{"style":217},[5050],{"type":50,"value":385},{"type":44,"tag":198,"props":5052,"children":5053},{"class":200,"line":388},[5054,5059,5063,5067,5071,5075,5080,5084,5088],{"type":44,"tag":198,"props":5055,"children":5056},{"style":283},[5057],{"type":50,"value":5058},"  throw",{"type":44,"tag":198,"props":5060,"children":5061},{"style":217},[5062],{"type":50,"value":399},{"type":44,"tag":198,"props":5064,"children":5065},{"style":289},[5066],{"type":50,"value":404},{"type":44,"tag":198,"props":5068,"children":5069},{"style":295},[5070],{"type":50,"value":298},{"type":44,"tag":198,"props":5072,"children":5073},{"style":217},[5074],{"type":50,"value":601},{"type":44,"tag":198,"props":5076,"children":5077},{"style":306},[5078],{"type":50,"value":5079},"EXPO_PUBLIC_API_URL is not defined",{"type":44,"tag":198,"props":5081,"children":5082},{"style":217},[5083],{"type":50,"value":601},{"type":44,"tag":198,"props":5085,"children":5086},{"style":295},[5087],{"type":50,"value":251},{"type":44,"tag":198,"props":5089,"children":5090},{"style":217},[5091],{"type":50,"value":332},{"type":44,"tag":198,"props":5093,"children":5094},{"class":200,"line":449},[5095],{"type":44,"tag":198,"props":5096,"children":5097},{"style":217},[5098],{"type":50,"value":1387},{"type":44,"tag":198,"props":5100,"children":5101},{"class":200,"line":458},[5102],{"type":44,"tag":198,"props":5103,"children":5104},{"emptyLinePlaceholder":339},[5105],{"type":50,"value":342},{"type":44,"tag":198,"props":5107,"children":5108},{"class":200,"line":466},[5109,5113,5117,5122,5126],{"type":44,"tag":198,"props":5110,"children":5111},{"style":283},[5112],{"type":50,"value":1262},{"type":44,"tag":198,"props":5114,"children":5115},{"style":205},[5116],{"type":50,"value":3648},{"type":44,"tag":198,"props":5118,"children":5119},{"style":211},[5120],{"type":50,"value":5121}," apiClient ",{"type":44,"tag":198,"props":5123,"children":5124},{"style":217},[5125],{"type":50,"value":220},{"type":44,"tag":198,"props":5127,"children":5128},{"style":217},[5129],{"type":50,"value":261},{"type":44,"tag":198,"props":5131,"children":5132},{"class":200,"line":497},[5133,5138,5142,5146,5150,5155,5160,5165,5169,5173,5178,5182,5186,5190,5194,5198],{"type":44,"tag":198,"props":5134,"children":5135},{"style":289},[5136],{"type":50,"value":5137},"  get",{"type":44,"tag":198,"props":5139,"children":5140},{"style":217},[5141],{"type":50,"value":187},{"type":44,"tag":198,"props":5143,"children":5144},{"style":205},[5145],{"type":50,"value":225},{"type":44,"tag":198,"props":5147,"children":5148},{"style":217},[5149],{"type":50,"value":1706},{"type":44,"tag":198,"props":5151,"children":5152},{"style":243},[5153],{"type":50,"value":5154},"T",{"type":44,"tag":198,"props":5156,"children":5157},{"style":217},[5158],{"type":50,"value":5159},",>(",{"type":44,"tag":198,"props":5161,"children":5162},{"style":233},[5163],{"type":50,"value":5164},"path",{"type":44,"tag":198,"props":5166,"children":5167},{"style":217},[5168],{"type":50,"value":187},{"type":44,"tag":198,"props":5170,"children":5171},{"style":243},[5172],{"type":50,"value":246},{"type":44,"tag":198,"props":5174,"children":5175},{"style":217},[5176],{"type":50,"value":5177},"):",{"type":44,"tag":198,"props":5179,"children":5180},{"style":243},[5181],{"type":50,"value":3410},{"type":44,"tag":198,"props":5183,"children":5184},{"style":217},[5185],{"type":50,"value":4186},{"type":44,"tag":198,"props":5187,"children":5188},{"style":243},[5189],{"type":50,"value":5154},{"type":44,"tag":198,"props":5191,"children":5192},{"style":217},[5193],{"type":50,"value":4196},{"type":44,"tag":198,"props":5195,"children":5196},{"style":205},[5197],{"type":50,"value":256},{"type":44,"tag":198,"props":5199,"children":5200},{"style":217},[5201],{"type":50,"value":261},{"type":44,"tag":198,"props":5203,"children":5204},{"class":200,"line":812},[5205,5209,5213,5217,5221,5225,5229,5233,5238,5243,5247,5251,5255],{"type":44,"tag":198,"props":5206,"children":5207},{"style":205},[5208],{"type":50,"value":862},{"type":44,"tag":198,"props":5210,"children":5211},{"style":211},[5212],{"type":50,"value":275},{"type":44,"tag":198,"props":5214,"children":5215},{"style":217},[5216],{"type":50,"value":280},{"type":44,"tag":198,"props":5218,"children":5219},{"style":283},[5220],{"type":50,"value":286},{"type":44,"tag":198,"props":5222,"children":5223},{"style":289},[5224],{"type":50,"value":292},{"type":44,"tag":198,"props":5226,"children":5227},{"style":295},[5228],{"type":50,"value":298},{"type":44,"tag":198,"props":5230,"children":5231},{"style":217},[5232],{"type":50,"value":4806},{"type":44,"tag":198,"props":5234,"children":5235},{"style":211},[5236],{"type":50,"value":5237},"BASE_URL",{"type":44,"tag":198,"props":5239,"children":5240},{"style":217},[5241],{"type":50,"value":5242},"}${",{"type":44,"tag":198,"props":5244,"children":5245},{"style":211},[5246],{"type":50,"value":5164},{"type":44,"tag":198,"props":5248,"children":5249},{"style":217},[5250],{"type":50,"value":323},{"type":44,"tag":198,"props":5252,"children":5253},{"style":295},[5254],{"type":50,"value":251},{"type":44,"tag":198,"props":5256,"children":5257},{"style":217},[5258],{"type":50,"value":332},{"type":44,"tag":198,"props":5260,"children":5261},{"class":200,"line":820},[5262,5266,5270,5274,5278,5282,5286,5290,5294,5298,5302,5306,5310,5315,5319,5323,5327,5331,5335,5339],{"type":44,"tag":198,"props":5263,"children":5264},{"style":283},[5265],{"type":50,"value":2636},{"type":44,"tag":198,"props":5267,"children":5268},{"style":295},[5269],{"type":50,"value":230},{"type":44,"tag":198,"props":5271,"children":5272},{"style":217},[5273],{"type":50,"value":360},{"type":44,"tag":198,"props":5275,"children":5276},{"style":211},[5277],{"type":50,"value":365},{"type":44,"tag":198,"props":5279,"children":5280},{"style":217},[5281],{"type":50,"value":370},{"type":44,"tag":198,"props":5283,"children":5284},{"style":211},[5285],{"type":50,"value":375},{"type":44,"tag":198,"props":5287,"children":5288},{"style":295},[5289],{"type":50,"value":380},{"type":44,"tag":198,"props":5291,"children":5292},{"style":283},[5293],{"type":50,"value":3377},{"type":44,"tag":198,"props":5295,"children":5296},{"style":217},[5297],{"type":50,"value":399},{"type":44,"tag":198,"props":5299,"children":5300},{"style":289},[5301],{"type":50,"value":404},{"type":44,"tag":198,"props":5303,"children":5304},{"style":295},[5305],{"type":50,"value":298},{"type":44,"tag":198,"props":5307,"children":5308},{"style":217},[5309],{"type":50,"value":303},{"type":44,"tag":198,"props":5311,"children":5312},{"style":306},[5313],{"type":50,"value":5314},"HTTP ",{"type":44,"tag":198,"props":5316,"children":5317},{"style":217},[5318],{"type":50,"value":314},{"type":44,"tag":198,"props":5320,"children":5321},{"style":211},[5322],{"type":50,"value":365},{"type":44,"tag":198,"props":5324,"children":5325},{"style":217},[5326],{"type":50,"value":370},{"type":44,"tag":198,"props":5328,"children":5329},{"style":211},[5330],{"type":50,"value":434},{"type":44,"tag":198,"props":5332,"children":5333},{"style":217},[5334],{"type":50,"value":323},{"type":44,"tag":198,"props":5336,"children":5337},{"style":295},[5338],{"type":50,"value":251},{"type":44,"tag":198,"props":5340,"children":5341},{"style":217},[5342],{"type":50,"value":332},{"type":44,"tag":198,"props":5344,"children":5345},{"class":200,"line":856},[5346,5350,5354,5358,5362,5366],{"type":44,"tag":198,"props":5347,"children":5348},{"style":283},[5349],{"type":50,"value":2871},{"type":44,"tag":198,"props":5351,"children":5352},{"style":211},[5353],{"type":50,"value":275},{"type":44,"tag":198,"props":5355,"children":5356},{"style":217},[5357],{"type":50,"value":370},{"type":44,"tag":198,"props":5359,"children":5360},{"style":289},[5361],{"type":50,"value":485},{"type":44,"tag":198,"props":5363,"children":5364},{"style":295},[5365],{"type":50,"value":490},{"type":44,"tag":198,"props":5367,"children":5368},{"style":217},[5369],{"type":50,"value":332},{"type":44,"tag":198,"props":5371,"children":5372},{"class":200,"line":898},[5373],{"type":44,"tag":198,"props":5374,"children":5375},{"style":217},[5376],{"type":50,"value":1231},{"type":44,"tag":198,"props":5378,"children":5379},{"class":200,"line":940},[5380],{"type":44,"tag":198,"props":5381,"children":5382},{"emptyLinePlaceholder":339},[5383],{"type":50,"value":342},{"type":44,"tag":198,"props":5385,"children":5386},{"class":200,"line":948},[5387,5392,5396,5400,5404,5408,5412,5416,5420,5424,5428,5433,5437,5442,5446,5450,5454,5458,5462,5466],{"type":44,"tag":198,"props":5388,"children":5389},{"style":289},[5390],{"type":50,"value":5391},"  post",{"type":44,"tag":198,"props":5393,"children":5394},{"style":217},[5395],{"type":50,"value":187},{"type":44,"tag":198,"props":5397,"children":5398},{"style":205},[5399],{"type":50,"value":225},{"type":44,"tag":198,"props":5401,"children":5402},{"style":217},[5403],{"type":50,"value":1706},{"type":44,"tag":198,"props":5405,"children":5406},{"style":243},[5407],{"type":50,"value":5154},{"type":44,"tag":198,"props":5409,"children":5410},{"style":217},[5411],{"type":50,"value":5159},{"type":44,"tag":198,"props":5413,"children":5414},{"style":233},[5415],{"type":50,"value":5164},{"type":44,"tag":198,"props":5417,"children":5418},{"style":217},[5419],{"type":50,"value":187},{"type":44,"tag":198,"props":5421,"children":5422},{"style":243},[5423],{"type":50,"value":246},{"type":44,"tag":198,"props":5425,"children":5426},{"style":217},[5427],{"type":50,"value":615},{"type":44,"tag":198,"props":5429,"children":5430},{"style":233},[5431],{"type":50,"value":5432}," body",{"type":44,"tag":198,"props":5434,"children":5435},{"style":217},[5436],{"type":50,"value":187},{"type":44,"tag":198,"props":5438,"children":5439},{"style":243},[5440],{"type":50,"value":5441}," unknown",{"type":44,"tag":198,"props":5443,"children":5444},{"style":217},[5445],{"type":50,"value":5177},{"type":44,"tag":198,"props":5447,"children":5448},{"style":243},[5449],{"type":50,"value":3410},{"type":44,"tag":198,"props":5451,"children":5452},{"style":217},[5453],{"type":50,"value":4186},{"type":44,"tag":198,"props":5455,"children":5456},{"style":243},[5457],{"type":50,"value":5154},{"type":44,"tag":198,"props":5459,"children":5460},{"style":217},[5461],{"type":50,"value":4196},{"type":44,"tag":198,"props":5463,"children":5464},{"style":205},[5465],{"type":50,"value":256},{"type":44,"tag":198,"props":5467,"children":5468},{"style":217},[5469],{"type":50,"value":261},{"type":44,"tag":198,"props":5471,"children":5472},{"class":200,"line":956},[5473,5477,5481,5485,5489,5493,5497,5501,5505,5509,5513,5517,5521],{"type":44,"tag":198,"props":5474,"children":5475},{"style":205},[5476],{"type":50,"value":862},{"type":44,"tag":198,"props":5478,"children":5479},{"style":211},[5480],{"type":50,"value":275},{"type":44,"tag":198,"props":5482,"children":5483},{"style":217},[5484],{"type":50,"value":280},{"type":44,"tag":198,"props":5486,"children":5487},{"style":283},[5488],{"type":50,"value":286},{"type":44,"tag":198,"props":5490,"children":5491},{"style":289},[5492],{"type":50,"value":292},{"type":44,"tag":198,"props":5494,"children":5495},{"style":295},[5496],{"type":50,"value":298},{"type":44,"tag":198,"props":5498,"children":5499},{"style":217},[5500],{"type":50,"value":4806},{"type":44,"tag":198,"props":5502,"children":5503},{"style":211},[5504],{"type":50,"value":5237},{"type":44,"tag":198,"props":5506,"children":5507},{"style":217},[5508],{"type":50,"value":5242},{"type":44,"tag":198,"props":5510,"children":5511},{"style":211},[5512],{"type":50,"value":5164},{"type":44,"tag":198,"props":5514,"children":5515},{"style":217},[5516],{"type":50,"value":323},{"type":44,"tag":198,"props":5518,"children":5519},{"style":217},[5520],{"type":50,"value":615},{"type":44,"tag":198,"props":5522,"children":5523},{"style":217},[5524],{"type":50,"value":261},{"type":44,"tag":198,"props":5526,"children":5527},{"class":200,"line":984},[5528,5533,5537,5541,5545,5549],{"type":44,"tag":198,"props":5529,"children":5530},{"style":295},[5531],{"type":50,"value":5532},"      method",{"type":44,"tag":198,"props":5534,"children":5535},{"style":217},[5536],{"type":50,"value":187},{"type":44,"tag":198,"props":5538,"children":5539},{"style":217},[5540],{"type":50,"value":636},{"type":44,"tag":198,"props":5542,"children":5543},{"style":306},[5544],{"type":50,"value":641},{"type":44,"tag":198,"props":5546,"children":5547},{"style":217},[5548],{"type":50,"value":601},{"type":44,"tag":198,"props":5550,"children":5551},{"style":217},[5552],{"type":50,"value":650},{"type":44,"tag":198,"props":5554,"children":5555},{"class":200,"line":1368},[5556,5561,5565,5569,5573,5577,5581,5585,5589,5593,5597],{"type":44,"tag":198,"props":5557,"children":5558},{"style":295},[5559],{"type":50,"value":5560},"      headers",{"type":44,"tag":198,"props":5562,"children":5563},{"style":217},[5564],{"type":50,"value":187},{"type":44,"tag":198,"props":5566,"children":5567},{"style":217},[5568],{"type":50,"value":1037},{"type":44,"tag":198,"props":5570,"children":5571},{"style":217},[5572],{"type":50,"value":636},{"type":44,"tag":198,"props":5574,"children":5575},{"style":295},[5576],{"type":50,"value":679},{"type":44,"tag":198,"props":5578,"children":5579},{"style":217},[5580],{"type":50,"value":601},{"type":44,"tag":198,"props":5582,"children":5583},{"style":217},[5584],{"type":50,"value":187},{"type":44,"tag":198,"props":5586,"children":5587},{"style":217},[5588],{"type":50,"value":636},{"type":44,"tag":198,"props":5590,"children":5591},{"style":306},[5592],{"type":50,"value":696},{"type":44,"tag":198,"props":5594,"children":5595},{"style":217},[5596],{"type":50,"value":601},{"type":44,"tag":198,"props":5598,"children":5599},{"style":217},[5600],{"type":50,"value":5601}," },\n",{"type":44,"tag":198,"props":5603,"children":5604},{"class":200,"line":1381},[5605,5610,5614,5618,5622,5626,5630,5635,5639],{"type":44,"tag":198,"props":5606,"children":5607},{"style":295},[5608],{"type":50,"value":5609},"      body",{"type":44,"tag":198,"props":5611,"children":5612},{"style":217},[5613],{"type":50,"value":187},{"type":44,"tag":198,"props":5615,"children":5616},{"style":211},[5617],{"type":50,"value":768},{"type":44,"tag":198,"props":5619,"children":5620},{"style":217},[5621],{"type":50,"value":370},{"type":44,"tag":198,"props":5623,"children":5624},{"style":289},[5625],{"type":50,"value":777},{"type":44,"tag":198,"props":5627,"children":5628},{"style":295},[5629],{"type":50,"value":298},{"type":44,"tag":198,"props":5631,"children":5632},{"style":211},[5633],{"type":50,"value":5634},"body",{"type":44,"tag":198,"props":5636,"children":5637},{"style":295},[5638],{"type":50,"value":251},{"type":44,"tag":198,"props":5640,"children":5641},{"style":217},[5642],{"type":50,"value":650},{"type":44,"tag":198,"props":5644,"children":5645},{"class":200,"line":2857},[5646,5650,5654],{"type":44,"tag":198,"props":5647,"children":5648},{"style":217},[5649],{"type":50,"value":3312},{"type":44,"tag":198,"props":5651,"children":5652},{"style":295},[5653],{"type":50,"value":251},{"type":44,"tag":198,"props":5655,"children":5656},{"style":217},[5657],{"type":50,"value":332},{"type":44,"tag":198,"props":5659,"children":5660},{"class":200,"line":2865},[5661,5665,5669,5673,5677,5681,5685,5689,5693,5697,5701,5705,5709,5713,5717,5721,5725,5729,5733,5737],{"type":44,"tag":198,"props":5662,"children":5663},{"style":283},[5664],{"type":50,"value":2636},{"type":44,"tag":198,"props":5666,"children":5667},{"style":295},[5668],{"type":50,"value":230},{"type":44,"tag":198,"props":5670,"children":5671},{"style":217},[5672],{"type":50,"value":360},{"type":44,"tag":198,"props":5674,"children":5675},{"style":211},[5676],{"type":50,"value":365},{"type":44,"tag":198,"props":5678,"children":5679},{"style":217},[5680],{"type":50,"value":370},{"type":44,"tag":198,"props":5682,"children":5683},{"style":211},[5684],{"type":50,"value":375},{"type":44,"tag":198,"props":5686,"children":5687},{"style":295},[5688],{"type":50,"value":380},{"type":44,"tag":198,"props":5690,"children":5691},{"style":283},[5692],{"type":50,"value":3377},{"type":44,"tag":198,"props":5694,"children":5695},{"style":217},[5696],{"type":50,"value":399},{"type":44,"tag":198,"props":5698,"children":5699},{"style":289},[5700],{"type":50,"value":404},{"type":44,"tag":198,"props":5702,"children":5703},{"style":295},[5704],{"type":50,"value":298},{"type":44,"tag":198,"props":5706,"children":5707},{"style":217},[5708],{"type":50,"value":303},{"type":44,"tag":198,"props":5710,"children":5711},{"style":306},[5712],{"type":50,"value":5314},{"type":44,"tag":198,"props":5714,"children":5715},{"style":217},[5716],{"type":50,"value":314},{"type":44,"tag":198,"props":5718,"children":5719},{"style":211},[5720],{"type":50,"value":365},{"type":44,"tag":198,"props":5722,"children":5723},{"style":217},[5724],{"type":50,"value":370},{"type":44,"tag":198,"props":5726,"children":5727},{"style":211},[5728],{"type":50,"value":434},{"type":44,"tag":198,"props":5730,"children":5731},{"style":217},[5732],{"type":50,"value":323},{"type":44,"tag":198,"props":5734,"children":5735},{"style":295},[5736],{"type":50,"value":251},{"type":44,"tag":198,"props":5738,"children":5739},{"style":217},[5740],{"type":50,"value":332},{"type":44,"tag":198,"props":5742,"children":5743},{"class":200,"line":2894},[5744,5748,5752,5756,5760,5764],{"type":44,"tag":198,"props":5745,"children":5746},{"style":283},[5747],{"type":50,"value":2871},{"type":44,"tag":198,"props":5749,"children":5750},{"style":211},[5751],{"type":50,"value":275},{"type":44,"tag":198,"props":5753,"children":5754},{"style":217},[5755],{"type":50,"value":370},{"type":44,"tag":198,"props":5757,"children":5758},{"style":289},[5759],{"type":50,"value":485},{"type":44,"tag":198,"props":5761,"children":5762},{"style":295},[5763],{"type":50,"value":490},{"type":44,"tag":198,"props":5765,"children":5766},{"style":217},[5767],{"type":50,"value":332},{"type":44,"tag":198,"props":5769,"children":5770},{"class":200,"line":2923},[5771],{"type":44,"tag":198,"props":5772,"children":5773},{"style":217},[5774],{"type":50,"value":1231},{"type":44,"tag":198,"props":5776,"children":5777},{"class":200,"line":2956},[5778],{"type":44,"tag":198,"props":5779,"children":5780},{"style":217},[5781],{"type":50,"value":503},{"type":44,"tag":53,"props":5783,"children":5784},{},[5785,5790],{"type":44,"tag":57,"props":5786,"children":5787},{},[5788],{"type":50,"value":5789},"Important notes",{"type":50,"value":187},{"type":44,"tag":99,"props":5792,"children":5793},{},[5794,5806,5818,5830,5843],{"type":44,"tag":103,"props":5795,"children":5796},{},[5797,5799,5804],{"type":50,"value":5798},"Only variables prefixed with ",{"type":44,"tag":82,"props":5800,"children":5802},{"className":5801},[],[5803],{"type":50,"value":4618},{"type":50,"value":5805}," are exposed to the client bundle",{"type":44,"tag":103,"props":5807,"children":5808},{},[5809,5811,5816],{"type":50,"value":5810},"Never put secrets (API keys with write access, database passwords) in ",{"type":44,"tag":82,"props":5812,"children":5814},{"className":5813},[],[5815],{"type":50,"value":4618},{"type":50,"value":5817}," variables—they're visible in the built app",{"type":44,"tag":103,"props":5819,"children":5820},{},[5821,5823,5828],{"type":50,"value":5822},"Environment variables are inlined at ",{"type":44,"tag":57,"props":5824,"children":5825},{},[5826],{"type":50,"value":5827},"build time",{"type":50,"value":5829},", not runtime",{"type":44,"tag":103,"props":5831,"children":5832},{},[5833,5835,5841],{"type":50,"value":5834},"Restart the dev server after changing ",{"type":44,"tag":82,"props":5836,"children":5838},{"className":5837},[],[5839],{"type":50,"value":5840},".env",{"type":50,"value":5842}," files",{"type":44,"tag":103,"props":5844,"children":5845},{},[5846,5848,5853],{"type":50,"value":5847},"For server-side secrets in API routes, use variables without the ",{"type":44,"tag":82,"props":5849,"children":5851},{"className":5850},[],[5852],{"type":50,"value":4618},{"type":50,"value":5854}," prefix",{"type":44,"tag":53,"props":5856,"children":5857},{},[5858,5863],{"type":44,"tag":57,"props":5859,"children":5860},{},[5861],{"type":50,"value":5862},"TypeScript support",{"type":50,"value":187},{"type":44,"tag":75,"props":5865,"children":5867},{"className":190,"code":5866,"language":192,"meta":84,"style":84},"\u002F\u002F types\u002Fenv.d.ts\ndeclare global {\n  namespace NodeJS {\n    interface ProcessEnv {\n      EXPO_PUBLIC_API_URL: string;\n      EXPO_PUBLIC_API_VERSION?: string;\n    }\n  }\n}\n\nexport {};\n",[5868],{"type":44,"tag":82,"props":5869,"children":5870},{"__ignoreMap":84},[5871,5879,5896,5913,5930,5950,5970,5977,5984,5991,5998],{"type":44,"tag":198,"props":5872,"children":5873},{"class":200,"line":201},[5874],{"type":44,"tag":198,"props":5875,"children":5876},{"style":1021},[5877],{"type":50,"value":5878},"\u002F\u002F types\u002Fenv.d.ts\n",{"type":44,"tag":198,"props":5880,"children":5881},{"class":200,"line":264},[5882,5887,5892],{"type":44,"tag":198,"props":5883,"children":5884},{"style":205},[5885],{"type":50,"value":5886},"declare",{"type":44,"tag":198,"props":5888,"children":5889},{"style":211},[5890],{"type":50,"value":5891}," global ",{"type":44,"tag":198,"props":5893,"children":5894},{"style":217},[5895],{"type":50,"value":385},{"type":44,"tag":198,"props":5897,"children":5898},{"class":200,"line":335},[5899,5904,5909],{"type":44,"tag":198,"props":5900,"children":5901},{"style":205},[5902],{"type":50,"value":5903},"  namespace",{"type":44,"tag":198,"props":5905,"children":5906},{"style":243},[5907],{"type":50,"value":5908}," NodeJS",{"type":44,"tag":198,"props":5910,"children":5911},{"style":217},[5912],{"type":50,"value":261},{"type":44,"tag":198,"props":5914,"children":5915},{"class":200,"line":345},[5916,5921,5926],{"type":44,"tag":198,"props":5917,"children":5918},{"style":205},[5919],{"type":50,"value":5920},"    interface",{"type":44,"tag":198,"props":5922,"children":5923},{"style":243},[5924],{"type":50,"value":5925}," ProcessEnv",{"type":44,"tag":198,"props":5927,"children":5928},{"style":217},[5929],{"type":50,"value":261},{"type":44,"tag":198,"props":5931,"children":5932},{"class":200,"line":388},[5933,5938,5942,5946],{"type":44,"tag":198,"props":5934,"children":5935},{"style":295},[5936],{"type":50,"value":5937},"      EXPO_PUBLIC_API_URL",{"type":44,"tag":198,"props":5939,"children":5940},{"style":217},[5941],{"type":50,"value":187},{"type":44,"tag":198,"props":5943,"children":5944},{"style":243},[5945],{"type":50,"value":246},{"type":44,"tag":198,"props":5947,"children":5948},{"style":217},[5949],{"type":50,"value":332},{"type":44,"tag":198,"props":5951,"children":5952},{"class":200,"line":449},[5953,5958,5962,5966],{"type":44,"tag":198,"props":5954,"children":5955},{"style":295},[5956],{"type":50,"value":5957},"      EXPO_PUBLIC_API_VERSION",{"type":44,"tag":198,"props":5959,"children":5960},{"style":217},[5961],{"type":50,"value":2404},{"type":44,"tag":198,"props":5963,"children":5964},{"style":243},[5965],{"type":50,"value":246},{"type":44,"tag":198,"props":5967,"children":5968},{"style":217},[5969],{"type":50,"value":332},{"type":44,"tag":198,"props":5971,"children":5972},{"class":200,"line":458},[5973],{"type":44,"tag":198,"props":5974,"children":5975},{"style":217},[5976],{"type":50,"value":2854},{"type":44,"tag":198,"props":5978,"children":5979},{"class":200,"line":466},[5980],{"type":44,"tag":198,"props":5981,"children":5982},{"style":217},[5983],{"type":50,"value":455},{"type":44,"tag":198,"props":5985,"children":5986},{"class":200,"line":497},[5987],{"type":44,"tag":198,"props":5988,"children":5989},{"style":217},[5990],{"type":50,"value":1387},{"type":44,"tag":198,"props":5992,"children":5993},{"class":200,"line":812},[5994],{"type":44,"tag":198,"props":5995,"children":5996},{"emptyLinePlaceholder":339},[5997],{"type":50,"value":342},{"type":44,"tag":198,"props":5999,"children":6000},{"class":200,"line":820},[6001,6005],{"type":44,"tag":198,"props":6002,"children":6003},{"style":283},[6004],{"type":50,"value":1262},{"type":44,"tag":198,"props":6006,"children":6007},{"style":217},[6008],{"type":50,"value":6009}," {};\n",{"type":44,"tag":991,"props":6011,"children":6012},{},[],{"type":44,"tag":172,"props":6014,"children":6016},{"id":6015},"_7-request-cancellation",[6017],{"type":50,"value":6018},"7. Request Cancellation",{"type":44,"tag":53,"props":6020,"children":6021},{},[6022,6024,6028],{"type":50,"value":6023},"AbortController on unmount (React Query cancels automatically): see ",{"type":44,"tag":4584,"props":6025,"children":6026},{"href":4586},[6027],{"type":50,"value":4586},{"type":50,"value":370},{"type":44,"tag":991,"props":6030,"children":6031},{},[],{"type":44,"tag":63,"props":6033,"children":6035},{"id":6034},"decision-tree",[6036],{"type":50,"value":6037},"Decision Tree",{"type":44,"tag":75,"props":6039,"children":6042},{"className":6040,"code":6041,"language":50},[78],"User asks about networking\n  |-- Route-level data loading (web, SDK 55+)?\n  |   \\-- Expo Router loaders — see references\u002Fexpo-router-loaders.md\n  |\n  |-- Basic fetch?\n  |   \\-- Use fetch API with error handling\n  |\n  |-- Need caching\u002Fstate management?\n  |   |-- Complex app -> React Query (TanStack Query)\n  |   \\-- Simpler needs -> SWR or custom hooks\n  |\n  |-- Authentication?\n  |   |-- Token storage -> expo-secure-store\n  |   \\-- Token refresh -> Implement refresh flow\n  |\n  |-- Error handling?\n  |   |-- Network errors -> Check connectivity first\n  |   |-- HTTP errors -> Parse response, throw typed errors\n  |   \\-- Retries -> Exponential backoff\n  |\n  |-- Offline support?\n  |   |-- Check status -> NetInfo\n  |   \\-- Queue requests -> React Query persistence\n  |\n  |-- Environment\u002FAPI config?\n  |   |-- Client-side URLs -> EXPO_PUBLIC_ prefix in .env\n  |   |-- Server secrets -> Non-prefixed env vars (API routes only)\n  |   \\-- Multiple environments -> .env.development, .env.production\n  |\n  \\-- Performance?\n      |-- Caching -> React Query with staleTime\n      |-- Deduplication -> React Query handles this\n      \\-- Cancellation -> AbortController or React Query\n",[6043],{"type":44,"tag":82,"props":6044,"children":6045},{"__ignoreMap":84},[6046],{"type":50,"value":6041},{"type":44,"tag":63,"props":6048,"children":6050},{"id":6049},"common-mistakes",[6051],{"type":50,"value":6052},"Common Mistakes",{"type":44,"tag":53,"props":6054,"children":6055},{},[6056],{"type":44,"tag":57,"props":6057,"children":6058},{},[6059],{"type":50,"value":6060},"Wrong: No error handling",{"type":44,"tag":75,"props":6062,"children":6064},{"className":190,"code":6063,"language":192,"meta":84,"style":84},"const data = await fetch(url).then((r) => r.json());\n",[6065],{"type":44,"tag":82,"props":6066,"children":6067},{"__ignoreMap":84},[6068],{"type":44,"tag":198,"props":6069,"children":6070},{"class":200,"line":201},[6071,6075,6080,6084,6088,6092,6097,6101,6106,6110,6114,6118,6122,6126,6131,6135,6139,6144],{"type":44,"tag":198,"props":6072,"children":6073},{"style":205},[6074],{"type":50,"value":208},{"type":44,"tag":198,"props":6076,"children":6077},{"style":211},[6078],{"type":50,"value":6079}," data ",{"type":44,"tag":198,"props":6081,"children":6082},{"style":217},[6083],{"type":50,"value":220},{"type":44,"tag":198,"props":6085,"children":6086},{"style":283},[6087],{"type":50,"value":286},{"type":44,"tag":198,"props":6089,"children":6090},{"style":289},[6091],{"type":50,"value":292},{"type":44,"tag":198,"props":6093,"children":6094},{"style":211},[6095],{"type":50,"value":6096},"(url)",{"type":44,"tag":198,"props":6098,"children":6099},{"style":217},[6100],{"type":50,"value":370},{"type":44,"tag":198,"props":6102,"children":6103},{"style":289},[6104],{"type":50,"value":6105},"then",{"type":44,"tag":198,"props":6107,"children":6108},{"style":211},[6109],{"type":50,"value":298},{"type":44,"tag":198,"props":6111,"children":6112},{"style":217},[6113],{"type":50,"value":298},{"type":44,"tag":198,"props":6115,"children":6116},{"style":233},[6117],{"type":50,"value":3423},{"type":44,"tag":198,"props":6119,"children":6120},{"style":217},[6121],{"type":50,"value":251},{"type":44,"tag":198,"props":6123,"children":6124},{"style":205},[6125],{"type":50,"value":256},{"type":44,"tag":198,"props":6127,"children":6128},{"style":211},[6129],{"type":50,"value":6130}," r",{"type":44,"tag":198,"props":6132,"children":6133},{"style":217},[6134],{"type":50,"value":370},{"type":44,"tag":198,"props":6136,"children":6137},{"style":289},[6138],{"type":50,"value":485},{"type":44,"tag":198,"props":6140,"children":6141},{"style":211},[6142],{"type":50,"value":6143},"())",{"type":44,"tag":198,"props":6145,"children":6146},{"style":217},[6147],{"type":50,"value":332},{"type":44,"tag":53,"props":6149,"children":6150},{},[6151],{"type":44,"tag":57,"props":6152,"children":6153},{},[6154],{"type":50,"value":6155},"Right: Check response status",{"type":44,"tag":75,"props":6157,"children":6159},{"className":190,"code":6158,"language":192,"meta":84,"style":84},"const response = await fetch(url);\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\n",[6160],{"type":44,"tag":82,"props":6161,"children":6162},{"__ignoreMap":84},[6163,6195,6275],{"type":44,"tag":198,"props":6164,"children":6165},{"class":200,"line":201},[6166,6170,6175,6179,6183,6187,6191],{"type":44,"tag":198,"props":6167,"children":6168},{"style":205},[6169],{"type":50,"value":208},{"type":44,"tag":198,"props":6171,"children":6172},{"style":211},[6173],{"type":50,"value":6174}," response ",{"type":44,"tag":198,"props":6176,"children":6177},{"style":217},[6178],{"type":50,"value":220},{"type":44,"tag":198,"props":6180,"children":6181},{"style":283},[6182],{"type":50,"value":286},{"type":44,"tag":198,"props":6184,"children":6185},{"style":289},[6186],{"type":50,"value":292},{"type":44,"tag":198,"props":6188,"children":6189},{"style":211},[6190],{"type":50,"value":6096},{"type":44,"tag":198,"props":6192,"children":6193},{"style":217},[6194],{"type":50,"value":332},{"type":44,"tag":198,"props":6196,"children":6197},{"class":200,"line":264},[6198,6202,6206,6210,6214,6218,6223,6227,6231,6235,6239,6243,6247,6251,6255,6259,6263,6267,6271],{"type":44,"tag":198,"props":6199,"children":6200},{"style":283},[6201],{"type":50,"value":5033},{"type":44,"tag":198,"props":6203,"children":6204},{"style":211},[6205],{"type":50,"value":230},{"type":44,"tag":198,"props":6207,"children":6208},{"style":217},[6209],{"type":50,"value":360},{"type":44,"tag":198,"props":6211,"children":6212},{"style":211},[6213],{"type":50,"value":365},{"type":44,"tag":198,"props":6215,"children":6216},{"style":217},[6217],{"type":50,"value":370},{"type":44,"tag":198,"props":6219,"children":6220},{"style":211},[6221],{"type":50,"value":6222},"ok) ",{"type":44,"tag":198,"props":6224,"children":6225},{"style":283},[6226],{"type":50,"value":3377},{"type":44,"tag":198,"props":6228,"children":6229},{"style":217},[6230],{"type":50,"value":399},{"type":44,"tag":198,"props":6232,"children":6233},{"style":289},[6234],{"type":50,"value":404},{"type":44,"tag":198,"props":6236,"children":6237},{"style":211},[6238],{"type":50,"value":298},{"type":44,"tag":198,"props":6240,"children":6241},{"style":217},[6242],{"type":50,"value":303},{"type":44,"tag":198,"props":6244,"children":6245},{"style":306},[6246],{"type":50,"value":5314},{"type":44,"tag":198,"props":6248,"children":6249},{"style":217},[6250],{"type":50,"value":314},{"type":44,"tag":198,"props":6252,"children":6253},{"style":211},[6254],{"type":50,"value":365},{"type":44,"tag":198,"props":6256,"children":6257},{"style":217},[6258],{"type":50,"value":370},{"type":44,"tag":198,"props":6260,"children":6261},{"style":211},[6262],{"type":50,"value":434},{"type":44,"tag":198,"props":6264,"children":6265},{"style":217},[6266],{"type":50,"value":323},{"type":44,"tag":198,"props":6268,"children":6269},{"style":211},[6270],{"type":50,"value":251},{"type":44,"tag":198,"props":6272,"children":6273},{"style":217},[6274],{"type":50,"value":332},{"type":44,"tag":198,"props":6276,"children":6277},{"class":200,"line":335},[6278,6282,6286,6290,6294,6298,6302,6306,6310],{"type":44,"tag":198,"props":6279,"children":6280},{"style":205},[6281],{"type":50,"value":208},{"type":44,"tag":198,"props":6283,"children":6284},{"style":211},[6285],{"type":50,"value":6079},{"type":44,"tag":198,"props":6287,"children":6288},{"style":217},[6289],{"type":50,"value":220},{"type":44,"tag":198,"props":6291,"children":6292},{"style":283},[6293],{"type":50,"value":286},{"type":44,"tag":198,"props":6295,"children":6296},{"style":211},[6297],{"type":50,"value":275},{"type":44,"tag":198,"props":6299,"children":6300},{"style":217},[6301],{"type":50,"value":370},{"type":44,"tag":198,"props":6303,"children":6304},{"style":289},[6305],{"type":50,"value":485},{"type":44,"tag":198,"props":6307,"children":6308},{"style":211},[6309],{"type":50,"value":490},{"type":44,"tag":198,"props":6311,"children":6312},{"style":217},[6313],{"type":50,"value":332},{"type":44,"tag":53,"props":6315,"children":6316},{},[6317],{"type":44,"tag":57,"props":6318,"children":6319},{},[6320],{"type":50,"value":6321},"Wrong: Storing tokens in AsyncStorage",{"type":44,"tag":75,"props":6323,"children":6325},{"className":190,"code":6324,"language":192,"meta":84,"style":84},"await AsyncStorage.setItem(\"token\", token); \u002F\u002F Not secure!\n",[6326],{"type":44,"tag":82,"props":6327,"children":6328},{"__ignoreMap":84},[6329],{"type":44,"tag":198,"props":6330,"children":6331},{"class":200,"line":201},[6332,6337,6342,6346,6351,6355,6359,6363,6367,6371,6375,6379],{"type":44,"tag":198,"props":6333,"children":6334},{"style":283},[6335],{"type":50,"value":6336},"await",{"type":44,"tag":198,"props":6338,"children":6339},{"style":211},[6340],{"type":50,"value":6341}," AsyncStorage",{"type":44,"tag":198,"props":6343,"children":6344},{"style":217},[6345],{"type":50,"value":370},{"type":44,"tag":198,"props":6347,"children":6348},{"style":289},[6349],{"type":50,"value":6350},"setItem",{"type":44,"tag":198,"props":6352,"children":6353},{"style":211},[6354],{"type":50,"value":298},{"type":44,"tag":198,"props":6356,"children":6357},{"style":217},[6358],{"type":50,"value":601},{"type":44,"tag":198,"props":6360,"children":6361},{"style":306},[6362],{"type":50,"value":735},{"type":44,"tag":198,"props":6364,"children":6365},{"style":217},[6366],{"type":50,"value":601},{"type":44,"tag":198,"props":6368,"children":6369},{"style":217},[6370],{"type":50,"value":615},{"type":44,"tag":198,"props":6372,"children":6373},{"style":211},[6374],{"type":50,"value":3767},{"type":44,"tag":198,"props":6376,"children":6377},{"style":217},[6378],{"type":50,"value":3217},{"type":44,"tag":198,"props":6380,"children":6381},{"style":1021},[6382],{"type":50,"value":6383}," \u002F\u002F Not secure!\n",{"type":44,"tag":53,"props":6385,"children":6386},{},[6387],{"type":44,"tag":57,"props":6388,"children":6389},{},[6390],{"type":50,"value":6391},"Right: Use SecureStore for sensitive data",{"type":44,"tag":75,"props":6393,"children":6395},{"className":190,"code":6394,"language":192,"meta":84,"style":84},"await SecureStore.setItemAsync(\"token\", token);\n",[6396],{"type":44,"tag":82,"props":6397,"children":6398},{"__ignoreMap":84},[6399],{"type":44,"tag":198,"props":6400,"children":6401},{"class":200,"line":201},[6402,6406,6410,6414,6418,6422,6426,6430,6434,6438,6442],{"type":44,"tag":198,"props":6403,"children":6404},{"style":283},[6405],{"type":50,"value":6336},{"type":44,"tag":198,"props":6407,"children":6408},{"style":211},[6409],{"type":50,"value":3686},{"type":44,"tag":198,"props":6411,"children":6412},{"style":217},[6413],{"type":50,"value":370},{"type":44,"tag":198,"props":6415,"children":6416},{"style":289},[6417],{"type":50,"value":3753},{"type":44,"tag":198,"props":6419,"children":6420},{"style":211},[6421],{"type":50,"value":298},{"type":44,"tag":198,"props":6423,"children":6424},{"style":217},[6425],{"type":50,"value":601},{"type":44,"tag":198,"props":6427,"children":6428},{"style":306},[6429],{"type":50,"value":735},{"type":44,"tag":198,"props":6431,"children":6432},{"style":217},[6433],{"type":50,"value":601},{"type":44,"tag":198,"props":6435,"children":6436},{"style":217},[6437],{"type":50,"value":615},{"type":44,"tag":198,"props":6439,"children":6440},{"style":211},[6441],{"type":50,"value":3767},{"type":44,"tag":198,"props":6443,"children":6444},{"style":217},[6445],{"type":50,"value":332},{"type":44,"tag":63,"props":6447,"children":6449},{"id":6448},"example-invocations",[6450],{"type":50,"value":6451},"Example Invocations",{"type":44,"tag":53,"props":6453,"children":6454},{},[6455],{"type":50,"value":6456},"User: \"How do I make API calls in React Native?\"\n-> Use fetch, wrap with error handling",{"type":44,"tag":53,"props":6458,"children":6459},{},[6460],{"type":50,"value":6461},"User: \"Should I use React Query or SWR?\"\n-> React Query for complex apps, SWR for simpler needs",{"type":44,"tag":53,"props":6463,"children":6464},{},[6465],{"type":50,"value":6466},"User: \"My app needs to work offline\"\n-> Use NetInfo for status, React Query persistence for caching",{"type":44,"tag":53,"props":6468,"children":6469},{},[6470],{"type":50,"value":6471},"User: \"How do I handle authentication tokens?\"\n-> Store in expo-secure-store, implement refresh flow",{"type":44,"tag":53,"props":6473,"children":6474},{},[6475,6477,6482,6484,6489],{"type":50,"value":6476},"User: \"API calls are slow\"\n-> Check caching strategy, use React Query staleTime\nUser: \"How do I configure different API URLs for dev and prod?\"\n-> Use ",{"type":44,"tag":82,"props":6478,"children":6480},{"className":6479},[],[6481],{"type":50,"value":4618},{"type":50,"value":6483}," env vars with .env.development and .env.production files\nUser: \"Where should I put my API key?\"\n-> Client-safe keys: ",{"type":44,"tag":82,"props":6485,"children":6487},{"className":6486},[],[6488],{"type":50,"value":4618},{"type":50,"value":6490}," in .env. Secret keys: non-prefixed env vars in API routes only",{"type":44,"tag":53,"props":6492,"children":6493},{},[6494],{"type":50,"value":6495},"User: \"How do I load data for a page in Expo Router?\"\n-> See references\u002Fexpo-router-loaders.md for route-level loaders (web, SDK 55+). For native, use React Query or fetch.",{"type":44,"tag":63,"props":6497,"children":6499},{"id":6498},"submitting-feedback",[6500],{"type":50,"value":6501},"Submitting Feedback",{"type":44,"tag":53,"props":6503,"children":6504},{},[6505],{"type":50,"value":6506},"If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:",{"type":44,"tag":75,"props":6508,"children":6512},{"className":6509,"code":6510,"language":6511,"meta":84,"style":84},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx --yes submit-expo-feedback@latest --category skills --subject \"expo-data-fetching\" \"\u003Cactionable feedback>\"\n","bash",[6513],{"type":44,"tag":82,"props":6514,"children":6515},{"__ignoreMap":84},[6516],{"type":44,"tag":198,"props":6517,"children":6518},{"class":200,"line":201},[6519,6524,6529,6534,6539,6544,6549,6553,6557,6561,6565,6570],{"type":44,"tag":198,"props":6520,"children":6521},{"style":243},[6522],{"type":50,"value":6523},"npx",{"type":44,"tag":198,"props":6525,"children":6526},{"style":306},[6527],{"type":50,"value":6528}," --yes",{"type":44,"tag":198,"props":6530,"children":6531},{"style":306},[6532],{"type":50,"value":6533}," submit-expo-feedback@latest",{"type":44,"tag":198,"props":6535,"children":6536},{"style":306},[6537],{"type":50,"value":6538}," --category",{"type":44,"tag":198,"props":6540,"children":6541},{"style":306},[6542],{"type":50,"value":6543}," skills",{"type":44,"tag":198,"props":6545,"children":6546},{"style":306},[6547],{"type":50,"value":6548}," --subject",{"type":44,"tag":198,"props":6550,"children":6551},{"style":217},[6552],{"type":50,"value":636},{"type":44,"tag":198,"props":6554,"children":6555},{"style":306},[6556],{"type":50,"value":4},{"type":44,"tag":198,"props":6558,"children":6559},{"style":217},[6560],{"type":50,"value":601},{"type":44,"tag":198,"props":6562,"children":6563},{"style":217},[6564],{"type":50,"value":636},{"type":44,"tag":198,"props":6566,"children":6567},{"style":306},[6568],{"type":50,"value":6569},"\u003Cactionable feedback>",{"type":44,"tag":198,"props":6571,"children":6572},{"style":217},[6573],{"type":50,"value":6574},"\"\n",{"type":44,"tag":53,"props":6576,"children":6577},{},[6578],{"type":50,"value":6579},"Only submit when you have something specific and actionable to report. Include as much relevant context as possible.",{"type":44,"tag":6581,"props":6582,"children":6583},"style",{},[6584],{"type":50,"value":6585},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6587,"total":2894},[6588,6606,6621,6636,6650,6664,6682],{"slug":6589,"name":6589,"fn":6590,"description":6591,"org":6592,"tags":6593,"stars":26,"repoUrl":27,"updatedAt":6605},"eas-app-stores","deploy and submit Expo apps to stores","EAS service (paid). Deploy Expo apps to the app stores with EAS - build and submit to the iOS App Store, Google Play Store, and TestFlight, configure eas.json build and submit profiles, manage app versions and build numbers, and publish App Store metadata and ASO. Use whenever the user wants to deploy, release, or ship an app to production or the app stores, is preparing a production build, running eas build or eas submit, shipping to TestFlight, bumping version or build numbers, or setting up store listing metadata. For deploying an Expo website or API routes, use the eas-hosting skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6594,6597,6600,6601,6604],{"name":6595,"slug":6596,"type":15},"Android","android",{"name":6598,"slug":6599,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},"iOS","ios",{"name":18,"slug":19,"type":15},"2026-07-24T05:36:44.164663",{"slug":6607,"name":6607,"fn":6608,"description":6609,"org":6610,"tags":6611,"stars":26,"repoUrl":27,"updatedAt":6620},"eas-hosting","deploy Expo websites to EAS Hosting","EAS service (paid). Deploy Expo websites and Expo Router API routes to EAS Hosting - export the web bundle, run eas deploy for production and PR preview URLs, manage environment secrets and custom domains, and work within the Cloudflare Workers runtime. Also covers authoring API routes (+api.ts handlers, HTTP methods, request handling, CORS). Use when deploying an Expo web app or API routes, setting up EAS Hosting, or configuring hosting environments and domains. Not for native builds or store releases - use the eas-app-stores skill for those.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6612,6613,6614,6617],{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6615,"slug":6616,"type":15},"Frontend","frontend",{"name":6618,"slug":6619,"type":15},"Web Development","web-development","2026-07-24T05:36:40.193701",{"slug":6622,"name":6622,"fn":6623,"description":6624,"org":6625,"tags":6626,"stars":26,"repoUrl":27,"updatedAt":6635},"eas-observe","configure EAS Observe for Expo apps","EAS service (paid). Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot\u002FObserveRoot HOC, markInteractive, the useObserve hook, the Expo Router \u002F React Navigation integrations for per-route metrics, and user-defined events via `Observe.logEvent`), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold\u002Fwarm launch, TTR, TTI, navigation cold\u002Fwarm TTR, update download, and the TTI frameRate params for triaging slow startups).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6627,6628,6629,6632],{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":6630,"slug":6631,"type":15},"Observability","observability",{"name":6633,"slug":6634,"type":15},"React Native","react-native","2026-07-24T05:36:45.220605",{"slug":6637,"name":6637,"fn":6638,"description":6639,"org":6640,"tags":6641,"stars":26,"repoUrl":27,"updatedAt":6649},"eas-simulator","run and control remote iOS and Android simulators","EAS service (paid). Run and control a user's app on a remote iOS\u002FAndroid simulator hosted on EAS cloud. Read before running any `eas simulator:*` commands - it has the current syntax for this experimental API. Use whenever the user needs a simulator they can't run locally - 'run my app on a cloud simulator', 'use eas simulator to run\u002Finstall\u002Fscreenshot my app', 'I'm on Linux\u002FCursor and need an iOS device', 'no sim on this box \u002F headless CI', 'let an agent click through my app and screenshot it', 'test my dev build on a remote sim with live reload', 'stream a sim to my browser' - even when they don't say 'EAS Simulator' or 'cloud'. On a host WITHOUT a local simulator (Linux, CI, cloud sandbox) it's the default; on macOS, do NOT auto-trigger for a plain 'run on the simulator' - use it only for a cloud\u002Fremote\u002Fshareable sim, an iOS version they lack, or an agent-driven session. NOT for local sims (expo run:ios, Xcode, Android Studio), EAS Build\u002FUpdate, web preview, or physical devices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6642,6643,6646,6647,6648],{"name":6595,"slug":6596,"type":15},{"name":6644,"slug":6645,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},"2026-07-31T05:52:18.602058",{"slug":6651,"name":6651,"fn":6652,"description":6653,"org":6654,"tags":6655,"stars":26,"repoUrl":27,"updatedAt":6663},"eas-update-insights","check health of EAS Updates","EAS service (paid). Check the health of published EAS Update: crash rates, install\u002Flaunch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6656,6659,6660,6661,6662],{"name":6657,"slug":6658,"type":15},"Analytics","analytics",{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":6630,"slug":6631,"type":15},"2026-07-24T05:36:50.17095",{"slug":6665,"name":6665,"fn":6666,"description":6667,"org":6668,"tags":6669,"stars":26,"repoUrl":27,"updatedAt":6681},"eas-workflows","configure EAS workflows for Expo projects","EAS service (paid). Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI\u002FCD or workflows in an Expo or EAS context, mentions .eas\u002Fworkflows\u002F, or wants help with EAS build pipelines or deployment automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6670,6673,6676,6677,6678],{"name":6671,"slug":6672,"type":15},"Automation","automation",{"name":6674,"slug":6675,"type":15},"CI\u002FCD","ci-cd",{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6679,"slug":6680,"type":15},"YAML","yaml","2026-07-24T05:36:43.205514",{"slug":6683,"name":6683,"fn":6684,"description":6685,"org":6686,"tags":6687,"stars":26,"repoUrl":27,"updatedAt":6692},"expo-app-clip","add iOS App Clip targets to Expo","Framework (OSS). Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6688,6689,6690,6691],{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},{"name":6633,"slug":6634,"type":15},"2026-07-24T05:36:46.195935",{"items":6694,"total":2956},[6695,6703,6710,6717,6725,6733,6741,6748,6763,6771,6786,6797],{"slug":6589,"name":6589,"fn":6590,"description":6591,"org":6696,"tags":6697,"stars":26,"repoUrl":27,"updatedAt":6605},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6698,6699,6700,6701,6702],{"name":6595,"slug":6596,"type":15},{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},{"slug":6607,"name":6607,"fn":6608,"description":6609,"org":6704,"tags":6705,"stars":26,"repoUrl":27,"updatedAt":6620},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6706,6707,6708,6709],{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6615,"slug":6616,"type":15},{"name":6618,"slug":6619,"type":15},{"slug":6622,"name":6622,"fn":6623,"description":6624,"org":6711,"tags":6712,"stars":26,"repoUrl":27,"updatedAt":6635},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6713,6714,6715,6716],{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":6630,"slug":6631,"type":15},{"name":6633,"slug":6634,"type":15},{"slug":6637,"name":6637,"fn":6638,"description":6639,"org":6718,"tags":6719,"stars":26,"repoUrl":27,"updatedAt":6649},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6720,6721,6722,6723,6724],{"name":6595,"slug":6596,"type":15},{"name":6644,"slug":6645,"type":15},{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},{"slug":6651,"name":6651,"fn":6652,"description":6653,"org":6726,"tags":6727,"stars":26,"repoUrl":27,"updatedAt":6663},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6728,6729,6730,6731,6732],{"name":6657,"slug":6658,"type":15},{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":6630,"slug":6631,"type":15},{"slug":6665,"name":6665,"fn":6666,"description":6667,"org":6734,"tags":6735,"stars":26,"repoUrl":27,"updatedAt":6681},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6736,6737,6738,6739,6740],{"name":6671,"slug":6672,"type":15},{"name":6674,"slug":6675,"type":15},{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6679,"slug":6680,"type":15},{"slug":6683,"name":6683,"fn":6684,"description":6685,"org":6742,"tags":6743,"stars":26,"repoUrl":27,"updatedAt":6692},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6744,6745,6746,6747],{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},{"name":6633,"slug":6634,"type":15},{"slug":6749,"name":6749,"fn":6750,"description":6751,"org":6752,"tags":6753,"stars":26,"repoUrl":27,"updatedAt":6762},"expo-brownfield","integrate Expo and React Native into native apps","Framework (OSS). Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR\u002FXCFramework, or adding Expo to an existing Kotlin\u002FSwift project. Covers both the isolated approach and the integrated approach.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6754,6755,6756,6759,6760,6761],{"name":6595,"slug":6596,"type":15},{"name":9,"slug":8,"type":15},{"name":6757,"slug":6758,"type":15},"Integrations","integrations",{"name":6602,"slug":6603,"type":15},{"name":18,"slug":19,"type":15},{"name":6633,"slug":6634,"type":15},"2026-07-24T05:36:39.682299",{"slug":4,"name":4,"fn":5,"description":6,"org":6764,"tags":6765,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6766,6767,6768,6769,6770],{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"slug":6772,"name":6772,"fn":6773,"description":6774,"org":6775,"tags":6776,"stars":26,"repoUrl":27,"updatedAt":6785},"expo-dev-client","build and distribute Expo development clients","Framework (OSS). Build and distribute Expo development clients locally or via TestFlight for internal testing. For production TestFlight releases and store submission, use the eas-app-stores skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6777,6778,6779,6780,6781,6784],{"name":6595,"slug":6596,"type":15},{"name":6598,"slug":6599,"type":15},{"name":9,"slug":8,"type":15},{"name":6602,"slug":6603,"type":15},{"name":6782,"slug":6783,"type":15},"Local Development","local-development",{"name":18,"slug":19,"type":15},"2026-07-24T05:36:51.160719",{"slug":6787,"name":6787,"fn":6788,"description":6789,"org":6790,"tags":6791,"stars":26,"repoUrl":27,"updatedAt":6796},"expo-dom","run web components in native apps","Framework (OSS). Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally. For the end-to-end migration of a whole web app, use the expo-web-to-native skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6792,6793,6794,6795],{"name":9,"slug":8,"type":15},{"name":6615,"slug":6616,"type":15},{"name":18,"slug":19,"type":15},{"name":6633,"slug":6634,"type":15},"2026-07-24T05:36:41.176872",{"slug":6798,"name":6798,"fn":6799,"description":6800,"org":6801,"tags":6802,"stars":26,"repoUrl":27,"updatedAt":6807},"expo-examples","integrate Expo example projects","Framework (OSS). Expo's official example projects - the expo\u002Fexamples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6803,6804,6805,6806],{"name":9,"slug":8,"type":15},{"name":6757,"slug":6758,"type":15},{"name":18,"slug":19,"type":15},{"name":6633,"slug":6634,"type":15},"2026-07-24T05:36:35.174379"]