# Syncing Custom Component Palettes

**URL:** <https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140>\
**Category:** Ignition\
**Created:** [August 27, 2020, 7:06pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140 "2020-08-27T19:06:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![byrnep](https://avatars.discourse-cdn.com/v4/letter/b/db5fbb/32.png) [@byrnep](https://forum.inductiveautomation.com/u/byrnep)\
**Post date:** [August 27, 2020, 7:06pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/1 "2020-08-27T19:06:43Z")

</div>

So, we’ve created a few custom components. For instance, a button that on mouseclick, appears to depress, as buttons did previously on Version 7. (and probably should by default, feedback to the user is important)

That custom component is then put into a custom palette on the ‘global’ project. Every new project that inherits ‘global’ will be able to pull that custom palette as though it were a stock component.

The issue, as I have just learned, is when we try to expand the set. Any new project that is created inheriting from ‘global’ will have the full set of custom components. Any old projects will not have their custom pallettes updated. The components can be cut/pasted from other projects, but continuously syncing the custom palettes between parent and child seems like an easy, simple way to extend functionality.

It is of course very possible that I’m doing this wrong, but I have tried to Uninherit and Reinherit global and that does not work. And I’m aware of export/importing, but that would require a project by project effort and be more trouble than cut/pasting.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 27, 2020, 7:43pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/2 "2020-08-27T19:43:23Z")

</div>

Palettes are probably stored in a singleton resource on disk, so after they’re inherited _once_, they’re “stuck” forever, unless you delete them in the child project(s). There’s no real workaround for this inside the designer. What you could do is go to the filesystem and delete the resource manually in the child projects whenever you need to sync updates - but that’s obviously a bit unwieldy.

---

<div class="post-metadata">

**Author:** ![byrnep](https://avatars.discourse-cdn.com/v4/letter/b/db5fbb/32.png) [@byrnep](https://forum.inductiveautomation.com/u/byrnep)\
**Post date:** [August 27, 2020, 8:42pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/3 "2020-08-27T20:42:39Z")

</div>

I already have a rather unweildy solution, and a second unweildy backup, I’m just suggesting that creating custom components that are inheritable in a live way would add a lot of functionality.

Whether or not that’s possible with how the backend is designed is beyond my scope.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 27, 2020, 10:41pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/4 "2020-08-27T22:41:03Z")

</div>

It would be nice if a _little_ effort could be made towards better source control compatibility on the Vision side.... like these recommendations I made earlier this year so the resource on disk could be the XML from the shift-right-click menu:

> [@Meta-programming a window?](http://forum.inductiveautomation.com/t/meta-programming-a-window/32769/6):
>
> If you want the Vision Window XML to be friendlier, I recommend changing the handler for the window itself to save encoding the InteractionController for last. You may also want to encode the root container first, or nearly first. Almost all of the misery in the existing file format is due to the ‘i’ of the interaction controller coming before the ‘r’ of the root container. (I suspect field serialization is alphabetical.) This one change should cause VisionComponent serialization to approxim…

---

<div class="post-metadata">

**Author:** ![tashby](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tashby/32/67562_2.png) [@tashby](https://forum.inductiveautomation.com/u/tashby)\
**Post date:** [January 13, 2023, 9:51pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/5 "2023-01-13T21:51:45Z")

</div>

What was your solution? I am coming across what seems to be the same thing. Me and and co-worker are working on project changes, but not changing anything with the custom palettes, but any time one of us saves, it forces the other person to resolve conflicts when there really aren't any changes.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/9/99fb78b63204bbf49918cb89c2d84f858016a96e.png)

This is what's in one of the files to give you an idea.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/0/8040cb240f1d62db48e8ce2078520a7c5397db4c.png)

---

<div class="post-metadata">

**Author:** ![tashby](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tashby/32/67562_2.png) [@tashby](https://forum.inductiveautomation.com/u/tashby)\
**Post date:** [January 16, 2023, 4:11pm UTC](https://forum.inductiveautomation.com/t/syncing-custom-component-palettes/38140/6 "2023-01-16T16:11:45Z")

</div>

If anyone wants to upvote this fix, I've posted it here. [syncing custom palettes | Voters | Inductive Automation](https://inductiveautomation.canny.io/ignition-features-and-ideas/p/syncing-custom-palettes)
