chore: update atoms retry mechanism (#27450)

Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
This commit is contained in:
Rajiv Sahal
2026-02-03 15:18:17 +05:30
committed by GitHub
co-authored by Morgan
parent b5eda9c57e
commit 078b3935eb
@@ -1,16 +1,42 @@
"use client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { useEffect } from "react";
import { VERSION_2024_06_14 } from "@calcom/platform-constants";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { isAxiosError } from "axios";
import { useEffect } from "react";
import http from "../lib/http";
import type { CalProviderProps } from "./BaseCalProvider";
import { BaseCalProvider } from "./BaseCalProvider";
import type { translationKeys } from "./languages";
const queryClient = new QueryClient();
function isRetryableError(error: unknown): boolean {
if (!isAxiosError(error) || !error.response) {
// network errors or timeouts — retryable
return true;
}
const status = error.response.status;
// retry on 408 (timeout), 429 (rate limit), and 5xx (server errors)
return status === 408 || status === 429 || status >= 500;
}
const queryClient: QueryClient = new QueryClient({
defaultOptions: {
queries: {
retry: (failureCount: number, error: unknown): boolean => {
if (!isRetryableError(error)) return false;
return failureCount < 3;
},
retryDelay: (attempt: number) => Math.min(1000 * 2 ** attempt, 30000),
},
mutations: {
retry: (failureCount: number, error: unknown): boolean => {
if (!isRetryableError(error)) return false;
return failureCount < 1;
},
retryDelay: (attempt: number) => Math.min(1000 * 2 ** attempt, 30000),
},
},
});
/**
* Renders a CalProvider component.
@@ -44,7 +70,7 @@ export function CalProvider({
version = VERSION_2024_06_14,
organizationId,
isEmbed = false,
}: CalProviderProps) {
}: CalProviderProps): JSX.Element {
useEffect(() => {
http.setVersionHeader(version);
}, [version]);
@@ -74,7 +100,8 @@ export function CalProvider({
version={version}
labels={labels as Record<translationKeys, string>}
language={language}
organizationId={organizationId}>
organizationId={organizationId}
>
{children}
</BaseCalProvider>
</QueryClientProvider>