# Upgrading to new versions of Ember

**URL:** <https://discuss.emberjs.com/t/upgrading-to-new-versions-of-ember/16819>\
**Category:** Questions\
**Created:** [July 12, 2019, 5:15pm UTC](https://discuss.emberjs.com/t/upgrading-to-new-versions-of-ember/16819 "2019-07-12T17:15:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mehulkar](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/mehulkar/32/11259_2.png) [@mehulkar](https://discuss.emberjs.com/u/mehulkar)\
**Post date:** [July 12, 2019, 5:15pm UTC](https://discuss.emberjs.com/t/upgrading-to-new-versions-of-ember/16819/1 "2019-07-12T17:15:03Z")

</div>

After years of Ember development, it seems I’m still confused about the recommended way to upgrade Ember. My main confusion is about compatibility between the different line items in `package.json`. I don’t use `ember-data`, so I really just care about updating `ember-source`. But since a default Ember CLI app has a few other packages, it’s unclear what I need to update.

I’ve tried `ember-cli-update`, but without reading the source code, it’s not really clear what it does. At this point in time, I tried updating to 3.11 and discovered that it doesn’t check for available updates of `ember-source`, it checks for available updates of `ember-cli`! This was kind of unexpected, but I’m assuming that after upgrading `ember-cli`, it goes and overlays the default `ember new` blueprint and expects the user to resolve conflicts and then run `npm install`?. Because of this confusion, it doesn’t really seem like a viable solution.

Starting this post to hear from other’s experience upgrading Ember.js and how they go about it. Maybe the right solution is to really consider every line item in package.json individually, just like I would with any other Node app, and resolve incompatibilities as they arise?

---

<div class="post-metadata">

**Author:** ![ef4](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/ef4/32/13470_2.png) [@ef4](https://discuss.emberjs.com/u/ef4)\
**Post date:** [July 12, 2019, 5:57pm UTC](https://discuss.emberjs.com/t/upgrading-to-new-versions-of-ember/16819/2 "2019-07-12T17:57:32Z")

</div>

I think ember-cli-update is by far the easiest solution.

If your concern is that you didn’t get ember-source 3.11, that’s because ember-cli 3.11 hasn’t released yet. Because ember-cli has to curate the set of other packages (which already must be released), ember-cli gets released last. It will presumably be released imminently.

> [@mehulkar](#):
>
> it doesn’t check for available updates of `ember-source` , it checks for available updates of `ember-cli` !

It works this way because the version of ember-source (and everything else) in the blueprints is controlled by ember-cli. It needs to be that way for `ember new` to be a thing.

ember-cli-update gives a good three-way diff between the blueprint you’re coming from, the blueprint you’re going to, and your own actual app. This is nice because whatever standard things you’re using and didn’t customize (including all the default dependencies in package.json) just automatically upgrade with no intervention. Whereas you’ll get a diff to resolve if you customized something and then the underlying blueprint also changed – which can save you a lot of debugging.

If you want the most curated, low-risk solution, wait for ember-cli 3.11 and run ember-cli-update. If you don’t want to wait, it’s also totally fine to start upgrading things yourself (particularly ember-source, which is not very tightly coupled) and it will almost certainly work, but you will on occasion hit a problem and realize some other package needs updating too.

---

<div class="post-metadata">

**Author:** ![efx](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/efx/32/17920_2.png) [@efx](https://discuss.emberjs.com/u/efx)\
**Post date:** [July 16, 2019, 12:55pm UTC](https://discuss.emberjs.com/t/upgrading-to-new-versions-of-ember/16819/3 "2019-07-16T12:55:44Z")

</div>

> [@mehulkar](#):
>
> But since a default Ember CLI app has a few other packages, it’s unclear what I need to update.

I’ve experienced this confusion too. I’ve wondered if there could be a way to completely isolate ember-cli dependencies within package.json or another manifest format to better distinguish application and tooling dependencies.

> [@ef4](#):
>
> I think ember-cli-update is by far the easiest solution.

I completely agree. I used to update our ember project manually. In typical Internet fashion I [complained aloud](https://github.com/PghTechFest/PghTechFest2016/blob/master/building-a-product-with-ember-2.pdf) without trying to fix it (“General Workflow” slide). ember-cli-update has helped greatly reduce busywork with upgrades. With ember-cli-update, I have it installed globally and then follow these steps:

1. Run `ember-cli-update`
2. Resolve irrelevant file changes like updates to the README.md. (`git checkout -- README.md`)
3. Resolve any unexpected changes manually
4. commit and PR

> [@ef4](#):
>
> ember-cli-update gives a good three-way diff between the blueprint you’re coming from, the blueprint you’re going to, and your own actual app

Huh, did not know this; I’ll have to try it on the next upgrade.
