Get the Newsletter

More Aurelia Performance, Bug Fixes, Docs and TypeScript Awesome!

Posted by AureliaEffect on December 17, 2015

Today's patch updates come with some really sweet benefits! Also, if you love TypeScript, I'm sure you'll be very happy with something new we are announcing today. To update your libraries, simply run jspm update. Read on to learn the details of what these releases include.

Performance

We're constantly working on Aurelia's performance. A couple of weeks ago we showed improvements to our repaint performance that left every other framework in the dust. This week we're releasing some fixes that we've benchmarked as improvements against ourselves. Today's release involves a drastic reduction in memory consumption, especially for one-way and one-time bindings. It also comes with a 2-3x performance improvement on initial render time. Yes, view rendering just got 2-3x faster, thanks to Jeremy Danyow's continued performance innovations. Most of this work was done in the binding engine. If you are interested in the details of how that works, you can watch Jeremy take you on a guided tour of the codebase .

We also have a major performance improvement for Edge. What we discovered (and by we I mean Jeremy) is that the Edge native promise implementation is extremely slow. If you want to see a huge load-time performance boost, simply add the bluebird promise library before your system.js script tag. It's quite interesting what the affects of adding bluebird can be. To study this Jeremy ran 20 automated runs of a sample app in four browsers, and took the average load times both with and without bluebird:

Without bluebird

  • Chrome: 340ms
  • Firefox: 327ms
  • Internet Explorer 11: 311ms
  • Edge: 20000ms (seriously)

With bluebird

  • Chrome: 252ms
  • Firefox: 361ms
  • Internet Explorer 11: 326ms
  • Edge: 399ms

If you'd like to try your own setup out, you can go here . We're still working on a few additional issues with Edge that appear "in the wild". They aren't consistent and aren't reproduced by our normal tests. If you are interested in tracking that, you may want to follow this GitHub issue .

We're really happy about how Aurelia's performance is making such large improvements during the beta period. We've got more items we want to address here, so stay tuned for further improvements.

Note: For those of you who need to support IE9, after updating, you will need to include a requestAnimationFrame polyfill in your page. You can find one here .

Bug Fixes

This release contains numerous bug fixes, stability improvements and edge-case handling. As mentioned above, to get the fixes you can run jspm update. You'll be able to continue to run jspm update to get our latest fixes and improvements until we release Beta 2. You also should have no fear of breaking changes. If you encounter anything, then it's an accidental regression and something we would love for you to help us correct by creating an issue with the regression's details.

You can find the release notes related to today's patches at the end of this post.

Docs

We're constantly working on improving our docs. We've done some major upgrades to our docs format to make it easier for docs authors and translators to contribute. We'll have more information on that soon...but basically anyone who knows markdown can write docs by just learning about a few extra features we've added to facilitate multi-cultural and multi-language (programming) preferences as well as deep linking and inline, code demos.

With these improvements in place, we can start pushing out new articles more frequently. Today we're releasing a new article on bundling written by core team member Ahmed Shuhel. Next we'll be adding more detailed articles on binding, templating and docs translation.

TypeScript

For months we've seen a growing interest in writing Aurelia apps with TypeScript. We've heard many requests for a TypeScript Skeleton, similar to our existing Babel-based navigation skeleton. I'm happy to announce that today we have an official production-ready navigation skeleton for TypeScript developers! It's designed to parallel our Babel skeleton and will help you to get up and running fast. It features:

  • Designed specially for VSCode and Atom (w/ atom-typescript)
  • All app source, unit tests and end-to-end tests are written in TypeScript.
  • A gulp-based task system supporting:
    • Building
    • Linting
    • Unit Testing
    • End-to-End Testing
    • Bundling
  • Fully configured d.ts files that provide intellisense in source, unit tests and e2e tests.
  • Configuration of 3rd party libraries via the standard tsd tooling.
  • Wallaby testing configured.

You may have noticed that we list VSCode, but not Visual Studio above. That's because the above project does not contain a Visual Studio project or solution file. However, it can be opened as a web site in Visual Studio and all the above features should function correctly. If you are interested in specific Visual Studio support, as always, we invite you to create issues and submit PRs to help us evolve this skeleton in any way that improves that scenario.

Much thanks to core team member Mike Graham as well as the many community members who put together TS sample projects which helped us in building this.

What

During the beta we're focusing on performance, bug fixes, improvements to our testing and infrastructure...and adding a few additional features we want for the final release. As we've talked about previously, we would like to do a second beta before our release. This is to address changes in various web specifications (decorators, shadow dom, etc.) as well as changes in the JSPM and the system.js loader. We are seeking to shield our community as much as possible from any breaking effects of these changes, but there will be some. Please refer to our beta announcement for more details. As I'm sure you've come to expect, we'll provide as many details as possible when the time is right. It's important to us that you always know as much as possible about what we are doing and where we are heading.

Release Notes

aurelia-pal 1.0.0-beta.1.0.1

Features

  • PAL: requestAnimationFrame and performance APIs ( 09177bff )

aurelia-pal-browser 1.0.0-beta.1.0.1

Features

  • PAL: requestAnimationFrame and performance APIs ( 8427b1f2 )
  • performance: performance API polyfill ( 9b706b38 )

aurelia-binding 1.0.0-beta.1.0.3

  • performance improvements

Bug Fixes

aurelia-templating 1.0.0-beta.1.0.2

Bug Fixes

  • content-selector: incorrect projection in nested scenarios ( 2e248676 , closes #231 )

aurelia-templating-binding 1.0.0-beta.1.0.2

  • performance improvements

aurelia-templating-resources 1.0.0-beta.1.0.3

  • performance

Bug Fixes

  • plugins:
    • revert file extensions checking ( c67adfb2 )
    • remove possible duplicate file extensions ( 842a13e7 )

aurelia-templating-router 1.0.0-beta.1.0.3

Bug Fixes

  • add-nextview-first: Add the next first on with ( d188112c )
  • default-swap-order: Set default swap order to after resolves aurelia/framework#263 ( 984aeb12 )
  • spelling: Miss-Spelled SwapStrategies ( 9b9fb9ea )

aurelia-fetch-client 1.0.0-beta.1.0.2

Bug Fixes

  • http-client:
    • work around bug in IE/Edge where Blob types are ignored ( 36407e27 )
    • correct type check ( d38d1b34 )

aurelia-animator-css 1.0.0-beta.1.0.2

Bug Fixes

  • npm-convention: npm test works ( d44f2ca5 )
  • race-condition:
    • fix for missing animationend event under stress ( f7963e3e )
    • test for animation occurring without timeout ( 3eefc533 )
  • tests: Fixed ReferenceError in two tests ( f976e0b0 )

aurelia-skeleton-navigation 1.0.0-beta.1.0.3

Bug Fixes

  • build: remove the faulty doc task ( e5119bf4 )
  • main: add notes on swap order ( c051b2cb )

aurelia-i18n 0.4.4

Bug Fixes

  • all: add missing dependencies ( 73370c8f )
  • lint: fixes linter issues and adds build ( 1f60c4f5 )
  • tr: fixes object flattening ( 2fba7fbb )

Features

  • signaling: provides TBindingBehavior ( d9877eea )