It's been an amazing journey since we first announced Aurelia and now we're finally at our biggest milestone yet. Today we're happy to announce the full availability of the Aurelia Release Candidate. You can get the bits through npm, jspm, bower or directly on Github now.

We had a beta period of almost 7 months. During that time we've made huge improvements to render performance, startup time and library size. We've also updated the library to run on the latest version of Babel, enabled compatibility with JSPM 0.16 and 0.17 and implemented the Shadow DOM v1 specification. Additionally, there have been dozens of small (and some large) features and improvements added, along with hundreds of fixes. A tremendous thank you goes out to the entire 20+ person Aurelia Team along with the almost 400 community members who contributed to Aurelia during the Alpha and Beta periods. It's been amazing working together with you to create something great! What's included in the RC? The RC includes the following Aurelia core libraries and plugins: animator-css

animator-velocity

binding

boostrapper

bootstrapper-webpack

dependency-injection

event-aggregator

fetch-client

framework

history

history-browser

html-import-template-loader

http-client

loader

loader-default

loader-webpack

logging

logging-console

metadata

i18n

pal

pal-browser

path

polyfills

route-recognizer

router

task-queue

templating

templating-binding

templating-resources

templating-router We're also moving the following libraries out of alpha and into beta: dialog

testing

ui-virtualization The following libraries are still considered alpha, but are progressing well and will likely move to beta soon: pal-nodejs

validatejs

validation

web-components

webpack-plugin

Breaking Changes Shadow DOM Aurelia's custom element content projection system was originally based on Shadow DOM v0. This involved using the <content></content> element to designate content projection sites within the view of a component. The v0 version of the spec was not fully agreed upon by all vendors and underwent a series of design changes, resulting in the Shadow DOM v1 spec, which has gained consensus and is being implemented by browser manufacturers now. The Aurelia RC ships with our new Shadow DOM v1 implementation. You can read more about the changes on our original blog post announcement . Testing The aurelia-templating library previously contained two helper methods for unit testing: createControllerForUnitTest() and createViewModelForUnitTest() . We've removed these methods in favor or our new aurelia-testing library, which contains the ComponentTester . This new testing helper features a fluent interface capable of handling many more testing scenarios with ease and is our preferred approach going forward. If you require the previous mechanism in order to help you migrate, consider monkey-patching the TemplatingEngine.prototype by adding the methods back in your test setup. You can find the source code for the removed methods here . The aurelia-templating-resources library previously contained the view-spy and compile-spy custom attributes, used for debugging. We've moved these out of this library and into aurelia-testing . You can now install this library as a plugin if you wish to use these debugging features.

TypeScript In the last two weeks we've made some major changes to how we handle TypeScript d.ts files. Previously, we had adopted a distribution mechanism which was not recommended or supported by Microsoft or the major TS tools. Today's release supports the standard TypeScript d.ts acquisition workflow. With this release, we provide two ways to get Aurelia's d.ts files: If you are using Aurelia in Node, Webpack, our CLI or any other NPM-based system, the d.ts files will work automatically when you install the Aurelia libraries. You simply need to set your tsconfig to use a moduleResolution mode of node .

to use a mode of . Users of non-NPM-based systems, such as JSPM or Bower, can get the d.ts files by using the typings tool . We've set up every repo with a typings.json file so you can simply run typings install github:aurelia/library-name to install the d.ts files. We've configured our skeletons to use this new technique, so those starting new projects shouldn't need to worry about it. Those with existing projects will need to update as part of the RC migration process. We're also directly in touch with Microsoft and have been discussing their new strategy for dts acquisition . We'll be moving to support this as well soon.

Introducing Aurelia CLI Today we're pleased to introduce the Aurelia CLI Alpha. The Aurelia CLI is a standalone tool that handles the entire development process from end-to end. It's already packed with a lot of capabilities, but we've got even more planned. We'd love for you to try it out and see how it works for you. We've written a short readme explaining how to set things up and use the commands . Features of the CLI The CLI is already packed with a lot of capabilities, with more on the way. Here's a few interesting tidbits: Quickly create new projects with "default" setups similar to today's ESNext and TypeScript skeletons, or create a custom configuration.

Choose from either Babel or TypeScript. Your project's full source will be output in your selected language, including app sources, tests, tasks and generators. We hook up the transpilers and d.ts files automatically in all places.

Choose your favorite CSS pre-processor from 5 options.

Choose to add unit tests...or not.

Choose your preferred code editor and we'll setup the config for you.

Supports multiple project layouts, so that platforms like ASP.NET Core can be easily supported. We'd love for you to help us add support for your favorite platform!

Leverages NPM as its package manager. The module loader and bundler can automatically handle amd, commonjs and umd modules.

A unified project configuration file controls the module loader, bundling process and all task configuration.

A convention-based task system built on top of Gulp 4. No need for a gulp file, simply drop module files into the project's task folder and the functions exported immediately become available on the CLI. Write your tasks in your preferred language. We'll automatically use Babel or TS to run them.

A streaming bundling system built on top of Gulp. No more bundle steps. Apps always run bundled with full source maps and auto-refresh of bundles when files change during watch mode. Leverage any gulp plugin as part of the streaming bundling process.

A convention-based generator system. Simply drop module files into the project's generator folder and the generators become available on the CLI. What's next for the CLI? One of the first new features you'll see in the coming weeks is a new command to help you with 3rd party module installation. The command will inspect a previously npm-installed package, and make a configuration recommendation to you, automating the process if you desire. We'll also be adding support for adding new build targets to a project, such as Electron and Cordova/PhoneGap. Stay tuned. We're just getting started with this tool. If the CLI gets you excited, we'd love for you to join us in continuing to improve it.

Aurelia Skeletons We've got the new CLI, but we know that many developers will prefer to use tools like JSPM and Webpack. Don't worry, we're keeping our skeletons alive. In fact, you may have noticed that we've been doing major updates to our skeletons, especially for Webpack. We've still got a lot of work we want to do for Webpack. It's coming along nicely but it's not quite where we want it yet. I wish we could give you the ultimate version today, but we need a little more time. Thank you to everyone who has been taking it for a test drive and helping us to drive out bugs (especially on Windows) and giving us ideas for how to modularize, simplify and improve the design. We are listening and working hard to get an amazing solution in place. As always, we'll keep you posted here on the blog.