There are a bunch of things that you can do as best practices. You should call subscribe on your model first after you initialize it as that creates the the nodes so that when you assign the value, the collectionnodes are synchronized and nodes are already created by then. What we do in case you are trying to assign a value to shared property when the sharedproperty collectionnode is not synchronized is that we cache the value and when your collectionode is syncrhonized , then we publish the cached value. In your example, you are doing sp.value +=1 where sp.value is initally NaN and so doing +1 will keep it a NaN and hence you are assigning a NaN value, which doesnt get cached up. Your example works second time because, the collectionnode is already synchronized and nodes are created by the second time, so even if you assign NaN it just gets published. So, you receive the onChange event.