Both of these methods will strip the metatable of any table value you pass through them, due to creating a shallow copy for their callbacks to use. This however is not reflected in the documentation for either Bindable, while it is for their remote counterparts. This may seem trivial for power users but it can/will trip up people such as myself who are aware that remotes did this but didn’t know bindables did. Please consider adding this declaration to their documentation
The actual reason for this is because Bindables can cross Luau VM stacks, its a unique feature that Signal libraries cant utilise
By design, metatables cant be passed through them since it recreates the table, and you also have the issues of sending function signatures cross-VM, which is a whole world of issues.
Alright. Now that we have a better grasp on the semantics of metatable/signal relationships, the issue still stands that this information is not properly represented in the documentation.
Like I said before: I know for power users this dynamic is trivial, but it still has potential to trip up inexperienced scripters who don’t have immediate access to this information