Non-published components don't receive updates

We’re working on a larger Component library that includes non-published components (components with the prefix _ or .) as base components in order to simplify large, complex components. We intended – in some specific cases – to offer regular components as templates, that a designer would then have to detach and work with a bunch of base components to build the desired design.

What we have come to realize with this approach, however, is that these non-published components don’t receive updates from the library when they are updated in the main library.

Is this intended behaviour?

We basically have the option to simply publish these base components as regular components, but that of course would mean cluttering up the assets overview with a bunch of modular components.

10 Likes

I just finished replying to another thread you started where you mentioned this topic. Thanks for saving me from making a thread on this topic entirely!

The problem you described is exactly what my team and I are facing. We have a lot of complex components that use the private component feature within a larger single component that is published. We too want to the ability to change those private components and have the published component accept the updates without exposing them in the assets panel.

@Josh is this expected behavior?

4 Likes

+1 Having the same issue with my Figma library — would love to have Figma address this feature! Additionally, I also find it annoying that in order to use the instance swap property, I can’t use hidden components, only published components — would be nice to allow hidden components to be used in instance swaps so they don’t clutter the assets library.

1 Like

Having a very similar issue here. The only difference is that I don’t detach the instance as mentioned in the OP’s comment, and yet in my case the updates are not always applied.

I have three components: A, B and C. C is the base component and is nested within B, B holds some variants and is nested within A. A is the final and published component while B and C are both hidden.

The scenario when it works:

  1. I take component A in my design file and use it in its default state without changing variants
  2. I make changes to component C and publish the changes. Libraries panel shows that only component A is Modified, which makes sense because changes made to C are instant on the A.
  3. I accept the update in my design file, the change is applied to the instance successfully

The scenario when it doesn’t work:

  1. I take component A and modify it by changing variants coming from component B (not applying any overrides!).
  2. I make changes to component C and publish the changes. As before, libraries panel shows that only component A is Modified.
  3. I accept the update in my design file but my instance stays unchanged as if it didn’t update.

I suspect that it is because Figma doesn’t see that changes from component C are applied to the variants in component B, because the latter is also hidden. While in the first scenario the changes from C are detected because they get instantly applied to A.

Resetting instances can solve it but definitely not an option when you have 100s of them used in various places.

My workaround for now is to temporarily unhide and publish all components that are in the chain (so B and C, not only C) and accept the updates in the design file. This should update all instances (unless there are overrides of course!) and components can be hidden again. This is far from ideal and I’d expect some kind of native fix, but works for now.

1 Like

still having the issues that private components in some instances component don’t receive the update automatically, some of them get updated. we have to reset all changes in order to gets the update, but you lose all presets. Figma please look into this issue. thanks

hi, Raphael. our team is also facing the same issue for a while. Have you or your team figured out the workaround for this issue? I wish Figma can solve this issue fundamentally. @Josh thank you

In the past year I’ve been wasting days and weeks fighting this issue in our corporate design system.

Debugging the issues that are a consequence of something so simple as just not receiving updates for the hidden components that are nested inside a published component.

The problem is actually worse, as I encountered countless cases where even published components did not receive updates when they are nested inside another components.

@figma I beg you to fix this obvious bug.

Still looking for a fix on this, too. I think the problem is that published = searchable in assets and in the case where we want to hide some of these “building block” components, we don’t want them searchable but we do want them to get updated when published. I hope Figma can make a clean solution for this

I’ve found that even published components don’t receive the updates if layer visibility is set to hidden.

Could it get any worse?

Hey Figma! Help, please! Same issue!

Same problem here. Unpublished components don’t get any updates. It is hard, when you use it in published components, but don’t get any updates. Would be great if you can work on that, Figma :slight_smile:

Hey everyone, I’ve changed the category to “Share an Idea”. I’ll check this with the team, this looks like a feature request because components need to be published to receive updates.

Apologies for the late response! This is indeed a feature request. If you maintain a library of styles, components, and variables, you may need to unpublish a library. This means anyone using this library will no longer be able to access the library or receive updates to its styles, components, and variables.

I’m not sure this addresses any of the previous comments tho? Are we just stuck with using neon emojis to differentiate between libraries in the assets panel? Their poor eyeballs.

We have run into this same issue as we are building out a Design System. We have wanted to have more nested components but hide some of the nested components. We do this to keep in more parity with engineering. It would be nice to see a fix from Figma on this. Please vote.

I also think this needs to be a prioritized feature! Wild that it doesn’t work as expected.

@Gayani_S I disagree that this is a feature request and not a bug. The feature being used is “Hide when publishing” not “Do not publish”. As everyone has noted the expectation is that the updates will publish, but the component will be hidden inside the assets panel. This expectation is in line with how variables work when they are hidden from publishing but are referenced in another published variable.

The team can say that Product/UX didn’t set that as a requirement so the eng. team didn’t code it that way, but missing requirements are still bugs. Ultimately it doesn’t really matter. This “bughancement” needs to be fixed/enhanced as it hampers complex design systems, and forces a workaround of having to publish every hidden component then re-hide them to get the update to happen, which is tedious and can cause side effects.

image
Example of how variables show what is updating and that the changes do update even though the root variable is set to “Hide for publishing”

Adding to the list, we are, of course, facing the same issue in our team. I also think, that we are not talking feature here, but bug, as the “Publish changes” workflow suggests, that changes to the base components are actually published.

(ACTUAL FEATURE REQUEST FOLLOWING)
Further, I would like to stress the need for being able to swap base components with others without having them visible in the main Assets pane. As soon as they are hidden, you are not able to swap to them, if they are fundamentally different. We use, for instance, custom made specification markers, which provide a visual representation of a color, a font, a shadow and spell out their token name next to them. The color, font and shadow blocks are different components as they have different properties but we allow for swapping between them on the main marker component. Now, I have to publish those to be able to swap between them, which I don’t want. I want them to be scoped to this parent component only and not retrievable from the Assets pane.