---
title: Migrate SkeletonTabs from Polaris React
description: >-
  Understand the supported migration path for the Polaris React SkeletonTabs
  component.
source_url:
  html: >-
    https://shopify.dev/docs/apps/build/app-home/migrate-from-polaris-react/skeleton-tabs
  md: >-
    https://shopify.dev/docs/apps/build/app-home/migrate-from-polaris-react/skeleton-tabs.md
api_name: app-home
---

# Migrate Skeleton​Tabs from Polaris React

`SkeletonTabs` has no direct Polaris web component equivalent. Keep it while a Polaris React `Tabs` call site remains. If the destination uses route navigation, then render stable navigation labels and show loading feedback for the active view instead of drawing tab-shaped placeholders.

***

## Map navigation loading behavior

| Polaris React usage | Polaris web components | Migration notes |
| - | - | - |
| Unknown tab labels | Keep Polaris React until labels are known, or redesign the data dependency | Navigation labels shouldn't appear and move after users start interacting. |
| Known labels with pending panel content | Real links plus a labelled regional spinner | Preserve the current destination and browser history while content loads. |
| Whole-route navigation | Loading API | Clear loading feedback on success, failure, cancellation, and route change. |

Don't pair skeleton navigation with the button-based visual tab approximation that this guide rejects on the `Tabs` migration page.

***

## Migration example

## Migrating SkeletonTabs

##### Polaris web components

```tsx
export function SkeletonTabsMigrationExample() {
  return (
    <><s-spinner accessibilityLabel="Loading navigation"></s-spinner></>
  );
}
```

##### Polaris React

```tsx
import {SkeletonTabs} from '@shopify/polaris';


export function SkeletonTabsMigrationExample() {

  return (
    <SkeletonTabs count={3} />
  );
}
```

***

## Test and remove Polaris React

* Verify the active route remains identifiable while its content loads.
* Test keyboard navigation, browser history, failure, and retry.
* Remove `SkeletonTabs` only after the owning `Tabs` interaction has a supported destination.

***
