# DoneJS 3.0 Update

**URL:** <https://forums.bitovi.com/t/donejs-3-0-update/957>\
**Category:** DoneJS\
**Created:** [September 6, 2018, 6:51pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957 "2018-09-06T18:51:20Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![matthewp](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/matthewp/32/77_2.png) [@matthewp](https://forums.bitovi.com/u/matthewp)\
**Post date:** [September 6, 2018, 6:51pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/1 "2018-09-06T18:51:20Z")

</div>

Several people have been asking about DoneJS 3.0 so I wanted to give an update about where it is at.

First, let me explain what DoneJS 3.0 is about. DoneJS 3.0 combines:

- CanJS 5.0 - Using the `can` package.
- StealJS 2.0 - Tree shaking
- [Incremental Rendering](https://www.bitovi.com/blog/http2-in-donejs) - Available since done-ssr 1.1.0, but now enabled by default.

A prerelease of DoneJS 3.0 is available _right now_ that includes the first 2 new features; CanJS 5.0 and StealJS 2.0. You can install it with:

```auto
npm install -g donejs@pre

```

And then create a new app:

```auto
donejs add app my-donejs3-app

```

Note that this will be missing a few things:

- The current prerelease using the traditional full server-side rendering.
- The current prerelease does not utilize constructible can-components and the new way of doing routing.

My anticipated schedule for DoneJS 3 is:

1. Get incremental rendering working with our core demo apps. This is what I’m currently working on. It is taking some time mainly because the http2 support in Node.js is quite a bit different from http1.
2. Update the generators with the new way of doing routing.
3. Enable incremental rendering by default.

When (2) is done I’ll create another prerelease and notify everyone here. Same for when (3) is done. I would expect DoneJS 3.0 to be releasing soon afterwards (after some last-second crossing of the i’s).

---

<div class="post-metadata">

**Author:** ![pYr0x](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/pyr0x/32/95_2.png) [@pYr0x](https://forums.bitovi.com/u/pYr0x)\
**Post date:** [September 8, 2018, 8:26am UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/2 "2018-09-08T08:26:00Z")

</div>

whats about the new approche for `routeData` thats described in [https://canjs.com/doc/guides/routing.html#Connectacomponent\_sview\_modeltocan\_route](https://canjs.com/doc/guides/routing.html#Connectacomponent_sview_modeltocan_route) ?

does that fit into donejs 3 ?

---

<div class="post-metadata">

**Author:** ![matthewp](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/matthewp/32/77_2.png) [@matthewp](https://forums.bitovi.com/u/matthewp)\
**Post date:** [September 10, 2018, 6:00pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/3 "2018-09-10T18:00:03Z")

</div>

Yup! The constructible components pattern from the guide will be used in donejs 3. I’m working on updating the chat guide with what I _think_ that will look like. I’ll post here when that’s done to get feedback (still discussing how this should work in practice).

One thing we are thinking about doing is turning the default `route.data` into a DefineMap so that you can do `route.data.page` to get the current page, for example. This would eliminate the need to do a bunch of `serialize: false` in you AppViewModel like people struggle with today. What do you think?

---

<div class="post-metadata">

**Author:** ![MarcGodard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/marcgodard/32/171_2.png) [@MarcGodard](https://forums.bitovi.com/u/MarcGodard)\
**Post date:** [September 11, 2018, 2:00pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/4 "2018-09-11T14:00:43Z")

</div>

Thats a good idea… simplify routes a bit 🙂

I am going to start working with this version of donejs soon, is this a good place to post issues?

---

<div class="post-metadata">

**Author:** ![matthewp](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/matthewp/32/77_2.png) [@matthewp](https://forums.bitovi.com/u/matthewp)\
**Post date:** [September 14, 2018, 3:15pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/5 "2018-09-14T15:15:59Z")

</div>

@MarcGodard donejs/donejs ! 🙂 . Appreciate the beta testing!

---

<div class="post-metadata">

**Author:** ![MarcGodard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/marcgodard/32/171_2.png) [@MarcGodard](https://forums.bitovi.com/u/MarcGodard)\
**Post date:** [November 3, 2018, 5:53pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/7 "2018-11-03T17:53:35Z")

</div>

I am not noticing much difference with the @pre version, and I can’t find a branch for it. I would like to work on this to help out and learn / get a deeper understanding of donejs. How can I help?

---

<div class="post-metadata">

**Author:** ![matthewp](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/matthewp/32/77_2.png) [@matthewp](https://forums.bitovi.com/u/matthewp)\
**Post date:** [November 5, 2018, 2:30pm UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/8 "2018-11-05T14:30:36Z")

</div>

@MarcGodard i’m currently updating the donejs guides. You can see the chat guide here: [https://donejs.github.io/next/Guide.html](https://donejs.github.io/next/Guide.html)

I haven’t gotten to the PMO guide yet. If you wanted to check it out and install the new version and go through it. Or update your person app or whatever and report bugs that would be nice. You have to install with `npm install -g donejs@pre` instead of `donejs@3` for now.

---

<div class="post-metadata">

**Author:** ![leoj3n](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.bitovi.com/leoj3n/32/174_2.png) [@leoj3n](https://forums.bitovi.com/u/leoj3n)\
**Post date:** [November 25, 2018, 1:12am UTC](https://forums.bitovi.com/t/donejs-3-0-update/957/9 "2018-11-25T01:12:03Z")

</div>

Hey @matthewp,

Let’s say you have a feathers@3 express app using the latest release of `done-ssr-middleware`… Is it really a simple as changing `seo` to `incremental`:

```auto
ssr({}, {
 strategy: "incremental"
});

```

Or do we need to restructure how we serve data and such?
