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

Skip to main content

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

    Inside Config 2025: What’s New in Figma

    Config 2025 kicked off with a bang on Day 1. Figma’s annual conference brings together designers, developers, and all those involved in the making of a product. The 2-day event has a stacked lineup of accomplished speakers ready to share their insights on the world of product building. At today’s opening keynote, the Figma team, […]

  • Digital Products

    Choosing the Right Modernization Approach

    When organizations decide it’s time to modernize their technology infrastructure, choosing the right approach is crucial. Modernization isn’t merely a technical upgrade; it’s a strategic business move that significantly impacts growth, agility, and long-term success. Here’s how your company can effectively begin to select the best modernization strategy tailored to your goals and challenges. In […]

  • Digital Products

    TAG Panel: Differentiate Your Customer Experience

    Join the CX and Product Management Societies to hear from our panel of Human-Centered Design experts on the business value of Agentic AI.

  • Digital Products

    The Bloated SaaS Era: Paying More for Less While Businesses Wait

    SaaS was supposed to make business faster, smarter, and more efficient. Instead, it’s become bloated, expensive, and painfully slow to change. The platforms we rely on—Salesforce, Workday, SAP, and others—haven’t truly innovated in years. Yet, they demand massive investments in re-implementation, process re-engineering, and data migration just to keep up. It’s time to ask: Are […]

  • Digital Products

    Reid Braswell Joins UDig as Vice President, Software Engineering

    UDig is proud to welcome Reid Braswell as our new Vice President of Software Engineering. With over 13 years of experience in technology consulting, Reid brings deep expertise in digital transformation, modern software engineering, and client-focused solutions. His leadership and passion for solving complex challenges make him an exceptional addition to the UDig team. Reid’s […]

  • Digital Products

    Energy 2025 – Expansion of Fossil Fuels or Carbon Reduction?

    Now that the election is behind us, we have an opportunity to anticipate the possible effects on the energy industry under this new administration. What strategies will be impacted? What will remain the same? What opportunities can we take advantage of in 2025? This blog is meant to dig into these questions and provide some […]