Get started

Our components are a collection of interface elements that can be reused across the Shopify system.

Components can be combined to help anyone building products for Shopify to efficiently design consistent experiences for merchants.

This frees us up to focus on solving unique merchant challenges, rather than reinventing interface elements that are already in use.

Getting started

The component library was designed to help developers quickly create the best experience for Shopify merchants.

Each component includes information to help you implement them, such as:

  • Explanations of the merchant problem it solves in the interface
  • Interactive examples so you can see the component in action
  • Best practices and guidelines to use the component correctly

Learn more about developing apps and themes for Shopify on our developer hub.

Installing and implementing

There are two options for installing and implementing our components, React or CSS.

React components (Recommended)

Use React components in most cases, especially if you’re building a highly interactive experience. This can be done with or without a build system.

CSS components

  • Use CSS components if you don’t have or want a build system for your project

  • Include the CSS in your HTML to implement:

<link rel="stylesheet" href="" />

Using components

You can find comprehensive instructions on how to use components in the Polaris GitHub repo. There are also example applications to explore.

Here are some basic instructions to help you get started for both React and CSS-only:

React components (Recommended)

Include the CSS in your HTML:

<link rel="stylesheet" href="" />

First, import the component into your project:

import {AppProvider, Button} from '@shopify/polaris';

Create an element using the Polaris React AppProvider component. The AppProvider component must wrap your entire app because Polaris React components will not function without it:

const app = (
    <Button onClick={() => alert('Button clicked!')}>Example button</Button>

Tell React to render that element in the DOM:

ReactDOM.render(app, domContainerNode);

CSS components

Include the CSS stylesheet in your HTML:

<link rel="stylesheet" href="" />

Add the appropriate classes to your HTML elements:

<button class="Polaris-Button">Example button</button>

Note if you’re using CSS-only you’ll need to provide your own JavaScript.

Using embedded components

Building apps for merchants lets you quickly integrate your service into Shopify, or embed your web apps directly inside Shopify POS and the Shopify admin.

With embedded apps, you can add value to merchants’ day-to-day business operations by leveraging the familiar surroundings of the Shopify admin. Embedded apps are separately hosted and use the Shopify API.

The embedded section includes

  • Configuring the AppProvider with your embedded app config
  • Top bar with title, icon, breadcrumbs, buttons, pagination, and dropdown menus
  • Custom modal windows
  • Alert and confirmation dialogs
  • Product and collection resource pickers

Embedded apps

In addition to the visual components provided as part of Polaris, we provide React wrappers around Shopify’s Embedded App SDK (EASDK). When using Polaris, you don’t need to go through the initialization of the EASDK as described in the docs. Instead, configure the connection to the Admin through the <AppProvider /> component:

import React from 'react';
import {render} from 'react-dom';
import * as PropTypes from 'prop-types';
import {AppProvider, Page, Card, Button} from '@shopify/polaris';

class MyApp extends React.Component {
  // This line is very important! It tells React to attach the `easdk`
  // object to `this.context` within your component.
  static contextTypes = {
    easdk: PropTypes.object,

  render() {
    return (
      <Page title="Example application">
        <Card sectioned>
          <Button onClick={() => this.context.easdk.startLoading()}>
            Start loading
          <Button onClick={() => this.context.easdk.stopLoading()}>
            Stop loading

    <MyApp />

Your apiKey and shopOrigin attributes are required. The EASDK init section describes the details of these attributes and where to find them.


To access the EASDK components you need to add them to you project:

import * as Embedded from '@shopify/polaris/embedded';


import {Alert, ResourcePicker} from '@shopify/polaris/embedded';

if you want to import a subset of the components.

Your app must be wrapped by the <AppProvider /> component. This component initializes the EASDK using the apiKey and shopOrigin you provide.

Learning resources

These resources have information on getting started with React and how to develop apps and themes for Shopify.


If you’re new to React, start with the official React Getting Started documentation. As you read through the topics, follow along using the React Hello World CodePen example.

Here are some additional resources:

Shopify’s developer hub

Learn more about developing apps and themes for Shopify on our developer hub.

Component methodology

We make our components flexible enough to meet diverse needs. Our components are set up to be restructured based on the information passed in. No matter what type of experience you’re creating, you can use components as the building blocks of your product or feature.

Each of our components has a well-documented public interface (API) with guidelines and well-defined conventions. This way, developers don’t need to worry about the underlying implementation. Instead, they can focus on creating great merchant experiences.

We ensure that our components are made for everyone. They meet accessibility standards and are responsive to any screen or device. We also put a lot of effort into optimizing the performance of the components, so everyone can build inclusive experiences that work.


Issues or feature requests can be created on the Polaris GitHub page. At this time we’re not accepting pull requests. This is something we’ll support in the future.