Handling application state once your application's features grow may become a serious problem over time. Currently, a lot of modern development approaches leverage a single store, which acts as a central basis of your app. Well-known frameworks supporting these type of workflows include Redux, MobX and many others.

When we asked our community back in April of last year, it was apparent that, while these solutions work, a lot of members hand-rolled their own solution. Be it because the known solutions didn't fit or because they were looking for something with deeper Aurelia integration, we've heard your concerns and announced at the beginning of this year , that we were working on Aurelia Store, an official Aurelia plugin for state management. It took some time to get the new library to a place where we were satisfied with the documentation and had battle-tested the plugin under real conditions with enough tests to fulfill 100% test-coverage, but now we've made it.

Aurelia Store is an Aurelia plugin for handling state in your Aurelia applications. As with all official repositories, we take SemVer compatibility very seriously and will make sure to keep breaking changes down to the bare minimum as well as make sure to document all release notes as usual.

Creating this library wouldn't have been possible without the awesome help of the community, enabling us to shape the plugin in a way that addresses as many use-cases as possible while making sure the quality didn't suffer. Special thanks go to my employer Ranorex , an automation tool provider for an all-in-one UI test experience for desktop, web and mobile applications, who allowed me to contribute working hours to the plugin. As a result of that, several tools, amongst them our Chrome extension called Ranorex Selocity , which can be downloaded for free, are now powered by Aurelia and the Store plugin.

Amongst the first evangelists and zealous fans of the plugin is our core member Dwayne Charrington, who is well known in our community for his awesome contributions, including builtwithaurelia.com , which happens to be powered by Aurelia Store as well. So let's hear a few words from Dwayne about his journey with the plugin so far...

I have been a huge advocate of Aurelia for over three years now and my background before Aurelia was working with ReactJS and Angular. Over the years, thanks in part to Facebook’s popularized method for handling state in the form of Flux, numerous state management solutions have appeared. One of the most popular state management libraries is Redux. While Redux is an exceptionally well-architected state management solution, its complexity and difficulty integrating with already built single page applications is a turn off for me personally. My preferred solution before using Aurelia Store was like many, a singleton class with a couple of methods. The downside of handling state yourself is that you eventually run into the problem exacerbated by JavaScript’s design of pass-by-reference; it’s hard to know what is modifying your state, undoing changes or being able to do anything meaningful with your hand-rolled state management solution. Aurelia Store has completely changed the way I build data-rich Aurelia applications, for the better. No longer do I need to hand-roll state management or solve issues with immutability and passed references. I find myself always looking for an excuse to use this plugin and the last 3 Aurelia projects I have worked on have used the Aurelia Store plugin.

One of the biggest upsides to Aurelia Store is that it works with Redux Developer Tools (a free plugin available in all browsers). The Redux Developer Tools allow you to inspect state in your Aurelia applications, replay actions, and debug the way data flows throughout your application. It’s a game changer.

Last but not least, the topic of state management in itself is a difficult one. So using our plugin shouldn't be part of your troubles getting on board. That's why we made sure to launch the official release with a set of full-fledged documentation .

We're looking forward to hearing your thoughts about the plugin, so reach out to us in any of the well-known ways, such as our Gitter channel or our Discourse forum .

We hope you enjoy the new Aurelia Store plugin!