---
title: Skeleton
sidebar_label: Skeleton
---

<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

import { StoryWithControls } from '../../../src/components/StorybookWrapper';

# Skeleton

Skeleton loading component with support for avatar, title, paragraph, button, and input placeholders.

## Live Example

<StoryWithControls
  component="Skeleton"
  props={{
  active: true,
  avatar: false,
  loading: true,
  title: true,
  shape: "circle",
  size: "default",
  block: false
}}
  controls={[
  {
    name: "active",
    label: "Active",
    type: "boolean",
    description: "Show animation effect."
  },
  {
    name: "avatar",
    label: "Avatar",
    type: "boolean",
    description: "Show avatar placeholder."
  },
  {
    name: "loading",
    label: "Loading",
    type: "boolean",
    description: "Display the skeleton when true."
  },
  {
    name: "title",
    label: "Title",
    type: "boolean",
    description: "Show title placeholder."
  },
  {
    name: "shape",
    label: "Shape",
    type: "select",
    options: [
      "circle",
      "square"
    ],
    description: "Shape of the avatar/button skeleton."
  },
  {
    name: "size",
    label: "Size",
    type: "select",
    options: [
      "large",
      "small",
      "default"
    ],
    description: "Size of the skeleton elements."
  },
  {
    name: "block",
    label: "Block",
    type: "boolean",
    description: "Option to fit button width to its parent width."
  }
]}
/>

## Try It

Edit the code below to experiment with the component:

```tsx live
function Demo() {
  return (
    <Skeleton
      active
      loading
      title
      shape="circle"
      size="default"
    />
  );
}
```

## Props

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `active` | `boolean` | `true` | Show animation effect. |
| `avatar` | `boolean` | `false` | Show avatar placeholder. |
| `loading` | `boolean` | `true` | Display the skeleton when true. |
| `title` | `boolean` | `true` | Show title placeholder. |
| `shape` | `string` | `"circle"` | Shape of the avatar/button skeleton. |
| `size` | `string` | `"default"` | Size of the skeleton elements. |
| `block` | `boolean` | `false` | Option to fit button width to its parent width. |

## Import

```tsx
import { Skeleton } from '@superset/components';
```

---

:::tip[Improve this page]
This documentation is auto-generated from the component's Storybook story.
Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Skeleton/Skeleton.stories.tsx).
:::
