name: implement-skeleton-loader description: Adds skeleton loader components to pages and components that load data asynchronously (Kanban, Dashboard, tables). Use when useQuery/useSWR pages lack loading state, or when improving perceived performance during data fetch.
Implementar Skeleton Loaders
Quando Usar
- Página ou componente que busca dados (
useQuery,useSWR) não possui estado de carregamento visual - Usuário solicita melhorar percepção de performance durante carregamento
Instruções
Identifique o estado de carregamento: Localize a variável booleana (ex:
isLoading,isFetching).Importe o Skeleton:
import { Skeleton } from "@/components/ui/skeleton";Crie o layout do esqueleto: Durante o carregamento, renderize uma versão esquelética da UI final com a mesma estrutura:
- Card:
Skeletonpara título, parágrafos e footer - Tabela:
Skeletonpor célula - Kanban: loop de colunas e cards esqueléticos
- Card:
Exemplo de card esquelético:
function SkeletonCard() {
return (
<div className="flex flex-col space-y-3">
<Skeleton className="h-[125px] w-[250px] rounded-xl" />
<div className="space-y-2">
<Skeleton className="h-4 w-[250px]" />
<Skeleton className="h-4 w-[200px]" />
</div>
</div>
);
}
- Renderização condicional:
if (isLoading) return <SkeletonLayout />;
return <DataLoadedLayout />;