---
title: IconButton
description: A button component that displays an icon in various sizes.
source_url:
  html: 'https://shopify.dev/docs/api/shop-minis/components/primitives/iconbutton'
  md: 'https://shopify.dev/docs/api/shop-minis/components/primitives/iconbutton.md'
---

# IconButton

A button component that displays an icon in various sizes.

#### Props

* **Icon**

  **LucideIcon**

  **required**

  Lucide icon component to render

* **buttonStyles**

  **string**

  Custom CSS classes for the button container

* **filled**

  **boolean**

  Whether the button is in a filled/active state

* **iconStyles**

  **string**

  Custom CSS classes for the icon

* **onClick**

  **() => void**

  Click handler

* **size**

  **'default' | 'sm' | 'lg'**

  Button size variant

Examples

## Preview

![iconbutton](https://shopify.dev/assets/assets/images/templated-apis-screenshots/shop-minis/IconButton-BILarkue.png)

### Examples

* ####

  ##### tsx

  ```tsx
  import React from 'react'

  import {FavoriteButton} from '@shopify/shop-minis-react'

  export default function MyComponent() {
    return (
      <div className="flex items-center gap-4">
        <FavoriteButton />
        <FavoriteButton filled />
      </div>
    )
  }
  ```

* ####

  ##### Description

  A default icon button

  ##### tsx

  ```tsx
  import React from 'react'

  import {FavoriteButton} from '@shopify/shop-minis-react'

  export default function MyComponent() {
    return (
      <div className="flex items-center gap-4">
        <FavoriteButton />
        <FavoriteButton filled />
      </div>
    )
  }
  ```

* ####

  ##### Description

  An icon button with filled state

  ##### tsx

  ```tsx
  import {IconButton} from '@shopify/shop-minis-react'
  import {Heart} from 'lucide-react'

  export default function MyComponent() {
    const handleClick = () => {
      console.log('Icon button clicked')
    }

    return <IconButton Icon={Heart} filled onClick={handleClick} />
  }
  ```

* ####

  ##### Description

  A small-sized icon button

  ##### tsx

  ```tsx
  import {IconButton} from '@shopify/shop-minis-react'
  import {Star} from 'lucide-react'

  export default function MyComponent() {
    const handleClick = () => {
      console.log('Small icon button clicked')
    }

    return (
      <IconButton
        Icon={Star}
        size="sm"
        onClick={handleClick}
      />
    )
  }
  ```

* ####

  ##### Description

  A large-sized icon button

  ##### tsx

  ```tsx
  import {IconButton} from '@shopify/shop-minis-react'
  import {Settings} from 'lucide-react'

  export default function MyComponent() {
    const handleClick = () => {
      console.log('Large icon button clicked')
    }

    return <IconButton Icon={Settings} size="lg" onClick={handleClick} />
  }
  ```

***
