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.

4 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.

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.