{"id":3607,"date":"2022-11-25T12:13:41","date_gmt":"2022-11-25T06:43:41","guid":{"rendered":"https:\/\/ripenapps.com\/blog\/?p=3607"},"modified":"2025-10-28T11:48:49","modified_gmt":"2025-10-28T06:18:49","slug":"angular-15-major-features-deprecations-from-the-update","status":"publish","type":"post","link":"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/","title":{"rendered":"Angular 15: Find Major Features, and Deprecations from the Update"},"content":{"rendered":"<p>Angular v15 has been released!<\/p>\n<p>Angular has become one of the most popular front-end frameworks for building dynamic web apps. The framework is open-source and maintained by Google, boosting its reliability. Today\u00a0<a href=\"https:\/\/trends.builtwith.com\/framework\/Angular\" target=\"_blank\" rel=\"noopener\">1,20,000 + websites<\/a>\u00a0are running on the angular framework, made possible by google through continuous maintenance and updates in the framework.<\/p>\n<p>The recent angular 15 version 15 has further carried the legacy of the open-source market and taken the front-end development further. Here are the refinements announced in Angular v15 leading to a better developer experience and performance.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_17 counter-hierarchy ez-toc-white\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" style=\"display: none;\"><i class=\"ez-toc-glyphicon ez-toc-icon-toggle\"><\/i><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Whats-New-in-Angular-v15\" title=\"What&#8217;s New in Angular v15?\">What&#8217;s New in Angular v15?<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Stable-Standalone-APIs-Are-Out-Now\" title=\"Stable Standalone APIs Are Out Now\">Stable Standalone APIs Are Out Now<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Multi-Route-App-Using-New-Router-Standalone-APIs\" title=\"Multi-Route App Using New Router Standalone APIs\">Multi-Route App Using New Router Standalone APIs<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Efficient-Code-Reuse-with-Directive-Composition-API\" title=\"Efficient Code Reuse with Directive Composition API\">Efficient Code Reuse with Directive Composition API<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Stable-Image-Directive\" title=\"Stable Image Directive\">Stable Image Directive<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#New-features-in-Angular-v15-Image-Directive\" title=\"New features in Angular v15 Image Directive:\">New features in Angular v15 Image Directive:<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#CDK-List-for-Building-UI-Components\" title=\"CDK List for Building UI Components\">CDK List for Building UI Components<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Boilerplate-Reduction-in-Guards\" title=\"Boilerplate Reduction in Guards\">Boilerplate Reduction in Guards<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Improvements-in-esbuild-for-Faster-Builds\" title=\"Improvements in esbuild for Faster Builds\">Improvements in esbuild for Faster Builds<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Automatic-and-Faster-Component-Import\" title=\"Automatic and Faster Component Import\">Automatic and Faster Component Import<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#Other-Latest-Contributions\" title=\"Other Latest Contributions\">Other Latest Contributions<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/ripenapps.com\/blog\/angular-15-major-features-deprecations-from-the-update\/#What-Comes-Next\" title=\"What Comes Next?\">What Comes Next?<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Whats-New-in-Angular-v15\"><\/span>What&#8217;s New in Angular v15?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/ripenapps.com\/blog\/angular-major-features-straight-from-update\/\" target=\"_blank\" rel=\"noopener\"><strong>Angular 14<\/strong><\/a> bought a number of features and updates to boost the development experience. Now, Angular Version 15 takes it to a new level. Let us look at what Angular v15 brings.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Stable-Standalone-APIs-Are-Out-Now\"><\/span>Stable Standalone APIs Are Out Now<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Standalone APIs are not new since it was announced in v14. But the APIs were not a part of the stable API surface. With Angular v15, the standalone APIs are now stable APIs providing a platform to further enhance them in the near future. <a href=\"https:\/\/ripenapps.com\/angular-js-development\" target=\"_blank\" rel=\"noopener\"><strong>Angular Developers<\/strong><\/a> can now run APIs in <span style=\"color: #ff6600\"><em>HttpClient<\/em><\/span>, routers, elements, and more. With a single component, standalone APIs allow developers to bootstrap applications.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3608\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Standalone-APIs.png\" alt=\"Standalone APIs\" width=\"693\" height=\"378\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Standalone-APIs.png 693w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Standalone-APIs-300x164.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Standalone-APIs-150x82.png 150w\" sizes=\"(max-width: 693px) 100vw, 693px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Multi-Route-App-Using-New-Router-Standalone-APIs\"><\/span>Multi-Route App Using New Router Standalone APIs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Building a multi-route application using the new router Standalone APIs is easier with the new Angular v 15. Here is an example:<\/p>\n<ol>\n<li>Declaring the root route<\/li>\n<\/ol>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3609\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Declaring-the-root-route.png\" alt=\"Declaring the root route\" width=\"690\" height=\"152\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Declaring-the-root-route.png 690w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Declaring-the-root-route-300x66.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Declaring-the-root-route-150x33.png 150w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/p>\n<ol>\n<li><span style=\"color: #ff6600\">lazyRoutes<\/span> declaration<\/li>\n<\/ol>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3610\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/lazyRoutes-declaration.png\" alt=\"lazyRoutes declaration\" width=\"690\" height=\"152\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/lazyRoutes-declaration.png 690w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/lazyRoutes-declaration-300x66.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/lazyRoutes-declaration-150x33.png 150w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/p>\n<ol>\n<li>Registering the <span style=\"color: #ff6600\">appRoutes<\/span> while calling bootstrapApplication<\/li>\n<\/ol>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3611\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Registering-the-appRoutes-while-calling-bootstrapApplication.png\" alt=\"Registering the appRoutes while calling bootstrapApplication\" width=\"690\" height=\"152\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Registering-the-appRoutes-while-calling-bootstrapApplication.png 690w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Registering-the-appRoutes-while-calling-bootstrapApplication-300x66.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Registering-the-appRoutes-while-calling-bootstrapApplication-150x33.png 150w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/p>\n<p>Benefits offered by <span style=\"color: #ff6600\"><em>provideRouter<\/em><\/span> API<\/p>\n<ul>\n<li>The API is tree-shakable, where Bundlers clear unused features during the build.<\/li>\n<li>11% reduction in the size of router code<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Efficient-Code-Reuse-with-Directive-Composition-API\"><\/span>Efficient Code Reuse with Directive Composition API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>With the new Directive composition API, developers can efficiently reuse the code. The feature is announced after massive <a href=\"https:\/\/github.com\/angular\/angular\/issues\/8785\" target=\"_blank\" rel=\"noopener\"><strong>requests from the GitHub community<\/strong><\/a> asking to add directives to a host element. However, the directive composition API only works with standalone directives.<\/p>\n<p>In below code we showcase:<\/p>\n<ol>\n<li>Enhancing <span style=\"color: #ff6600\">MatMenu<\/span> with <span style=\"color: #ff6600\">HasColor<\/span> and <span style=\"color: #ff6600\">CdkMenu<\/span><\/li>\n<li><span style=\"color: #ff6600\">MatMenu<\/span> reuses the code from elements mentioned in 1.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3612\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/MatMenu.png\" alt=\"MatMenu\" width=\"695\" height=\"239\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/MatMenu.png 695w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/MatMenu-300x103.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/MatMenu-150x52.png 150w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Stable-Image-Directive\"><\/span>Stable Image Directive<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Until now, the image directive was in the developer preview. Angular v15 makes <a href=\"https:\/\/developer.chrome.com\/blog\/angular-image-directive\/\" target=\"_blank\" rel=\"noopener\"><strong>Image Directive stable<\/strong><\/a> for the developers bringing a <strong><a href=\"https:\/\/philipwalton.com\/articles\/my-challenge-to-the-web-performance-community\/\">75% improvement<\/a><\/strong> in LCP.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3613\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Stable-Image-Directive.png\" alt=\"Stable Image Directive\" width=\"700\" height=\"342\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Stable-Image-Directive.png 700w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Stable-Image-Directive-300x147.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Stable-Image-Directive-150x73.png 150w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"New-features-in-Angular-v15-Image-Directive\"><\/span>New features in Angular v15 Image Directive:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Automatic <span style=\"color: #ff6600\"><em>scrset<\/em><\/span> generation reduces the download time for images.<\/li>\n<li>Automatic declaration of image attributes through parent container<\/li>\n<li>Directly using standalone <span style=\"color: #ff6600\"><em>NgOptimizedImage<\/em><\/span> in <span style=\"color: #ff6600\"><em>NgModule<\/em><\/span> or component. Here is an example:<\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3614\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/New-features-in-Angular-v15-image-directive.png\" alt=\"New features in Angular v15 image directive\" width=\"696\" height=\"326\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/New-features-in-Angular-v15-image-directive.png 696w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/New-features-in-Angular-v15-image-directive-300x141.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/New-features-in-Angular-v15-image-directive-150x70.png 150w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>To use within a component (<a href=\"https:\/\/angular.io\/guide\/image-directive\">Source<\/a>):<\/p>\n<ol>\n<li>Replace attribute <span style=\"color: #ff6600\"><em>scr<\/em><\/span> with <span style=\"color: #ff6600\"><em>ngSrc<\/em><\/span> in the image.<\/li>\n<li>Specify priority attribute for LCP images<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"CDK-List-for-Building-UI-Components\"><\/span>CDK List for Building UI Components<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The Component Dev Kit or CDK is highly used by Developers to build behavior primitives for UI components. With the recent v 15, the Angular team added another primitive- CDK Listbox.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3615\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/CDK-List-for-building-UI-components.gif\" alt=\"CDK List for building UI components\" width=\"536\" height=\"496\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Boilerplate-Reduction-in-Guards\"><\/span>Boilerplate Reduction in Guards<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The angular team worked on reducing boilerplate in guards.<\/p>\n<p>In the below example, we showcase how to define a guard that verifies logged-in users:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3616\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/guard-that-verifies-logged-in-users.png\" alt=\"guard that verifies logged-in users\" width=\"691\" height=\"316\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/guard-that-verifies-logged-in-users.png 691w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/guard-that-verifies-logged-in-users-300x137.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/guard-that-verifies-logged-in-users-150x69.png 150w\" sizes=\"(max-width: 691px) 100vw, 691px\" \/><\/p>\n<p>Let us write the same code after refraction:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3617\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/same-code-after-refraction.png\" alt=\"same code after refraction\" width=\"689\" height=\"139\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/same-code-after-refraction.png 689w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/same-code-after-refraction-300x61.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/same-code-after-refraction-150x30.png 150w\" sizes=\"(max-width: 689px) 100vw, 689px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Improvements-in-esbuild-for-Faster-Builds\"><\/span>Improvements in esbuild for Faster Builds<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To simplify the pipelines, the Angular team bought experimental support for <a href=\"https:\/\/esbuild.github.io\/\" target=\"_blank\" rel=\"noopener\">esbuild<\/a> with Angular v14. With Angular version 15, the team now offers support for Sass, file replacement, SVG template, and <span style=\"color: #ff6600\"><em>ng build &#8211;wach<\/em><\/span>.<\/p>\n<p>Angular 14:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3618\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-14.png\" alt=\"Angular 14\" width=\"688\" height=\"79\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-14.png 688w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-14-300x34.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-14-150x17.png 150w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><\/p>\n<p>Angular 15:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3619\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-15.png\" alt=\"Angular 15\" width=\"692\" height=\"81\" srcset=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-15.png 692w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-15-300x35.png 300w, https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/Angular-15-150x18.png 150w\" sizes=\"(max-width: 692px) 100vw, 692px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Automatic-and-Faster-Component-Import\"><\/span>Automatic and Faster Component Import<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Angular version 15 brings automatic importance to language service. The components used by Developers are now automatically imported into the template without the requirement to add a standalone component or <span style=\"color: #ff6600\"><em>NgModule<\/em><\/span>.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-3620\" src=\"https:\/\/ripenapps.com\/blog\/wp-content\/uploads\/2022\/11\/showing-how-you-can-automatically-import-components-youre-using-in-the-template-with-the-Angular-language-service.gif\" alt=\"showing how you can automatically import components you\u2019re using in the template with the Angular language service\" width=\"1108\" height=\"610\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Other-Latest-Contributions\"><\/span>Other Latest Contributions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><em>Steps towards simplicity of coding<\/em><\/p>\n<p>The angular team has announced a few deprecations:<\/p>\n<ul>\n<li><span style=\"color: #ff6600\"><em>providedIn: &#8216;any&#8217;<\/em><\/span><\/li>\n<li><span style=\"color: #ff6600\"><em>providedIn: NgModule<\/em><\/span><\/li>\n<li>No more publishes of <span style=\"color: #ff6600\"><em>@angular\/flex-layout<\/em><\/span><\/li>\n<\/ul>\n<p><em>Priority images load faster<\/em><\/p>\n<p>The image directive functionality of including a <span style=\"color: #ff6600\"><em>&lt;link rel=&#8221;preload&#8221;&gt; <\/em><\/span>will make sure that images set on priority load faster. Also, the directive automatically preloads the specified image.<\/p>\n<p><em>Efficient stack tracing<\/em><\/p>\n<p>Angular developers struggle on a daily basis while debugging. After partnering with Chrome DevTools, the overall stack tracing has become efficient with Angular v15.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"What-Comes-Next\"><\/span>What Comes Next?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The Angular community has raised the bars to a new level with Angular V 15. We are actively waiting for what the Angular team brings next in the near future to amplify the development experience of developers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Angular v15 has been released! Angular has become one of the most popular front-end frameworks for building dynamic web apps. The framework is open-source and maintained by Google, boosting its &hellip; <\/p>\n","protected":false},"author":5,"featured_media":3626,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[484],"tags":[1026,1029,1028,1027,243],"_links":{"self":[{"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/posts\/3607"}],"collection":[{"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/comments?post=3607"}],"version-history":[{"count":4,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/posts\/3607\/revisions"}],"predecessor-version":[{"id":3627,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/posts\/3607\/revisions\/3627"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/media\/3626"}],"wp:attachment":[{"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/media?parent=3607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/categories?post=3607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ripenapps.com\/blog\/wp-json\/wp\/v2\/tags?post=3607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}