I just looked at the source code and found following
(-add-watch [this key f]
(set! (.-watches this) (assoc watches key f))
So I think it depends on scope. In my case the
local-state atom is within a closure, thus once it removed, all its watchers also should be removed automatically. However, for atoms which are in global scope, watchers should be removed by hand if they are not need anymore.