loading...
HeroDevs

You Should Upgrade to Angular 9 TODAY

frosty profile image Aaron Frost ・6 min read

The TL;DR Version

Let me open by briefly summarize my points of why you should upgrade today. I will cover each point in more detail lower in this article.

  • The Angular team is actively listening to feedback from people who upgrade today. Thus, if you are worried about having problems and may need help, then now is the perfect time for you to try it and have their help.
  • The testing cycle for this release of Angular has been one of legends. No prior version of Angular (including AngularJS) has ever gone through such a rigorous testing phase. This should help lessen your fears.
  • The Angular community will begin to evolve more quickly once v9 is here. You will miss some of it if you are not on v9.
  • The point of this release was to NOT provide new functionality, but to maintain the current. So you don't have to worry about massive API changes that will break you.

For those of you who have short attention spans (like me), I hope that this summary is enough to give you some talking points and/or enough to start thinking about the benefits of upgrading to Angular 9 today.

And for those of you who want more reasoning, keep going. The rest of this article is for you.

A Longer Reasoning

If you are going to update to Angular 9 once it is in general release 9.0.0, you should definitely do it today! Or you could wait until 9.0.1 or 9.1.0. But let me explain why I think that for this release specifically you should consider updating sooner, rather than later.

You Have Support From Google

Because 9.0.0 is in RC mode, the Angular team is actively watching the feedback from people upgrading. This means that if you upgrade today, they will be listening to YOUR feedback. And when you think about it, we would rather upgrade while they are still looking at it (before they have moved their focus onto 10.0.0). If you think your team may need some help from them, then TODAY is the time for you to upgrade.

In the past when I have upgraded during the RC phases, the Angular team is there listening to my issues, and asking to get on Hangouts so that they can see the issues I am dealing with. This could be you if you get on the upgrade today.

At the end of the day, what helped us determine when to upgrade? We wait until we think it is "safe". Well, if you are going to have issue upgrading, wouldn't you rather have the issues while the Angular team is here to help? In the scenario where your project DOES have an issue with the upgrade, you are more "safe" doing it earlier while you still have the active attention of the team.

If you try this and have an issue or any problems, you can file an issue on the angular repo, or you can try and chat with experts on the Angular gitter.

V9 Has Been Tested EXTREMELY Well

No version of Angular has been more rigorously tested than has been Angular v9. Not even the initial release of Angular v2 went through this thorough of a testing cycle. How could it have? When v2 was released, it had a fraction of the users that Angular v8 currently has. Inherently this means that the amount of community feedback that v2 received was inconsequential when compared the the number of projects running on v8 today.

So when you simply compare the number of RC and Beta users that v9 has had, it is the most tested version of Angular ever.

Additionally, thanks to the version control system used internally at Google, any time the Angular team releases a change to the framework, the tests of every project at Google that depends on Angular get executed. So thousands of tests across hundreds of projects get executed for each PR from the Angular team. Clicking "Merge" on those PRs must be stressful!

A few months ago, a member of the community who isn't familiar with Angular assumed that only React was heavily dog fooded prior to being released, when nothing could be further from the truth.

With each PR put into Ivy and Angular 9, if any of the hundreds of projects across Google broke, the Angular team had to fix those breaks before they could move on. Knowing that the Angular team and React team have massive amounts of projects to validate their changes should help us all sleep better at night.

Post v9 Community Will Change Quickly

I remember being at an Angular conference a few years ago, and joking with my friends about playing a drinking game every time someone said something about "Ivy will fix that".

We have been waiting for Ivy for years now. And now that it is here, all of the changes and evolutions that were in holding patterns waiting on Ivy can now land in the community. This means that we should see some really cool things coming from some of the smartest people in the Angular community once v9 is here.

And while that cambrian-explosion-esk event is happening in the Angular community, if you're sitting in Angular 6/7/8/other instead of being in 9, your project may miss out on some of the cooler new changes.

Now, I am not imploring you to join the entire Angular community and chase the pendulum. In fact, I have made a solid career of NOT chasing the pendulum. However, many of the changes coming soon will be HIGHLY beneficial for any Angular project.

Consider the following tweet by Sander Elias. If people like Sander make our life tons easier by introducing features like observable lifecycle hooks, you won't want to miss that. That's a game changer.

These kinds of changes will happen often and regularly now that Ivy is here. The arrival of v9 is like undaming the water in a lake. Cool new features should begin to flow into the community. You should encourage your team to be a part of that, and even participate with changes of your own.

What Makes This Release Awesome Is It's LACK Of Changes

Where almost all other releases of software are heralded and praised for what they add to the ecosystem, Angular's v9 release should be applauded for it's stability. The feature of v9 is it's LACK of features. What makes it so wonderful is it's lack of visibly wonderful changes.

Angular v9 was about making major changes under the hood of the framework, without having any outward changes on our code. The API surface should remain entirely unchanged (with the exception of the few documented changes that each have schematics to make the migration pain free). The point of the release is to have every app work the same as it did before.

Because this is the point of the release, it makes it a great time for your team and your projects to get on board early and be a part of the v9 upgrade party that is happening right now (before the official v9 release).

Conclusion

One of my favorite hobbies is that of fishing. I've been doing it since I was a kid. While I still have a lot to learn, you could call me an expert in ice fishing. And when I take my friends ice fishing for the first time, many of them need me to walk out on the ice and show them that it truly is safe, and that the ice is strong and more than capable of holding us up to have a fun day.

My intention in this article is not to throw guilt on those who aren't ready to update. Neither is my intention to disregard the concerns of some of those reading. We are all fighting a fight that no one else sees, and I don't pretend to understand all of what everyone is dealing with.

Rather, I want to walk out on the ice and show that it is strong and much more capable that some will give it credit for. As web developers, we stand on the backs of giants to build the projects we build. The Angular team has worked hard to make a good, solid, safe release for all of us. And I believe that they have succeeded.

If any of you have questions about joining me out here on in Angular v9 ice (ahead of it's official release), feel free to hit me on on Twitter. My DMs are open.

If you're ready to try this out, checkout the Upgrading to Angular 9 Guide.

Cheers!

Discussion

pic
Editor guide
Collapse
qixoticsoftware profile image
Richard Haber

I just created a new project using 9.0.0-rc.7. It is complaining that it 'Can't bind to 'FormGroup' since it isn't a known property of 'Form'. I've tried all the suggestions on SO, but nothing helps. Both FormsModule and ReactiveFormsModule are being imported.

It seems that this is one issue for which "No version of Angular has been more rigorously tested than has been Angular v9" has a bit more rigor needed

Collapse
frosty profile image
Aaron Frost Author

It should be 'formGroup' not 'FormGroup'. The F should be lowercase. Does that fix your issue?

Collapse
qixoticsoftware profile image
Richard Haber

Even worse, it doesn't recognize any Angular Material elements. I will start again with a simple Angular 9 app and see if I get different results, otherwise, I'll go back to 8 until I get this figured out.

Thread Thread
frosty profile image
Aaron Frost Author

Can you share your code? There was a change to formGroup in v9.

Thread Thread
frosty profile image
Aaron Frost Author

Are you using a form tag, or an ng-form tag?

Thread Thread
qixoticsoftware profile image
Richard Haber

Aaron, thanks for taking the time to help me track this down. Here are some snippets of the code and relevant parts of package.json.

  <form [formGroup]>
    <label for="user-login-email">Enter your email: </label>
    <input id="user-login-email"  formControlName="userLoginEmail">
  </form>

"@angular/animations": "^9.0.0-rc.7",
"@angular/cdk": "^9.0.0-rc.6",
"@angular/common": "^9.0.0-rc.7",
"@angular/compiler": "^9.0.0-rc.7",
"@angular/core": "^9.0.0-rc.7",
"@angular/forms": "^9.0.0-rc.7",

"@angular-devkit/build-angular": "^0.900.0-rc.7",
"@angular/cli": "^9.0.0-rc.7",
"@angular/compiler-cli": "^9.0.0-rc.7",
"@angular/language-service": "^9.0.0-rc.7",
Collapse
qixoticsoftware profile image
Richard Haber

Aaron,

The typo is in my message, not in my code.

I am going to try to use Material Forms, etc., to see if that will work. Otherwise I will either have to revert back to using Angular 8, or avoid using Reactive Forms for now

Collapse
fergalmoran profile image
Fergal Moran

Don't do this if you have a reasonably complex project, it's nowhere near ready. Ivy breaks pretty much everything.

Collapse
frosty profile image
Aaron Frost Author

Fergal, Google has dozens of reasonably complex projects that are working fine. If you care to talk about what you ran in to, I can see if I can help (or get the Angular team to look at it with you).

Collapse
fergalmoran profile image
Fergal Moran

Sure - first off ng update failed with

[error] Error: Package install failed.
at installPackage (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/tasks/install-package.js:36:15)
at installTempPackage (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/tasks/install-package.js:73:5)
at Object.runTempPackageBin (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/tasks/install-package.js:82:33)
at UpdateCommand.run (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/commands/update-impl.js:37:38)
at async UpdateCommand.validateAndRun (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/models/command.js:134:28)
at async Object.runCommand (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/models/command-runner.js:186:24)
at async default_1 (/home/fergalm/dev/myproj/myproj-web/node_modules/@angular/cli/lib/cli/index.js:54:31)%  

So.. I updated the packages manually in package.json, then ran ng update --migrateOnly
Then the horrowshow began!!

'router-outlet' is not a known element

A large number of

 error TS-998004: No pipe found with name 'async'

Literally hundreds of errors of the type

'my-component' is not a known element

and

Can't bind to '<property>' since it isn't a known property of 'my-component'

I played wackamole with the errors for as long as I could but unfortunately I don't have a huge amount of time to devote to this just now so I had to revert back to 8.2

Thread Thread
frosty profile image
Aaron Frost Author

Wow. That sucks! I feel for you. That must have been frustrating.

If you went to look at it together, we can.

If I were to try it again, I would remove all node_modules, then reinstall, and THEN attempt to do the upgrade. Not sure it will help. I just like to eliminate possible corrupt modules from the equation.

Let me know if you want another set of eyes.

Thread Thread
fergalmoran profile image
Fergal Moran

Hi Aaron

Yeah - I already tried removing node_modules and retrying, still the same.
I'm gonna take a break from it for now but will definitely take you up on your kind offer next time I try!

Fergal.

Thread Thread
fergalmoran profile image
Fergal Moran

RC8 is orders of magnitude better, still lots of weird errors and template cleaning up required but a calm and level headed error by error approach worked wonders (it kind of reminded me of my STL programming days where fixing one issue resolved 100 compile errors 😱 ). Definitely a really nice "feel" to this release, all the template issues I had to fix were down to poor coding on my behalf, the time spent fixing them really feels like time well spent! And now I have a running, tests passing angular-9-rc8 version of my app!!

Thanks again for your support and for writing the article that pushed me to get it done!

Collapse
abdurrkhalid333 profile image
Abdur Rehman Khalid

I was expecting this kind of updated from the Google team as the React has gained the popularity and I was also expecting something very rigorous from the Google team to take the lead from React as well.

As Far as I am looking into the situation, I guess the Angular will beat the React once again in the coming time as this updates seems to improve many thins as well.

Collapse
richarddavenport profile image
Richard Davenport

I don't think people are going to switch back to Angular if they did use it and are now onto something different. If people loved Angular but left for specific reasons that ivy solves, then maybe, but I just don't see that happening.

Collapse
frosty profile image
Aaron Frost Author

I think that I agree with Richard. While Ivy helps a lot, the fundamentals of what makes Angular and React different are still the same. People will still continue to choose React and Angular for what they already love them for.

I do hope that the Angular team comes up with some things to make Angular easier to learn, though.

Collapse
beggars profile image
Dwayne Charrington

Is there a blog post somewhere which sums up what Ivy is, what it does and why it is such a game changer? Admittedly, I've heard it mentioned a lot but feel as though I don't fully understand its purpose or why it is needed.

Collapse
frosty profile image
Aaron Frost Author

Here is one of many blogs about it that I have seen. dev.to/eugeniolentini/angular-ivy-...

Collapse
tabinnorway profile image
Terje Bergesen

Absolutely not. Angular 9 is simply not ready yet.

Here's my experience.

Installed 9. Created a project. Added @angular/material. Tons of compile errors. Did cache clean --force, compile errors gone. Added a material component, more compile errors. Had to cache clean again, every time I added a material component. Start editing project. Save files, nothing happens. No reload. Nothing. Have to Ctrl+C and do ng serve -o again.

20 minutes and I gave up. Uninstall @angular/cli. Lots and lots of errors when uninstalling. Doesn't uninstall. Have to manually remove @angular directory.

Installed Angular 8, back to normal working.

Collapse
katleenbrown440 profile image
Kathleen Brown

How to install angular-v9.0

Collapse
rikkepeterzen profile image
Collapse
scmhtetaung profile image
Collapse
jwp profile image
John Peters

Ok Arron, I'm in, is it as simple an npm install Angulur -v9.0

Collapse
frosty profile image
Aaron Frost Author

I updated the blog to include a link, but here is the doc you can follow: next.angular.io/guide/updating-to-...

Collapse
jwp profile image
John Peters

It hung while updating to version 8. I retried but it still hung.

Thread Thread
frosty profile image
Aaron Frost Author

It hung on the first step of the instructions in the link to the doc I sent you? ng update @angular/core@8 @angular/cli@8 is where it hung?

Did you possibly have uncommitted changes? What is your OS What happsn if you delete your node_modules, do an npm install and then try it again?

Thread Thread
jwp profile image
John Peters

Yes had uncommited work. I'll try your suggestions. Tx