Your Privacy

This site uses cookies to enhance your browsing experience and deliver personalized content. By continuing to use this site, you consent to our use of cookies.
COOKIE POLICY

Web Stacks & Fanny Packs | NG Conf 2018

Web Stacks & Fanny Packs | NG Conf 2018
Back to insights

For one week in April of this year, the 80s were alive and well in Salt Lake City, Utah. Over 1500 developers from around the world gathered to see the Back to the Future DeLorean, play some classic arcade games, and listen to way too much Rick Astley. Most importantly, we were here at ng-conf 2018 to learn more about the popular web framework Angular. This 80s themed conference brought together the users and creators of the Angular ecosystem to discuss the new features in Angular and related technologies as well as to reinforce some of the best practices for designing, building and maintaining applications. Angular and RxJS have both released new versions with new features to explore. Angular also demoed a new, future renderer, Ivy, which promises to drastically reduce the size of applications. There were also numerous talks and workshops centered around NgRx, a collection of reactive libraries for dealing with tasks like state management and router events. Let’s talk about the new Angular improvements, the new renderer Ivy, and some best practices you can start using today.

Before we dive into Angular 6, it’s worth mentioning Angular will be supporting older versions. AngularJS will continue to have bug fixes until June 30, 2018 and long-term support until June 30, 2021. I have written about upgrading previously, and have since upgraded apps to modern Angular. While it has its challenges, it is entirely doable in this time frame provided if you have a good plan in place. The Angular team also addressed changes to its support of old versions of modern Angular. Previously, even numbered releases would have 18 months of support, while odd numbered releases would have a smaller support window. Now, every major release will have the same 18-month timeframe for support which will alleviate the stress of managing framework upgrades alongside new features.

Angular 6 has been released, bringing with it a lot of new tooling features and improving how fast you can build Angular applications. The popular CLI tool has been updated with two new powerful commands, ‘ng upgrade’ and ‘ng add’. ‘Ng upgrade’ acts as a way to easily upgrade your Angular application. This command will go through the package.json file and recommend updates for your dependencies. Not only that, Angular and third parties can attach “schematics” to this process to scan your code and upgrade any breaking changes for you automatically. RxJS demonstrates how powerful and time saving this feature is. This library was also updated and made many changes to how operators are imported and how Observables should be structured. Instead of manually going through, finding and replacing the imports and code changes, RxJS does the work for you through ‘ng upgrade rxjs’. This could be huge – imagine upgrading an app and it automatically finds and fixes the incompatible code for you.

‘Ng-add’ works similarly. After upgrading, you can add new components and features from Angular and supported dependencies with this command and they will add it to your project, making the configuration changes and files for you. When more and more dependencies start utilizing this functionality, it has the potential to greatly reduce much of the boring boilerplate work that comes with adding new functionality.

The Angular team also demoed a new renderer, Ivy, which will be released at a later date. This new renderer promises to be backward compatible and will require no code changes. In return, all Angular apps will become smaller and faster. This improvement is due to a new philosophy on how files should be compiled, and by taking advantage of modern web application deployment techniques. Currently, Angular uses Ahead of Time (AOT) compilation to compile the files into a format that is smaller and takes less time to load, greatly reducing lag for the web app user. This process requires having a global context of the application. While fast for the end user, the compile time is slow for developers. Ivy has switched to the idea of “locality” where only one file is compiled at a time. This seemingly small change has massive implications that reduce the complexity of the renderer, and the generated files. This new AOT process outputs files that are then easier to consume and analyze. When combined with techniques like tree shaking, web apps can be reduced further to only include the framework functionality that is absolutely necessary. The results are promising. Currently, the smallest size you can make in the simple “Hello World” app in Angular is 36 Kb. With Ivy and no code changes, this has been reduced to 2.7 Kb. This is an impressive reduction we all hope holds true when scaled up to real web applications.

Finally, “Optimizing an Angular application” by Minko Gechev highlighted some techniques you can implement right now, without any upgrades. What I found interesting was a lot of the advice he gave was similar to my previous blog post on functional programming. One of the points I made was about the advantages of writing pure functions. To reiterate, a pure function is a function where the output value is solely determined by its input values and causes no side effects. The properties of this type of function lead to potential performance gains which Angular utilizes. By using pure pipes to render complex values, applications can reduce the number of computations Angular does to render objects on the screen. A pure pipe is essentially a pure function, the output of the pipe only changes when the input changes. Therefore, Angular knows it can safely skip computing a value if the input has not changed. For common web components displaying lists and tables, these should be utilized whenever possible. Similarly, Angular has found a way to take this concept and apply it to components. Utilizing the “OnPush” change detection strategy, components can check for changes only when the inputs to a component have changed. Instead of walking down the component tree checking every component, you can adjust your app to focus on the components that get updated due to a change. The only caveat that keeps components from being truly “pure” is that change detection will also trigger if an event occurs on the component. Still, this optimization technique leads to a big increase in performance and shows that minimizing side-effect causing components can lead to better performing applications.

The ng-conf was a great place to learn about what is on the Roadmap for Angular, what techniques you can take advantage of now, and to see people break dancing to 80s hip hop, wearing fanny packs and neon jackets. Seeing the clash of retro culture with the new technologies shows how far we have come – from an era where the Walkman was an amazing gadget, to the extremely connected world we live in today. Who knows what the next 35 years will bring us, but I know I will be looking forward to the innovations that help make the next big idea a reality.

Digging In

  • Digital Products

    Unlocking Business Potential: The Power of Custom Application Development

    Like any savvy business leader, you’re likely always on the lookout for tools to give your company a competitive edge. And in doing so, you’ve undoubtedly considered investing in custom application development. But the question is, how do you ensure that such a major investment in a custom web application development provides a strong return on […]

  • Digital Products

    Mastering Legacy Application Modernization: Strategies for Success

    The ironic truth of the business world is that change is the only constant. But this means that failing to keep pace with the competition and its technologies will only end with you falling behind. That’s where legacy application modernization enters the fold. When you modernize legacy applications, your team gains access to new features […]

  • Digital Products

    CTO Confessions Podcast

    In this episode of CTO Confessions, Rob Phillips, the Vice President of Software Engineering at UDig, digs into his journey from a passionate technologist in his youth to a seasoned leader in the tech industry. He shares valuable lessons on transitioning to senior leadership, the importance of understanding and articulating company problems, and the art of empowering teams for high performance.

  • Digital Products

    Navigating the Challenges of On Premise to Cloud Migration

    In today’s rapidly evolving technological landscape, the shift from on premise solutions to cloud-based infrastructure has become a pivotal transformation for organizations seeking to modernize their IT operations. This transition holds the promise of increased agility, cost savings, and enhanced scalability. However, it is not without its set of formidable challenges that organizations must navigate. […]

  • Digital Products

    The Power of Transferrable Skills in Tech Projects

    Every project has its own unique elements that require flexibility to be effective and achieve success. This often requires picking up new pieces of a tech stack, learning a new programming language, or a new project methodology. Fortunately, there are also many transferrable skills that carry over from one project to the next. In my […]

  • Digital Products

    The Four Pillars of Effective Digital Product Development

    In 2020 alone, approximately two billion consumers purchased at least one digital product. From software licenses to mobile apps and tech tools, consumers are becoming increasingly active in the digital product market, a trend that has naturally spurred brands across a wide range of industries to reevaluate their digital product design and development process workflows. […]