Announcing Dojo 2 beta 5!

Dojo is a modern, reactive framework authored with ES2017 and TypeScript, and optimized with the needs of enterprise application development in mind.

If you’re learning about Dojo 2 for the first time, please read our overview about the Dojo 2 beta 4 release.

Getting beta 5

Beta 5 is currently tagged as latest in npm, so simply updating to the latest version will provide you with the Beta 5 release. We also have a release tag of beta5 in npm if you want to focus just on using Beta 5.

This will be the final beta release for Dojo 2! As we make releases of packages in anticipation of Release Candidate 1, we will not publish those packages to latest until Release Candidate 1 is available.

Just getting started

If you want to get started with Dojo 2, the best way is to take a look at our tutorials or even take a look at Dojo 2 in action with our example applications (source on GitHub). Good starting tutorials are:

New in beta 5

Since the beta 4 release, we have made a number of improvements. The biggest changes and additions are mentioned here, with a complete list of changes

Initial re-architecture of the build system

Prior to beta5, the structure of the build commands was focused around the tooling and not around the actual creation of applications. So we completed a re-architecture and restructuring of the commands to align more to their use. Specifically, @dojo/cli-build-webpack is deprecated and replaced with:

This refactoring is mostly complete for Beta 5, with a few remaining items to complete for release candidate 1.

Usage of the build system is reflected in updates to the Dojo 2 tutorials.

Improvements to using Custom Elements/Web Components

Added a decorator for the custom element descriptor. There is no longer a requirement for a separate module any more!

widget-core changes

The primary breaking change in widget-core is that HNode was renamed to VNode

New widgets

Two new widgets were added in Beta 5:

  • Progress (@dojo/widgets/progress/Progress)
  • Toolbar (@dojo/widgets/toolbar/Toolbar)

These widgets may be viewed in the widget showcase.

Stores

A number of refinements were made since the initial @dojo/stores release in Beta 4:

See the @dojo/stores readme for more information about this package.

Updated examples

Our collection of Dojo 2 examples were updated for beta 5.

In particular, the kitchen sink version of ToDoMVC now uses @dojo/stores.

Also the Dojo 2 HNPWA example was accepted and is now available.

ESM packages

Dojo packages now ship ES modules alongside UMD! In the future we will be leveraging ESM for evergreen browser builds with webpack.

Theme creation

A new cli-create-theme package has been added to make it easier to create a custom theme.

Migrate to TypeScript 2.6

TypeScript 2.6 was released and introduced a number of significant improvements to the language, in particular the strictness of certain types of typings. These changes helped us further refine the type definitions and find a few bugs along the way. Dojo 2 beta 5 ships all of its packages leveraging TypeScript 2.6, and all packages conform to strict type mode.

What’s next?

We are nearly there for the initial 2.0 release. For RC1 in just a few weeks, you can look forward to:

  • More end developer tooling improvements
    • dojo/cli-build-app Finish re-architecture of the build system
    • dojo/cli-build-widget Focused build process for Dojo 2 widgets as web components
  • dojo/themes A new package for Dojo 2 themes
  • dojo/widget-core Finish DOM abstraction
  • dojo/widgets Standardize widget events
  • Additional theme to provide Dojo 1 flat theme style interoperability

At the moment, we are planning for RC1 in early February.

We are also working on additional features post Dojo 2.0:

  • Development and diagnostic tools
  • dojo/dgrid Powerful data grid widget

Getting involved

If you want to get involved, you can see an overview of the parts of Dojo 2 at dojo/meta. In all of our repositories we use the labels good first issue and help wanted to help guide you on a good place to get started.