What’s new features in Angular 10?

Angular released beta version of 10, so Angular 10 on the way !!

Angular 10, a planned upgrade to the popular web development framework, is now in progress, with two initial beta releases of the TypeScript-based platform arriving on April 8, 2020. The upgrade to the Google-developed framework is expected to focus more on the ecosystem than features.

Angular 10 is likely to be smaller than previous versions of Angular. A target date for an Angular 10 production release is still to be determined. Angular 9.0 became generally available February 6, followed by Angular 9.1 on March 25. Angular 8.0 arrived May 28, 2019.

Where to download Angular 10 betas

You can find preliminary releases of Angular 10 on GitHub.

New features in Angular 10

Key features of Angular 10 thus far include:

  • The addition of dependency information and ng-content selectors to metadata. This proposed compiler feature would provide additional metadata useful for tools such as the Angular Language Service, offering the ability to provide suggestions for directives/components defined in libraries.
  • Propagation of the correct value span in an ExpressionBinding of a microsyntax expression to ParsedProperty, which in turn would propagate the span to the template ASTs (both VE and Ivy). This proposal also is for the compiler.
  • In a fix to the core, logic would be added to undecorated-class migration to decorate derived classes of undecorated classes that use Angular features.
  • In a breaking change, Urlmatcher’s type will reflect that it could always return null.
  • For the service-worker, a fix has been put in for a situation in which there was a chance that the service worker will never register when there is a long-running task or recurring timeout.
  • A number of bug fixes have been made including the compiler avoiding undefined expressions in a holey array and the core avoiding a migration error when a non-existent symbol is imported.

Road to Angular 10: Angular 9.1.0 has arrived with TypeScript 3.8 support

The final version of Angular 9 was released in February 2020, which means the road to Angular 10 has begun. We are keeping close tabs on the new releases. After three release candidates, Angular 9.1.0 has arrived, and it will be the last v9.x release before work on Angular 10 begins.

The speed of Angular releases is picking up! Just yesterday, we wrote about the third release candidate for Angular 9.1.0, and now the final version has arrived. Angular 9.1.0 adds new features including support for TypeScript 3.8, performance improvements, and a long list of bug fixes.

This is the last planned minor release for 9.x. As we start work towards 10.0, you should expect to see 10.0 prereleases usually once per week, even though they will contain only minimal changes at first.

Here’s what’s new in the latest minor version:

Angular 9.1.0

Release Highlights

  • TypeScript 3.8 update
  • ngcc improvements
    • performance optimizations
    • concurrency & reliability improvements for monorepo use-cases (npm postinstall script no longer recommended)
  • i18n now supports RTL locale info
  • Ivy compatibility fixes

Features

  • bazel: enable ivy template type-checking in g3 (#35672) (8f5b7f3)
  • bazel: transform generated shims (in Ivy) with tsickle (#35975) (e3ecdc6), closes #35848
  • compiler-cli: implement NgTscPlugin on top of the NgCompiler API (#34792) (3c69442dbd)
  • compiler: Add sourceSpan and keySpan to TemplateBinding (#35897) (06779cf)
  • compiler: Propagate source span and value span to Variable AST (#36047) (31bec8c)
  • compiler: add dependency info and ng-content selectors to metadata (#35695) (fb70083)
  • language-service: improve non-callable error message (#35271) (acc483e)
  • language-service: modularize error messages (#35678) (47a1811), closes #32663
  • ngcc: implement source-map flattening (#35132) (df816c9)
  • ngcc: pause async ngcc processing if another process has the lockfile (#35131) (eef0753)
  • ngcc: support invalidating the entry-point manifest (#35931) (8ea61a1)
  • zone.js add a temp solution to support passive event listeners. (#34503) (f9d483e)
  • zone.js add an tickOptions parameter with property processNewMacroTasksSynchronously. (#33838) (17b862c), closes #33799
  • zone.js add interface definitions which zone extends EventTarget (#35304) (4acb676), closes #35173
  • zone.js support passive event options by defining global variables in zone.js config file (#34503) (d7d359e)
  • define all zone.js configurations to typescript interfaces (#35329) (03d88c7)
  • typescript 3.8 support (#35864) (95c729f)

Performance Improvements

  • core: add micro benchmark for destroy hook invocation (#35784) (0653db1)
  • core: adding micro benchmark for host bindings (#35705) (8fed1fe), closes #35568
  • core: avoid recursive scope recalculation when TestBed.overrideModule is used (#35454) (0a1a989)
  • core: use multiple directives in host bindings micro benchmark (#35736) (5bc39f8)
  • ivy: remove unused event argument in listener instructions (#35097) (9228d7f)
  • ngcc: link segment markers for faster traversal (#36027) (47025e0)
  • ngcc: only create tasks for non-processed formats (#35719) (d7efc45)
  • ngcc: reduce directory traversing (#35756) (e0a35e1), closes #35717
  • ngcc: spawn workers lazily (#35719) (dc40a93), closes #35717
  • ngcc: store the position of SegmentMarkers to avoid unnecessary computation (#36027) (772bb5e)
  • ngcc: use binary search when flattening mappings (#36027) (348ff0c)
  • ngcc: use line start positions for computing offsets in source-map flattening (#36027) (e890082)
  • ngcc: use the EntryPointManifest in DirectoryWalkerEntryPointFinder (#35931) (ec9f4d5)

Bug Fixes

  • animations: Remove ɵAnimationDriver from private exports (#35690) (ec789b0)
  • animations: allow computeStyle to work on elements created in Node (#35810) (17cf04e)
  • animations: false positive when detecting Node in Webpack builds (#35134) (dc4ae4b), closes #35117
  • animations: process shorthand margin and padding styles correctly (#35701) (35c9f0d), closes #35463
  • bazel: devserver shows blank page in Windows (#35159) (727f92f)
  • bazel: do not use manifest paths for generated imports within compilation unit (#35841) (9581658)
  • bazel: ng_package rule creates incorrect UMD module exports (#35792) (5c2a908), closes angular/components#18652
  • bazel: prod server doesn’t serve files in windows (#35991) (96e3449)
  • bazel: spawn prod server using port 4200 (#35160) (829f506)
  • bazel: update ibazel to 0.11.1 (#35158) (4e6d237)
  • bazel: update several packages for better windows support (#35991) (32f099a)
  • bazel: update typescript peer dependency range (#36013) (5e3a898)
  • common: let KeyValuePipe accept type unions with null (#36093) (407fa42), closes #35743
  • compiler-cli: TypeScript peer dependency range (#36008) (5f7d066)
  • compiler-cli: suppress extraRequire errors in Closure Compiler (#35737) (c296bfc)
  • compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (2ce5fa3)
  • compiler: do not recurse to find static symbols of same module (#35262) (e179c58)
  • compiler: record correct end of expression (#34690) (df890d7), closes #33477
  • compiler: report errors for missing binding names (#34595) (d13cab7)
  • compiler: support directive inputs with interpolations on <ng-template>s (#35984) (79659ee), closes #35752
  • compiler: support i18n attributes on <ng-template> tags (#35681) (40da51f)
  • compiler: type-checking error for duplicate variables in templates (#35674) (2c41bb8), closes #35186
  • compiler: use FatalDiagnosticError to generate better error messages (#35244) (646655d)
  • core: Add style="{{exp}}" based interpolation (#34202) (2562a3b), closes #33575
  • core: Remove debugger statement (#35763) (8f38eb7), closes #35470
  • core: Remove debugger statement when assert is thrown (#35763) (4003538), closes #35470
  • core: add noSideEffects() to make*Decorator() functions (#35769) (dc6a791)
  • core: add noSideEffects() to ɵɵdefineComponent() (#35769) (ba36127)
  • core: add strictLiteralTypes to align core + VE checking of literals (#35462) (4253662)
  • core: adhere to bootstrap options for JIT compiled components (#35534) (e342ffd), closes #35230
  • core: allow null / undefined values in query results (#35796) (5652fb1), closes #35673
  • core: better handing of ICUs outside of i18n blocks (#35347) (c013dd4)
  • core: better inference for circularly referenced directive types (#35622) (173a1ac), closes #35372 #35603 #35522
  • core: correctly concatenate static and dynamic binding to class when shadowed (#35350) (8c75f21), closes #35335
  • core: don’t re-invoke pure pipes that throw and arguments are the same (#35827) (19cfaf7)
  • core: emulate a View Engine type-checking bug with safe navigation (#35462) (a61fe41)
  • core: error in AOT when pipe inherits constructor from injectable that uses DI (#35468) (e17bde9), closes #35277
  • core: error when accessing NgModuleRef.componentFactoryResolver in constructor (#35637) (835618c), closes #35580
  • core: handle <ng-template> with local refs in i18n blocks (#35758) (ef75875)
  • core: incorrectly generating shared pure function between null and object literal (#35481) (22786c8), closes #33705 #35298
  • core: injecting incorrect provider when re-providing injectable with useClass (#34574) (0bc35a7), closes #34110
  • core: log error instead of warning for unknown properties and elements (#35798) (00f3c58), closes #35699
  • core: make subclass inherit developer-defined data (#35105) (a756161)
  • core: provide a more detailed error message for NG6002/NG6003 (#35620) (2d89b5d)
  • core: remove side effects from ɵɵNgOnChangesFeature() (#35769) (9cf85d2)
  • core: remove side effects from ɵɵgetInheritedFactory() (#35769) (c195d22)
  • core: remove support for Map/Set in [class]/[style] bindings (#35392) (2ca7984)
  • core: support sanitizer value in the [style] bindings (#35564) (3af103a), closes #35476
  • core: treat [class] and [className] as unrelated bindings (#35668) (a153b61), closes #35577
  • core: unable to NgModuleRef.injector in module constructor (#35731) (1f8a243), closes #35677 #35639
  • core: undecorated-classes-with-di migration should handle libraries generated with CLI versions past v6.2.0 (#35824) (59607dc), closes #34985
  • core: use proper configuration to compile Injectable in JIT (#35706) (7b13977)
  • core: verify parsed ICU expression at runtime before executing it (#35923) (8c2d842), closes #35689
  • core: workaround Terser inlining bug (#36200) (f71d132)
  • elements: correctly handle setting inputs to undefined (#36140) (e066bdd)
  • elements: correctly set SimpleChange#firstChange for pre-existing inputs (#36140) (447a600), closes #36130
  • elements: schematics fail with schema.json not found error (#35211) (94d002b), closes #35154
  • forms: change Array.reduce usage to Array.forEach (#35349) (554c2cb)
  • ivy: LFrame needs to release memory on leaveView() (#35156) (b9b512f), closes #35148
  • ivy: add attributes and classes to host elements based on selector (#34481) (f95b8ce)
  • ivy: ensure module imports are instantiated before the module being declared (#35172) (b6a3a73)
  • ivy: error if directive with synthetic property binding is on same node as directive that injects ViewContainerRef (#35343) (d6bc63f), closes #35342
  • ivy: narrow NgIf context variables in template type checker (#35125) (40039d8), closes #34572
  • ivy: queries should match elements inside ng-container with the descendants: false option (#35384) (3f4e02b), closes #34768
  • ivy: repeat template guards to narrow types in event handlers (#35193) (dea1b96), closes #35073
  • ivy: set namespace for host elements of dynamically created components (#35136) (480a4c3)
  • ivy: support dynamic query tokens in AOT mode (#35307) (3e3a1ef), closes #34267
  • ivy: wrong context passed to ngOnDestroy when resolved multiple times (#35249) (5fbfe69), closes #35167
  • language-service: Suggest ? and ! operator on nullable receiver (#35200) (3cc24a9)
  • language-service: fix calculation of pipe spans (#35986) (406419b)
  • language-service: get the right ‘ElementAst’ in the nested HTML tag (#35317) (8e354da)
  • language-service: infer $implicit value for ngIf template contexts (#35941) (18b1bd4)
  • language-service: infer context type of structural directives (#35537) (#35561) (54fd33f)
  • language-service: provide completions for the structural directive that only injects the ‘ViewContainerRef’ (#35466) (66c06eb)
  • language-service: provide hover for interpolation in attribute value (#35494) (049f118), closes PR#34847
  • language-service: resolve the real path for symlink (#35895) (4e1d780)
  • language-service: resolve the variable from the template context first (#35982) (3d46a45)
  • localize: allow ICU expansion case to start with any character except } (#36123) (0767d37), closes #31586
  • localize: improve matching and parsing of XLIFF 1.2 translation files (#35793) (350ac11)
  • localize: improve matching and parsing of XLIFF 2.0 translation files (#35793) (08071e5)
  • localize: improve matching and parsing of XTB translation files (#35793) (0e2a577)
  • localize: improve placeholder mismatch error message (#35593) (53f059e)
  • localize: merge translation from all XLIFF <file> elements (#35936) (fc4c3c3), closes #35839
  • localize: show helpful error when providing an invalid cli option (#36010) (aad02e8)
  • localize: support minified ES5 $localize calls (#35562) (df75451), closes #35376
  • ngcc: add default config for angular2-highcharts (#35527) (3cc8127), closes #35399
  • ngcc: allow deep-import warnings to be ignored (#35683) (20b0c80), closes #35615
  • ngcc: capture path-mapped entry-points that start with same string (#35592) (71b5970), closes #35536
  • ngcc: consistently delegate to TypeScript host for typing files (#36089) (9e70bcb), closes #35078
  • ngcc: correctly detect emitted TS helpers in ES5 (#35191) (bd6a39c)
  • ngcc: correctly detect outer aliased class identifiers in ES5 (#35527) (fde8915), closes #35399
  • ngcc: do not crash on entry-point that fails to compile (#36083) (ff665b9)
  • ngcc: do not crash on overlapping entry-points (#36083) (c9f554c)
  • ngcc: ensure that path-mapped secondary entry-points are processed correctly (#35227) (c3c1140), closes #35188
  • ngcc: handle imports in dts files when processing CommonJS (#35191) (b6e8847), closes #34356
  • ngcc: handle mappings outside the content when flattening source-maps (#35718) (73cf7d5), closes #35709
  • ngcc: handle missing sources when flattening source-maps (#35718) (72c4fda), closes #35709
  • ngcc: handle multiple original sources when flattening source-maps (#36027) (a40be00)
  • ngcc: introduce a new LockFile implementation that uses a child-process (#35861) (c55f900), closes #35761
  • ngcc: show helpful error when providing an invalid option (#36010) (1f89c61)
  • ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (6defe96), closes #36119
  • ngcc: use preserve whitespaces from tsconfig if provided (#36189) (aef4323), closes #35871
  • platform-browser: add missing peerDependency on [@angular](https://github.com/angular)/animations (#35949) (64d6f13), closes #35888
  • router: removed unused ApplicationRef dependency (#35642) (c839c05), closes /github.com/angular/angular/commit/5a849829c42330d7e88e83e916e6e36380c97a97#diff-c0baae5e1df628e1a217e8dc38557
  • router: state data missing in routerLink (#33203) (de67978)
  • service-worker: treat 503 as offline (#35595) (96cdf03), closes #35571
  • fix flaky test cases of passive events (#35679) (8ef29b6)

Angular 10 beta

https://github.com/angular/angular/releases/tag/10.0.0-next.0

#angular #javascript #web-development

What’s new features in Angular 10?
468.20 GEEK