I know this thread’s a bit old, but I just discovered it via this other thread. I think @J805’s response is on the right track, but in my experience, in order to detect change, both the previous and current value need to be stored so that a comparison can be made (which is a bit different from just detecting when a state changes from empty to some value).
Anyway, it’s actually quite straightforward to do, as I outline in this post.
@willtaylordesign, in the case of reusables, custom states defined at the root level are accessible to the host page, so I don’t see why a similar approach wouldn’t work for that scenario.
-Steve