My project has upwards of 100 windows and color theming across the project has not yet been decided. Would it be a smart idea to bind all window background colors to a memory tag that contains the hex value of the color. This would allow changing the tag value to adjust all window backgrounds at the same time, versus individually updating all the window colors one at a time. Possibly, a better question to ask is how expensive is it to set the project up like this versus taking the time to individually change colors. The plan was to also set up component tags so that button colors could be bound to a button color tag, that way if you ever wanted to change the color of your buttons, you change the tag, rather than track down the hundreds of buttons through the project and update one at a time.
I did this in one of my 7.9 projects and didn't experience any issues.
Consider using a Vision Client tag instead.
What is the reason for using Vision Client tags? I assume that one reason is for the added benefit of being able to implement a color theme such as light and dark, but are there any other reasons that I am missing?
It makes your color scheme project-specific instead of gateway-global.
If you ever give users the ability to alter the background color in some way to suit their personal preference, then the binding will need to be on a client tag; otherwise, any change will affect all users simultaneously. In my experience, requests for additional features like dark themes, high contrast schemes, etcetera, are not uncommon, so preemptively setting your bindings up on client tags is good advice.