There are many technical advantages to using Aurelia. In this article, you will find a list of points we think are interesting. Taken together, there is no other SPA framework today that can match Aurelia.
Modern JavaScript
Fully written in standards-based ES2015+ and TypeScript.
Forward compatible with JavaScript technology coming in future ECMAScript specs.
Full support for both Babel and TypeScript.
Modern DOM
Consistently leverages the most modern DOM APIs.
Bare "to the metal" usage of the DOM; no DOM wrappers in order to ensure maximum performance and memory efficiency.
Automatically polyfills the DOM where appropriate, in order to support older browsers.
Modern Tooling
Supports modern build tooling via the Aurelia CLI and Webpack, out-of-the-box.
Works well with powerful testing tools like Karma and Protractor.
Provides a custom Chrome debug panel as well as a VS Code plugin.
Code Quality
Source code is covered by an extensive suite of unit tests.
All source is fully linted for style and feature-usage consistency throughout.
TypeScript d.ts files and full API documentation are provided for all libraries.
Web Component Standards
Leverages W3C Web Components specs such as HTMLTemplateElement and ShadowDOM.
Fully compatible with 3rd-party Web Components, even those originating from other frameworks, such as Polymer.
Provides a Web Component-based programming model even on browsers that will never support Web Components.
Modularity
Highly modular development, suitable for small and large-scale apps alike.
Native support for feature-based development facilitating parallel development of multiple teams on the same app.
Strong component model for high re-use of UI components across apps.
Platform Support
Designed for modern web browsers but supports older browsers, such as IE9, via additional polyfills.
Designed for mobile application development in combination with PhoneGap/Cordova/Crosswalk.
Designed for desktop application development in combination with Electron or NWJS.
Capabilities
Write apps in ES2015+ and TypeScript.
One simple way of creating components that work in a variety of contexts: