Image flickering when switching variants

We’re trying to have different variants on a Card component, but when swapping between the variants in code, the icon flickers. Any advice?

Possibly could be you have a base variant without an icon.

@shrill_penguin would you mind sharing a link to your project and also the snippet you are using in your code showing how you switch between the variants?

At first glance, this might be due to remounting the image or updating the source of the image, causing a reload. (I believe it is an image instead of an icon because it’s not monochromatic)

Yep, in Plasmic it’s an image and not an icon. For context, the icon is rendered based on the product variant & button click swaps a second addToCart variant which adds the outline & button change.

Project link: https://studio.plasmic.app/projects/6ahLrnafiKmBQ1xf6hqvCn

I’ve simplified the code down to just toggling local state (f function just toggles isSelected which is in a useState)

                const componentProps = {
                  product: plasmicDatasetName,
                  addedToCart: isSelected,
                  addToCart: {
                    onClick: f,
                  },
                };

                return (
                  <React.Fragment key={datasetId}>
                    <Spacer height="24px" />
                    <PlasmicComponent
                      component="Product Card"
                      componentProps={componentProps}
                    />
                  </React.Fragment>
                );

I was also thinking that it might be because the src was changing, but it’s the same, always this URL

https://site-assets.plasmic.app/632ca7b346d8e3a9c1bf071a63cab663.svg

We switched it over to an icon and aren’t running into issues anymore

Oh interesting - if you still have a copy of the original version that exhibits this issue (or can dig it up from history) I’d be curious to take a look, but no worries if not

To reproduce the issue you can try toggling between these two icons in a live component. It doesn’t happen in the api explorer it only happens in a real environment.

I believe that it’s due to how Plasmic handles unflattened svg files.

To fix, I had to flatten the svg files.

Places.svg

Patterns.svg