Angular 7 Features & Enhancements: A Retrospective
Angular 7 introduced interactive CLI prompts to streamline terminal setup, alongside CDK virtual scrolling and drag-and-drop capabilities for optimized UI rendering and element manipulation. Released in October 2018, this framework update focused on developer workflow efficiency, runtime performance, and simplifying complex UI patterns.
The rest of this retrospective details how interactive CLI prompts reduce setup errors, explains the implementation of CDK virtual scrolling and drag-and-drop directives, and examines performance optimizations like default bundle budgets and polyfill removal. It also covers Angular Material refinements, core dependency updates, and a comparative feature breakdown across Angular 6, 7, and 8.
Angular 7 New Features and Enhancements: Core Capabilities and Technical Breakdown
Angular 7 introduced major CLI prompts for interactive project scaffolding, Component Dev Kit (CDK) virtual scrolling and drag-and-drop capabilities, default performance bundle budgets, updated Angular Material design guidelines, and dependency updates including TypeScript 3.1 and RxJS 6.3. Released in October 2018, these framework updates focused on developer workflow efficiency, UI component flexibility, and runtime performance optimization.
What were the key updates in Angular 7?
Understanding the foundational shifts introduced in Angular 7 helps developers managing legacy codebases or comparing client-side frameworks. Earlier software development patterns often relied on manual CLI flag configurations, but Angular 7 changed how teams configured applications. The core goal of Angular in this release was simplifying tooling, enforcing smaller bundle footprints, and supplying built-in primitives for complex UI patterns across modern web development projects.

Key features and enhancements introduced in Angular 7 include:
- Interactive CLI Prompts: Guides developers through command configuration options dynamically during execution.
- CDK Virtual Scrolling: Renders only DOM elements visible within the container viewport to optimize large lists.
- CDK Drag and Drop: Provides native directives for list reordering, item movement, and list transfers.
- CLI Bundle Budgets: Enforces default file size warnings and errors during production application builds.
- Material Component Refinements: Updates visual alignment and accessibility for form fields, buttons, and select dropdowns.
- Updated Dependencies: Adds official support for TypeScript 3.1, RxJS 6.3, and Node.js 10.
How do CLI Prompts streamline terminal workflows?
In Angular 7, the Angular CLI (v7.0.0) introduced interactive CLI prompts. Prior to this update, developers had to memorize or research specific flags when executing commands like ng new or ng add. With version 7, running CLI commands prompts the user with interactive questions directly inside the terminal interface.
When running ng add @angular/material, the command-line interface interactively prompts you to choose a prebuilt color theme, set up global typography styles, and enable or disable browser animation modules. Similarly, executing ng new application-name prompts you to decide whether to include Angular routing and asks which stylesheet format you prefer (CSS, SCSS, Sass, or Less).
This interactive approach reduced syntax errors, shortened setup time, and allowed teams to enforce consistent project structures across team members during application development.
How does CDK Virtual Scrolling optimize long list rendering?
Rendering large collections of items in standard HTML containers degrades application performance. Placing thousands of elements in the DOM consumes excessive memory and causes frame drops during page scrolling. Angular 7 resolved this bottleneck by introducing virtual scrolling into the Component Dev Kit via @angular/cdk/scrolling.
Virtual scrolling limits DOM creation by rendering only the items that fit inside the visible scroll viewport. As the user scrolls through the list, the viewport dynamically recycles existing DOM elements, updating their content rather than inserting new elements into the tree.
To implement virtual scrolling in Angular 7, you import ScrollingModule into your feature module and structure your template using the cdk-virtual-scroll-viewport component:
<cdk-virtual-scroll-viewport itemSize="50" class="example-viewport">
<div *cdkVirtualFor="let item of items" class="example-item">{{item}}</div>
</cdk-virtual-scroll-viewport>
The itemSize property defines the height of each row in pixels. The *cdkVirtualFor directive functions similarly to *ngFor, but integrates directly with the viewport scroll engine to calculate visible boundaries. For lists containing tens of thousands of records, memory usage drops from hundreds of megabytes to a minimal footprint, ensuring constant 60 frames per second rendering speed.
How does CDK Drag and Drop simplify direct element manipulation?
Before Angular 7, building custom drag-and-drop interfaces required raw HTML5 drag API handling or reliance on third-party libraries that added external dependencies. Angular 7 introduced @angular/cdk/drag-drop, offering a declarative API for building drag-and-drop interactions.
The module provides directives and utility functions that handle animation, sorting, reordering, and item movement between multiple drop lists:
cdkDrag: Applied directly to HTML elements to make them draggable.cdkDropList: Placed on container elements to define boundaries where items can be dropped or sorted.cdkDropListConnectedTo: Connects distinct drop zones, allowing users to drag items from one column to another.moveItemInArray: Helper method provided by the CDK package to reorder items within an array.transferArrayItem: Helper method to transfer items between separate data arrays when items cross drop zones.
As documented in the official Angular blog post on version 7, this module provided built-in support for touch devices, custom preview templates during drag operations, automatic list reordering animations, and keyboard accessibility for non-mouse users.
What performance enhancements were introduced in Angular 7?
Application size and bundle efficiency were primary targets for improvement in Angular 7. The release introduced automated build checks and stripped unnecessary code polyfills automatically.

Default Bundle Budgets in Angular CLI
Angular 7 introduced default performance bundle budgets in the angular.json configuration file. When generating a project with version 7, the build system enforces predefined threshold limits for JavaScript assets:
- Initial Bundle Warning: Set to 2MB. Triggers a build warning if the main bundle exceeds this threshold.
- Initial Bundle Error: Set to 5MB. Causes the production build to fail if the main bundle exceeds this limit.
- Component Style Warning: Set to 6KB for individual component stylesheets.
Developers could customize these limits in angular.json based on project specifications. By surfacing bundle bloat during compilation, teams prevented unintended library imports from slipping into production builds unnoticed.
Automatic Polyfill Removal
In Angular 6 and earlier, production builds included the reflect-metadata polyfill in the main JavaScript output. Angular 7 updated the build pipeline to strip reflect-metadata automatically during production compilation (ng build --prod). This single optimization reduced final bundle output sizes by roughly 20KB to 30KB without requiring developer intervention.
Ivy Compiler Groundwork
Although the Ivy compilation and rendering engine debuted fully in Angular 9, Angular 7 laid foundational code architecture behind the scenes. Experimental opt-in flags were refined to allow core engineers to validate Ivy’s template compilation strategy against Angular 7 APIs.
What updates were made to Angular Material and core dependencies?
Angular 7 introduced visual alignment updates for Material Design components alongside core platform dependency updates.
Angular Material Updates
Angular Material in version 7 matched visual design specification updates from Google. Specific enhancements included:
- Improved typography, spacing, and label floating mechanics in mat-form-field elements.
- Refined focus outline styles and ripple animations on mat-button components.
- Enhanced support for native
<select>elements inside form fields, improving accessibility and native performance on mobile browsers.
Dependency Alignment
Angular 7 aligned its core platform dependencies to take advantage of modern JavaScript features and runtime improvements:
- TypeScript 3.1: Added support for mapped types on tuples and arrays, combined with property declarations on functions.
- RxJS 6.3: Provided bug fixes and performance improvements while retaining standard pipeable operator syntax.
- Node.js 10: Extended engine support to Node 10 LTS while maintaining backward compatibility with Node 8.
How do Angular versions compare across key capabilities?
The table below compares key features and defaults across Angular 6, Angular 7, and Angular 8 to illustrate how framework capabilities evolved across releases.
| Feature / Area | Angular 6 (May 2018) | Angular 7 (Oct 2018) | Angular 8 (May 2019) |
|---|---|---|---|
| CLI Workflow | Flag-based configuration | Interactive CLI Prompts | Interactive Prompts + Differential Loading |
| CDK Components | Basic CDK layouts | Virtual Scrolling & Drag-and-Drop | Drag-and-Drop & Viewport updates |
| Bundle Budgets | Manual configuration | Enabled by default in angular.json | Enabled by default (stricter thresholds) |
| TypeScript Support | TypeScript 2.7 to 2.9 | TypeScript 3.1 | TypeScript 3.4 |
| Compiler Engine | View Engine | View Engine (Ivy preparation) | View Engine (Ivy preview available) |
How do you maintain or upgrade a legacy Angular 7 application?
When working with an Angular 7 application, developers must handle dependency maintenance, security audits, and step-by-step upgrade paths carefully.
Step-by-Step Upgrade Process
Upgrading a legacy project requires stepping through major versions sequentially. Attempting to jump directly from version 7 to current versions will break project dependencies and build scripts.
- Audit Node and Environment: Ensure local Node.js is on version 8 or 10 before starting the Angular 7 update sequence.
- Update Core Packages: Run
ng update @angular/cli@7 @angular/core@7to update core dependencies and automatically update theangular.jsonconfiguration schema. - Update UI Libraries: Run
ng update @angular/material@7to update component directives and Material theme styles. - Resolve NPM Vulnerabilities: Run
npm auditto evaluate third-party packages for known NPM package vulnerabilities, replacing unmaintained packages with updated equivalents. - Proceed Sequentially: Move from Angular 7 to Angular 8 using
ng update @angular/cli@8 @angular/core@8, testing the application build at each step.
Common Upgrade Obstacles
- Deprecated RxJS Syntax: Codebases converting older RxJS 5 dot-chained operators to RxJS 6 pipeable operators must verify that all import paths reference
rxjsandrxjs/operatorsdirectly. - Custom Component Budgets: Large legacy applications upgrading to version 7 may trigger build failures due to new default bundle budgets. Adjust the budget limits in
angular.jsontemporarily while optimizing heavy bundle assets. - Node Version Incompatibility: Modern Node engines (Node 18+) cannot run Angular 7 CLI commands directly. Developers maintaining legacy systems should use Node Version Manager (NVM) to switch to Node 10 during maintenance windows.
What real-world use cases benefited most from Angular 7?
The technical capabilities introduced in Angular 7 addressed specific frontend application bottlenecks in enterprise software production:

1. Financial Dashboards and High-Frequency Tables
Trading platforms and analytics applications rendering live updates across thousands of table rows used CDK Virtual Scrolling to maintain responsive user interfaces. By limiting DOM nodes to visible table rows, applications maintained quick rendering during rapid data stream processing, improving software development performance.
2. Enterprise Workflow and Kanban Boards
Internal task managers, project boards, and workflow builders utilized CDK Drag and Drop to create interactive column layouts. Directives like cdkDropList and cdkDrag allowed developers to implement multi-column task sorting and card movements without writing DOM manipulation logic during core development phases.
3. E-Commerce and Consumer Mobile Web Applications
E-commerce portals optimized initial page load speed by using CLI Bundle Budgets. Setting explicit build size constraints prevented custom third-party scripts from expanding initial JavaScript bundles during customer-facing portal development, keeping core storefront e-commerce features lightweight.
Who is Angular 7 not suited for?
While Angular 7 introduced substantial tooling and performance gains, specific application profiles do not benefit from staying on or choosing version 7:
- New Greenfield Applications: New software projects should use current, supported versions of Angular to receive active security updates, modern standalone component architecture, and full Ivy compiler support.
- Micro-Frontends Requiring Modern Module Federation: Version 7 lacks native Webpack 5 integration required for distributed module federation architectures.
- Teams Operating on Modern Node Runtimes: Organizations requiring Node 18 LTS or Node 20 LTS environments cannot run Angular 7 CLI tooling without legacy Node runtime environments or container virtualization.
Frequently asked questions
When was Angular 7 officially released?
Angular 7 was officially released on October 18, 2018. It focused on developer workflow refinements, performance enhancements, and CDK UI components.
How does CDK Virtual Scrolling differ from standard ngFor rendering?
Standard *ngFor creates HTML DOM elements for every single item in a list, causing severe performance slowdowns on large data sets. CDK Virtual Scrolling renders only the items visible inside the container viewport, dynamically recycling elements as the user scrolls.
What are CLI Prompts in Angular 7?
CLI Prompts are interactive terminal prompts introduced in Angular CLI 7. When running creation or library addition commands like ng new or ng add, the CLI asks interactive questions to help configure routing, stylesheet formats, and component settings.
Is Angular 7 officially supported?
No, Angular 7 reached its official end of support after its standard active and long-term support (LTS) windows ended. Teams managing Angular 7 projects should plan sequential upgrades to active framework releases.