Bindable Events, Module Scripts or Values Objects?

I was trying to find out what’s the best form of making a communication between local scripts. Therefore, there are some questions I need to get the answer first:

  • Which is faster? Bindable Events OR assigning a Value Object and listening to its Changed event?
  • I know variables in ModuleScripts are faster. I can also attach “Changed” listener to variable with libraries like this one: PropertyModule (uses metatables). But metatables only support one listener for each variable. Can I work around this issue?

If you’re looking to have more than one listener, then go with value objects. Bindables only allow one active listener at a time, and I’m not sure why you’d use modules here.

BindableEvents/BindableFunctions for local script to local script communication.

ValueBase instances could work but they’re restricted in the data/values they can store.