Imagine a javascript watcher that does it right. It uses and It finds the right timing to trigger object changes. It’s clean, efficient and extremely performant. Object.defineProperty requestAnimationFrame. It’s about time to start sharing my progress on the way to universality. I am working on a very interesting project that will remove the word re-hydration completely, and make universal frameworks finally usable and understandable for beginners. But flexibility comes with decoupling. That’s why my future framework will be comprised of many tiny solutions. Any developer could just re-use them! Let’s bring good old days of 2-way binding that is performant and resilient enough. Let’s get some inspiration from here, right now: LIVE EXAMPLE In a nutshell, everything is based on . When you pass a template string, we extract supposedly watchable variables using which is extremely fast. The next step is to bind watchers, which will notify about changes that happen within the template. Once received, angular-expressions (the only sane solution i have at the moment, and i am open for alternatives) will compile it and spit the result back at you! async-watch extract-vars wires-reactive So what doors does this library actually open? An absolutely safe and reliable 2-way binding. The watching library will take care of entire object hierarchy, making sure all watchers are intact. And yes, we don’t do dirty laundry AKA dirty checking. We don’t need to worry about timing either. No need in become redundant. Changes are stacked in “transaction”. A callback is fired once browser is ready to paint your DOM! $scope.$apply(), Z ones Let’s stop patching javascript objects, invent extremely complicated solutions. Let’s go for efficiency and minimalism! React-js is not the only way to do things, in fact is not the right way for many requirements! We can do better! Stay tuned for more updates. And if you liked any of the libraries above, please, don’t forget to star them. If you have ideas, suggestions, questions, just poke me on Skype! window.atob(“c2t5cGU6bmNoYW5nZWQ=”)