Best Chart Library for Shopify Embedded App (Replacing @shopify/polaris-viz)?

Hi everyone, :waving_hand:

I’m building a Shopify embedded app and want to include charts that look and feel similar to the analytics charts in Shopify Admin. In the past, I noticed many developers used @shopify/polaris-viz, but it appears this package is now deprecated and no longer maintained by Shopify.

Since I want consistent UI/UX and reliable long-term support, I’m looking for recommendations on the best chart library/package to use for a Shopify embedded app in 2025.

Some specific questions I have:
• Which chart library would you recommend for Shopify embedded apps now that @shopify/polaris-viz is deprecated?
• Which options work well with React with Remix template + Polaris?
• Are there good alternatives that support responsive charts, good performance, and custom styling to match Shopify’s look?
• Bonus points if the library is open source and lightweight.

Thanks in advance for your suggestions! :raising_hands:

1 Like

Also wondering this since the chart components from Shopify Polaris react weren’t included in the new polaris web components

Hey,

For embedded apps, we’re going to be releasing new components that follow in the footsteps of the Polaris web components and handles data fetching and rendering.

I don’t have a firm timeline on when this will be available but we’re working hard on it and we’re making good progress :slightly_smiling_face:

Here’s an example (work-in-progress, subject to changes):

<s-shopifyql-metric-card
  reportlinkhandle="total_sales_over_time"
  heading="Total sales over time"
  description="Amount spent (subtotal, taxes, shipping, returns, discounts, fees, etc.)"
  query="FROM sales
    SHOW total_sales
    TIMESERIES day WITH TOTALS
    SINCE startOfDay(-7d)
  VISUALIZE total_sales TYPE line"
  size="large"
></s-shopifyql-metric-card>

This will interpret the ShopifyQL query, fetch data, and render a chart like so:

Along with all the formatting, tooltips, definition popovers, etc, to match how we render analytics in the Admin.

4 Likes

This looks stunning Nick! :clap:

@NickP-Shopify This looks beautiful. Can we power it using data stored inside the app, rather than in Shopify, so we don’t have to rely on ShopifyQL? By “app-stored data”, I mean our own internal dataset with richer, more detailed fields than what Shopify provides.

We aren’t looking to directly tackle this for the first public release since we want the interface to be as seamless and “automatic” as possible - drop in a ShopifyQL query and we will do the rest.

With that said, we’re building in layers and there may be an opportunity to expose the “underlying” component that isn’t ShopifyQL aware (e.g. it just accepts rows of data), but it still enforces (most) Shopify-specific constraints (e.g. it isn’t a general purpose charting library).


The value proposition for the first use case is pretty straightforward - embedded apps that are showing data that Shopify already has but with a filter or specific grouping applied (e.g. WHERE sales_channel = ‘My sales channel’) will be able to drop in a single component and have things Just Work™️ This allows the app to be an extension of the Admin without needing to manually configure charting libraries, create a custom theme, try to emulate Shopify behavior and interactions, etc.

I’d love to know more about the second case - are you an embedded app? Are you hoping to emulate the look and feel of Shopify Analytics? What sort of customization would you need? Where does your data come from and why isn’t it available in Shopify? What sort of charting functionality are you hoping to have?

Thanks!

Yes, we’re an embedded BFS app and would love to provide a native-like experience with familiar UI elements that merchants are already accustomed to in the Admin.

We’re a bundles app, and we’d like to show detailed analytics to merchants about their bundles: views, add-to-cart events, conversion rates, and similar engagement metrics. This data isn’t available from Shopify since it’s specific to bundle interactions, so we’re planning to track it separately using a web pixel.

Ideally, we’d display line graphs and funnel charts in our embedded app that look and feel native to the platform. We don’t anticipate needing much customization since we’re aiming for a clean, consistent look that matches Shopify’s design system rather than a heavily branded experience.

From a technical perspective, we believe we could emulate the data structure that ShopifyQL returns. The main requirement would be the ability to point the component to our own backend endpoint instead of using ShopifyQL as the data source. If the “underlying” component you mentioned could accept rows of data directly while maintaining the Shopify look and behavior, that would be perfect for our use case.

Thanks for considering these scenarios!

1 Like

Yes yes yes! Can’t wait to remove polaris-wiz for these components! :woman_dancing:t4:

1 Like