{
  "extracted_at": "2026-07-05T19:48:27.834Z",
  "count": 667,
  "columns": [
    "section",
    "name",
    "package",
    "description",
    "status",
    "introduced_in",
    "removed_in",
    "v22",
    "v21",
    "v20",
    "v19",
    "v18",
    "v17",
    "v16",
    "v15",
    "v14",
    "angular_courses_url",
    "angular_dev_url",
    "notes"
  ],
  "items": [
    {
      "section": "Features",
      "name": "Standalone API",
      "package": "@angular/core",
      "description": "Directly import other components, directives, and pipes used in their templates and enable some features such as defer, hostDirectives and loadComponent.",
      "status": "stable",
      "introduced_in": "14",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "experimental",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/components/importing#standalone-components",
      "notes": "migration: ng generate @angular/core:standalone",
      "raw": {
        "id": "standalone-api",
        "name": "Standalone API",
        "package": "@angular/core",
        "metadata": {
          "description": "Directly import other components, directives, and pipes used in their templates and enable some features such as defer, hostDirectives and loadComponent.",
          "documentationUrl": "https://angular.dev/guide/components/importing#standalone-components",
          "rfcUrl": "https://github.com/angular/angular/discussions/43784",
          "migrationScript": "ng generate @angular/core:standalone"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "experimental",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/5a10fc4f8287d448c88ce2f6c97c48307af34af1"
            }
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "notes": "Components, Directives and Pipes are now standalone by default - no need to specify `standalone: true` anymore"
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@defer",
      "package": "@angular/core",
      "description": "Defer the loading of select dependencies such as components, directives, and pipes, and any associated CSS within a template",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/defer#",
      "notes": "",
      "raw": {
        "id": "defer",
        "name": "@defer",
        "package": "@angular/core",
        "metadata": {
          "description": "Defer the loading of select dependencies such as components, directives, and pipes, and any associated CSS within a template",
          "documentationUrl": "https://angular.dev/guide/defer#",
          "rfcUrl": "https://github.com/angular/angular/discussions/50716"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@for",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally repeat elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#repeat-content-with-the-for-block",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "@for",
        "name": "@for",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally repeat elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#repeat-content-with-the-for-block",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@switch",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally show elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-the-switch-block",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "@switch",
        "name": "@switch",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally show elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-the-switch-block",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@if",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally show and hide elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-if-else-if-and-else",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "@if",
        "name": "@if",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally show and hide elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-if-else-if-and-else",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Functional guards/resolvers",
      "package": "@angular/router",
      "description": "Create guards and resolvers using functions.",
      "status": "stable",
      "introduced_in": "14.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "functional-guards-resolvers",
        "name": "Functional guards/resolvers",
        "package": "@angular/router",
        "metadata": {
          "description": "Create guards and resolvers using functions."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/22fdd7da97c832048410ca89622712d097490c5d"
            }
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Functional interceptors",
      "package": "@angular/router",
      "description": "Create interceptors using functions.",
      "status": "stable",
      "introduced_in": "15",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://v18.angular.dev/guide/http/interceptors#",
      "notes": "",
      "raw": {
        "id": "functional-interceptors",
        "name": "Functional interceptors",
        "package": "@angular/router",
        "metadata": {
          "description": "Create interceptors using functions.",
          "documentationUrl": "https://v18.angular.dev/guide/http/interceptors#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": null
          },
          {
            "version": 15,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/62c7a7a16e035c3a5346270dc4c5c6de85bf9137"
            }
          },
          {
            "version": 16,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/22fdd7da97c832048410ca89622712d097490c5d"
            }
          },
          {
            "version": 17,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/a189962a515051fd77e20bf8dd1815086a0d12ef"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@let",
      "package": "@angular/core",
      "description": "Define a local variable and re-use it across the template.",
      "status": "stable",
      "introduced_in": "18.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/templates/variables#local-template-variables-with-let",
      "notes": "",
      "raw": {
        "id": "@let",
        "name": "@let",
        "package": "@angular/core",
        "metadata": {
          "description": "Define a local variable and re-use it across the template.",
          "documentationUrl": "https://angular.dev/guide/templates/variables#local-template-variables-with-let"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18.1,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/0a48d584f2ffeebb9402032182d4fc13a260c5cf"
            }
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal (core)",
      "package": "@angular/core",
      "description": "System that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals#",
      "notes": "",
      "raw": {
        "id": "signal-core",
        "name": "Signal (core)",
        "package": "@angular/core",
        "metadata": {
          "description": "System that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates.",
          "documentationUrl": "https://angular.dev/guide/signals#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal inputs",
      "package": "@angular/core",
      "description": "Allow values to be bound from parent components.",
      "status": "stable",
      "introduced_in": "17.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/inputs#",
      "notes": "migration: ng generate @angular/core:signal-input-migration",
      "raw": {
        "id": "signal-inputs",
        "name": "Signal inputs",
        "package": "@angular/core",
        "metadata": {
          "description": "Allow values to be bound from parent components.",
          "documentationUrl": "https://angular.dev/guide/signals/inputs#",
          "migrationScript": "ng generate @angular/core:signal-input-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.1,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "output()",
      "package": "@angular/core",
      "description": "Enable emitting values to parent directives and components.",
      "status": "stable",
      "introduced_in": "17.3",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/components/outputs#",
      "notes": "migration: ng generate @angular/core:output-migration",
      "raw": {
        "id": "output",
        "name": "output()",
        "package": "@angular/core",
        "metadata": {
          "description": "Enable emitting values to parent directives and components.",
          "documentationUrl": "https://angular.dev/guide/components/outputs#",
          "migrationScript": "ng generate @angular/core:output-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.3,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal queries",
      "package": "@angular/core",
      "description": "Signals to retrieve references to child components, directives, DOM elements, and more.",
      "status": "stable",
      "introduced_in": "17.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/queries#",
      "notes": "migration: ng generate @angular/core:signal-queries-migration",
      "raw": {
        "id": "signal-queries",
        "name": "Signal queries",
        "package": "@angular/core",
        "metadata": {
          "description": "Signals to retrieve references to child components, directives, DOM elements, and more.",
          "documentationUrl": "https://angular.dev/guide/signals/queries#",
          "migrationScript": "ng generate @angular/core:signal-queries-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.2,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal model",
      "package": "@angular/core",
      "description": "Special type of input that enable a component to propagate new values back to another component.",
      "status": "stable",
      "introduced_in": "17.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/model",
      "notes": "",
      "raw": {
        "id": "signal-model",
        "name": "Signal model",
        "package": "@angular/core",
        "metadata": {
          "description": "Special type of input that enable a component to propagate new values back to another component.",
          "documentationUrl": "https://angular.dev/guide/signals/model"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.2,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal effect",
      "package": "@angular/core",
      "description": "Operation that runs whenever one or more signal values change.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals#effects",
      "notes": "",
      "raw": {
        "id": "signal-effect",
        "name": "Signal effect",
        "package": "@angular/core",
        "metadata": {
          "description": "Operation that runs whenever one or more signal values change.",
          "documentationUrl": "https://angular.dev/guide/signals#effects"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal inputs converter",
      "package": "@angular/language-service",
      "description": "Language service refactoring action that can convert `@Input()` declarations to signal inputs.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "signal-inputs-converter",
        "name": "Signal inputs converter",
        "metadata": {
          "description": "Language service refactoring action that can convert `@Input()` declarations to signal inputs."
        },
        "package": "@angular/language-service",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1f067f4507b6e908fe991d5de0dc4d3a627ab2f9"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withEventReplay",
      "package": "@angular/platform-browser",
      "description": "Support for replaying user events (e.g. clicks) that happened on a page before hydration logic has completed.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/hydration#capturing-and-replaying-events",
      "notes": "",
      "raw": {
        "id": "withEventReplay",
        "name": "withEventReplay",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Support for replaying user events (e.g. clicks) that happened on a page before hydration logic has completed.",
          "documentationUrl": "https://angular.dev/guide/hydration#capturing-and-replaying-events"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideZonelessChangeDetection",
      "package": "@angular/platform-browser",
      "description": "Provide change detection without ZoneJS for the application bootstrapped using bootstrapApplication.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "preview",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/testing/components-scenarios#automatic-change-detection",
      "notes": "",
      "raw": {
        "id": "provideZonelessChangeDetection",
        "name": "provideZonelessChangeDetection",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Provide change detection without ZoneJS for the application bootstrapped using bootstrapApplication.",
          "documentationUrl": "https://angular.dev/guide/testing/components-scenarios#automatic-change-detection"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "preview",
            "metadata": {
              "notes": "Renamed from provideExperimentalZoneChangeDetection"
            }
          },
          {
            "version": 20.2,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from provideExperimentalZoneChangeDetection"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withI18nSupport",
      "package": "@angular/platform-browser",
      "description": "Enable support for hydrating i18n blocks.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/hydration#i18n",
      "notes": "",
      "raw": {
        "id": "withI18nSupport",
        "name": "withI18nSupport",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Enable support for hydrating i18n blocks.",
          "documentationUrl": "https://angular.dev/guide/hydration#i18n"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "createRequestHandler",
      "package": "@angular/ssr",
      "description": "Annotate a request handler function with metadata, marking it as a special handler.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "createRequestHandler",
        "name": "createRequestHandler",
        "metadata": {
          "description": "Annotate a request handler function with metadata, marking it as a special handler."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "createNodeRequestHandler",
      "package": "@angular/ssr",
      "description": "Attache metadata to the handler function to mark it as a special handler for Node.js environments.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "createNodeRequestHandler",
        "name": "createNodeRequestHandler",
        "metadata": {
          "description": "Attache metadata to the handler function to mark it as a special handler for Node.js environments."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "isMainModule",
      "package": "@angular/ssr",
      "description": "Determine whether the provided URL represents the main entry point module.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "isMainModule",
        "name": "isMainModule",
        "metadata": {
          "description": "Determine whether the provided URL represents the main entry point module."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "PendingTasks",
      "package": "@angular/ssr",
      "description": "Experimental service that keeps track of pending tasks contributing to the stableness of Angular application.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/experimental/zoneless#experimentalpendingtasks-for-server-side-rendering-ssr",
      "notes": "",
      "raw": {
        "id": "PendingTasks",
        "name": "PendingTasks",
        "metadata": {
          "description": "Experimental service that keeps track of pending tasks contributing to the stableness of Angular application.",
          "documentationUrl": "https://angular.dev/guide/experimental/zoneless#experimentalpendingtasks-for-server-side-rendering-ssr"
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AngularAppEngine",
      "package": "@angular/ssr",
      "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "AngularAppEngine",
        "name": "AngularAppEngine",
        "metadata": {
          "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AngularNodeAppEngine",
      "package": "@angular/ssr",
      "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "AngularNodeAppEngine",
        "name": "AngularNodeAppEngine",
        "metadata": {
          "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "createWebRequestFromNodeRequest",
      "package": "@angular/ssr",
      "description": "",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "createWebRequestFromNodeRequest",
        "name": "createWebRequestFromNodeRequest",
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108#diff-c5d5f2d7a4d78d365d99bfe612bcd8043917786a814bb0c2b4df3ef21916636aR18"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "writeResponseToNodeResponse",
      "package": "@angular/ssr",
      "description": "",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "writeResponseToNodeResponse",
        "name": "writeResponseToNodeResponse",
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108#diff-e9a8e11f8ba8e6179d9d2746330ebdb2900cba68f0be8e9d0f34ad952cb90e43R19"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "RenderMode",
      "package": "@angular/ssr",
      "description": "Different rendering modes for server routes.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "RenderMode",
        "name": "RenderMode",
        "metadata": {
          "description": "Different rendering modes for server routes."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R15"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "PrerenderFallback",
      "package": "@angular/ssr",
      "description": "Fallback strategies for Static Site Generation (SSG) routes.",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "PrerenderFallback",
        "name": "PrerenderFallback",
        "metadata": {
          "description": "Fallback strategies for Static Site Generation (SSG) routes."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R33"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ServerRoute",
      "package": "@angular/ssr",
      "description": "Server route configuration.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "ServerRoute",
        "name": "ServerRoute",
        "metadata": {
          "description": "Server route configuration."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R124"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideServerRendering",
      "package": "@angular/ssr",
      "description": "Configure the necessary providers for server routes configuration.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "provideServerRendering",
        "name": "provideServerRendering",
        "metadata": {
          "description": "Configure the necessary providers for server routes configuration."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R139"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from provideServerRoutes"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "afterEveryRender",
      "package": "@angular/core",
      "description": "Register a callback to be invoked each time the application finishes rendering",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender",
      "notes": "",
      "raw": {
        "id": "afterEveryRender",
        "name": "afterEveryRender",
        "package": "@angular/core",
        "metadata": {
          "description": "Register a callback to be invoked each time the application finishes rendering",
          "documentationUrl": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from afterRender",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60999"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "afterNextRender",
      "package": "@angular/core",
      "description": "Register callbacks to be invoked the next time the application finishes rendering",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender",
      "notes": "",
      "raw": {
        "id": "afterNextRender",
        "name": "afterNextRender",
        "package": "@angular/core",
        "metadata": {
          "description": "Register callbacks to be invoked the next time the application finishes rendering",
          "documentationUrl": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60792"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "afterRenderEffect",
      "package": "@angular/core",
      "description": "Create effect(s) that run as part of Angular's `afterRender` sequence.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "afterRenderEffect",
        "name": "afterRenderEffect",
        "package": "@angular/core",
        "metadata": {
          "description": "Create effect(s) that run as part of Angular's `afterRender` sequence."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/be2e49639bda831831ad62d49253db942a83fd46#diff-74210fe93145cf1b95113524d1ca78287880b46bdb8f838930b1160ec7066e3eR263"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withViewTransitions",
      "package": "@angular/router",
      "description": "Enable view transitions in the Router",
      "status": "preview",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "preview",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/animations/route-animations#how-the-router-uses-view-transitions",
      "notes": "",
      "raw": {
        "id": "withViewTransitions",
        "name": "withViewTransitions",
        "package": "@angular/router",
        "metadata": {
          "description": "Enable view transitions in the Router",
          "documentationUrl": "https://angular.dev/guide/animations/route-animations#how-the-router-uses-view-transitions"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "experimental",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/73e4bf2ed2471faf44a49b591e19a390d5867449"
            }
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/pull/55600/commits/313c0b1502fcac069712e311866aba5c017ef585"
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "toSignal",
      "package": "@angular/core/rxjs-interop",
      "description": "Get the current value of an Observable as a reactive Signal.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#tosignal",
      "notes": "",
      "raw": {
        "id": "toSignal",
        "name": "toSignal",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Get the current value of an Observable as a reactive Signal.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#tosignal"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60442"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "toObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Expose the value of an Angular Signal as an RxJS Observable.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#toobservable",
      "notes": "",
      "raw": {
        "id": "toObservable",
        "name": "toObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Expose the value of an Angular Signal as an RxJS Observable.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#toobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "takeUntilDestroyed",
      "package": "@angular/core/rxjs-interop",
      "description": "Complete the Observable when the calling context (component, directive, service, etc) is destroyed.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "takeUntilDestroyed",
        "name": "takeUntilDestroyed",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Complete the Observable when the calling context (component, directive, service, etc) is destroyed."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "outputFromObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Output using an RxJS observable as a source for events dispatched to parent subscribers.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#outputfromobservable",
      "notes": "",
      "raw": {
        "id": "outputFromObservable",
        "name": "outputFromObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Output using an RxJS observable as a source for events dispatched to parent subscribers.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#outputfromobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "outputToObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Convert an Angular output declared via output() or outputFromObservable() to an observable.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#outputtoobservable",
      "notes": "",
      "raw": {
        "id": "outputToObservable",
        "name": "outputToObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Convert an Angular output declared via output() or outputFromObservable() to an observable.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#outputtoobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "auto-csp",
      "package": "@angular/build",
      "description": "Opt-in option in angular.json to enable the auto-CSP transformation",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "auto-csp",
        "name": "auto-csp",
        "package": "@angular/build",
        "metadata": {
          "description": "Opt-in option in angular.json to enable the auto-CSP transformation"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/efb434136d8c8df207747ab8fd87b7e2116b7106"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "experimentalPlatform",
      "package": "@angular/build",
      "description": "Specifie the platform for which the server bundle is generated",
      "status": "experimental",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "experimentalPlatform",
        "name": "experimentalPlatform",
        "package": "@angular/build",
        "metadata": {
          "description": "Specifie the platform for which the server bundle is generated"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/7d883a152e978112245a98f2f737764caa76ec0f"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withIncrementalHydration",
      "package": "@angular/platform-browser",
      "description": "Enable support for incremental hydration using the `hydrate` trigger syntax.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/incremental-hydration#how-do-you-enable-incremental-hydration-in-angular",
      "notes": "",
      "raw": {
        "id": "withIncrementalHydration",
        "name": "withIncrementalHydration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Enable support for incremental hydration using the `hydrate` trigger syntax.",
          "documentationUrl": "https://angular.dev/guide/incremental-hydration#how-do-you-enable-incremental-hydration-in-angular"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/69fc5ae9229b872a9ad70eb920087af2a378fead"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "pendingUntilEvent",
      "package": "@angular/core/rxjs-interop",
      "description": "Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/zoneless#pendingtasks-for-server-side-rendering-ssr",
      "notes": "",
      "raw": {
        "id": "pendingUntilEvent",
        "name": "pendingUntilEvent",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.",
          "documentationUrl": "https://angular.dev/guide/zoneless#pendingtasks-for-server-side-rendering-ssr"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8ebbae88ca48b8aa78cd85deedbed19d44b8227e"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "resource()",
      "package": "@angular/core",
      "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a loader function, which exposes the result of the loading operation via signals.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/resource#",
      "notes": "",
      "raw": {
        "id": "resource",
        "name": "resource()",
        "package": "@angular/core",
        "metadata": {
          "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a loader function, which exposes the result of the loading operation via signals.",
          "documentationUrl": "https://angular.dev/guide/signals/resource#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/18d8d44b1f3d56a4eda68f2cafded7529e08d0f1"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "rxResource()",
      "package": "@angular/core/rxjs-interop",
      "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a RxJS based loader function, which exposes the result of the loading operation via signals.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/resource#",
      "notes": "",
      "raw": {
        "id": "rxResource",
        "name": "rxResource()",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a RxJS based loader function, which exposes the result of the loading operation via signals.",
          "documentationUrl": "https://angular.dev/guide/signals/resource#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9762b24b5e8d7ab3ed2321959492a77b01d8ae57"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "httpResource()",
      "package": "@angular/common/http",
      "description": "new frontend to the HttpClient infrastructure",
      "status": "stable",
      "introduced_in": "19.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "httpResource",
        "name": "httpResource()",
        "package": "@angular/common/http",
        "metadata": {
          "description": "new frontend to the HttpClient infrastructure"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/59876/commits/8aec2dfb30d1b35bb3eb7bc46692525691c1a56c"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "linkedSignal",
      "package": "@angular/core",
      "description": "Represent state (hence the signal in the name) that is reset based on the provided computation.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/signals/linked-signal#",
      "notes": "",
      "raw": {
        "id": "linkedSignal",
        "name": "linkedSignal",
        "package": "@angular/core",
        "metadata": {
          "description": "Represent state (hence the signal in the name) that is reset based on the provided computation.",
          "documentationUrl": "https://angular.dev/guide/signals/linked-signal#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8311f00faaf282d1a5b1ddca29247a2fba94a692"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withRequestsMadeViaParent",
      "package": "@angular/common/http",
      "description": "Configure the current `HttpClient` instance to make requests via the parent injector's `HttpClient` instead of directly.",
      "status": "stable",
      "introduced_in": "15",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "preview",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "withRequestsMadeViaParent",
        "name": "withRequestsMadeViaParent",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Configure the current `HttpClient` instance to make requests via the parent injector's `HttpClient` instead of directly."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": "preview"
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/4b9accdf166f3990b3706de83ada15937fe786e2"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ngOptimizedImage",
      "package": "@angular/common",
      "description": "Directive that improves image loading performance by enforcing best practices.",
      "status": "stable",
      "introduced_in": "14.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/image-optimization",
      "notes": "",
      "raw": {
        "id": "ngOptimizedImage",
        "name": "ngOptimizedImage",
        "package": "@angular/common",
        "metadata": {
          "description": "Directive that improves image loading performance by enforcing best practices.",
          "documentationUrl": "https://angular.dev/guide/image-optimization"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/d5f7da21207f7808dffb3932fa61d22614e6bd57"
                }
              ]
            }
          },
          {
            "version": 15,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b136e9eea6c9b22796186262292db738cd4d1a12"
                }
              ]
            }
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideClientHydration",
      "package": "@angular/platform-browser",
      "description": "Sets up providers necessary to enable hydration functionality for the application.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/hydration",
      "notes": "",
      "raw": {
        "id": "provideClientHydration",
        "name": "provideClientHydration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Sets up providers necessary to enable hydration functionality for the application.",
          "documentationUrl": "https://angular.dev/guide/hydration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "*ngIf",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "*ngIf",
        "name": "*ngIf",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@if"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "*ngFor",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "*ngFor",
        "name": "*ngFor",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@for"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "*ngSwitch",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow",
      "raw": {
        "id": "*ngSwitch",
        "name": "*ngSwitch",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@switch"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HammerJS integration",
      "package": "@angular/platform-browser",
      "description": "An injectable HammerJS Manager for gesture recognition.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://hammerjs.github.io/",
      "notes": "",
      "raw": {
        "id": "HammerJS integration",
        "name": "HammerJS integration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "An injectable HammerJS Manager for gesture recognition.",
          "documentationUrl": "https://hammerjs.github.io/"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60257"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "platformServerTesting",
      "package": "@angular/platform-server/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "platformServerTesting",
        "name": "platformServerTesting",
        "package": "@angular/platform-server/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ServerTestingModule",
      "package": "@angular/platform-server/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "ServerTestingModule",
        "name": "ServerTestingModule",
        "package": "@angular/platform-server/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "TestBed.get",
      "package": "@angular/core/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "20",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "TestBed.get",
        "name": "TestBed.get",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "removed",
            "metadata": {
              "notes": "use TestBed.inject() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "TestBed.flushEffects",
      "package": "@angular/core/testing",
      "description": "Execute any pending effects. use `TestBed.tick()` instead",
      "status": "deprecated",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "TestBed.flushEffects",
        "name": "TestBed.flushEffects",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Execute any pending effects. use `TestBed.tick()` instead"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "use TestBed.tick() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideCheckNoChangesConfig",
      "package": "@angular/core",
      "description": "Used to disable exhaustive checks when verifying no expressions changed after they were checked.",
      "status": "preview",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "provideCheckNoChangesConfig",
        "name": "provideCheckNoChangesConfig",
        "package": "@angular/core",
        "metadata": {
          "description": "Used to disable exhaustive checks when verifying no expressions changed after they were checked."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "preview",
            "metadata": {
              "notes": "Renamed from provideExperimentalCheckNoChangesForDebug",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60906"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Vitest",
      "package": "@angular/build",
      "description": "unit-testing and browser Vitest testing support",
      "status": "stable",
      "introduced_in": "20",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "experimental",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "Vitest",
        "name": "Vitest",
        "package": "@angular/build",
        "metadata": {
          "description": "unit-testing and browser Vitest testing support"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/12def3a2e907ca8e7d530cea1b39bba90e153144"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withComponentInputBinding",
      "package": "@angular/router",
      "description": "Enables binding information from the Router state directly to the inputs of the component in Route configurations.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/routing/common-router-tasks#add-withcomponentinputbinding",
      "notes": "",
      "raw": {
        "id": "withComponentInputBinding",
        "name": "withComponentInputBinding",
        "package": "@angular/router",
        "metadata": {
          "description": "Enables binding information from the Router state directly to the inputs of the component in Route configurations.",
          "documentationUrl": "https://angular.dev/guide/routing/common-router-tasks#add-withcomponentinputbinding"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Unified control state change events",
      "package": "@angular/forms",
      "description": "Unified way to listen to all form events: ValueChangeEvent, StatusChangeEvent, PristineChangeEvent and TouchedChangeEvent",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "unified-control-state-change-events",
        "name": "Unified control state change events",
        "package": "@angular/forms",
        "metadata": {
          "description": "Unified way to listen to all form events: ValueChangeEvent, StatusChangeEvent, PristineChangeEvent and TouchedChangeEvent"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideBrowserGlobalErrorListeners",
      "package": "@angular/core",
      "description": "Provides an environment initializer which forwards unhandled errors to the ErrorHandler.",
      "status": "stable",
      "introduced_in": "20",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/best-practices/error-handling#client-side-rendering",
      "notes": "",
      "raw": {
        "id": "provideBrowserGlobalErrorListeners",
        "name": "provideBrowserGlobalErrorListeners",
        "package": "@angular/core",
        "metadata": {
          "description": "Provides an environment initializer which forwards unhandled errors to the ErrorHandler.",
          "documentationUrl": "https://angular.dev/best-practices/error-handling#client-side-rendering"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "inject()",
      "package": "@angular/core",
      "description": "Injects a token from the currently active injector. inject is only supported in an injection context. ",
      "status": "stable",
      "introduced_in": "14",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/best-practices/error-handling#client-side-rendering",
      "notes": "migration: ng generate @angular/core:inject",
      "raw": {
        "id": "inject",
        "name": "inject()",
        "package": "@angular/core",
        "metadata": {
          "description": "Injects a token from the currently active injector. inject is only supported in an injection context. ",
          "documentationUrl": "https://angular.dev/best-practices/error-handling#client-side-rendering",
          "migrationScript": "ng generate @angular/core:inject"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "recommended over constructor in the new official style guide"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NG_BUILD_OPTIMIZE_CHUNKS",
      "package": "@angular/cli",
      "description": "chunk optimizer for production application builds",
      "status": "experimental",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "NG_BUILD_OPTIMIZE_CHUNKS",
        "name": "NG_BUILD_OPTIMIZE_CHUNKS",
        "package": "@angular/cli",
        "metadata": {
          "description": "chunk optimizer for production application builds"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideAnimationsAsync",
      "package": "@angular/animations",
      "description": "Renders animations only once the renderer is loaded",
      "status": "deprecated",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/api/platform-browser/animations/async/provideAnimationsAsync#",
      "notes": "",
      "raw": {
        "id": "provideAnimationsAsync",
        "name": "provideAnimationsAsync",
        "package": "@angular/animations",
        "metadata": {
          "description": "Renders animations only once the renderer is loaded",
          "documentationUrl": "https://angular.dev/api/platform-browser/animations/async/provideAnimationsAsync#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use animate.enter and animate.leave instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/62795"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@angular/animations package",
      "package": "@angular/animations",
      "description": "Renders animations only once the renderer is loaded",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/animations/css",
      "notes": "",
      "raw": {
        "id": "@angular/animations package",
        "name": "@angular/animations package",
        "package": "@angular/animations",
        "metadata": {
          "description": "Renders animations only once the renderer is loaded",
          "documentationUrl": "https://angular.dev/guide/animations/css"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use animate.enter and animate.leave instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/62795"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Router.getCurrentNavigation",
      "package": "@angular/router",
      "description": "Returns the current navigation object",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/guide/animations/css",
      "notes": "",
      "raw": {
        "id": "get-current-navigation",
        "name": "Router.getCurrentNavigation",
        "package": "@angular/router",
        "metadata": {
          "description": "Returns the current navigation object",
          "documentationUrl": "https://angular.dev/guide/animations/css"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use Router.currentNavigation instead"
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withExperimentalPlatformNavigation",
      "package": "@angular/router",
      "description": "Navigation Web API support",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "navigation-api-support",
        "name": "withExperimentalPlatformNavigation",
        "package": "@angular/router",
        "metadata": {
          "description": "Navigation Web API support"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.1,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/7003e8d2417660f71b3a2a017aff3e650c8d9646"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Signal forms",
      "package": "@angular/forms",
      "description": "Signal forms",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "signal-forms",
        "name": "Signal forms",
        "package": "@angular/forms",
        "metadata": {
          "description": "Signal forms"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/63408"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "FormArrayDirective",
      "package": "@angular/forms",
      "description": "FormArrayDirective enables wrapping a HTML form without relying on FormGroupDirective",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "form-array-directive",
        "name": "FormArrayDirective",
        "package": "@angular/forms",
        "metadata": {
          "description": "FormArrayDirective enables wrapping a HTML form without relying on FormGroupDirective"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/55880"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "enableProfiling()",
      "package": "@angular/core",
      "description": "Enable profiling of the application",
      "status": "experimental",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "https://angular.dev/best-practices/profiling-with-chrome-devtools",
      "notes": "",
      "raw": {
        "id": "enable-profiling",
        "name": "enableProfiling()",
        "package": "@angular/core",
        "metadata": {
          "description": "Enable profiling of the application",
          "documentationUrl": "https://angular.dev/best-practices/profiling-with-chrome-devtools"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Angular Aria",
      "package": "@angular/aria",
      "description": "Angular Aria",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "preview",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "angular-aria",
        "name": "Angular Aria",
        "package": "@angular/aria",
        "metadata": {
          "description": "Angular Aria"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "VERSION",
      "package": "@angular/upgrade",
      "description": "Angular version used by the project",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "version-upgrade",
        "name": "VERSION",
        "package": "@angular/upgrade",
        "metadata": {
          "description": "Angular version used by the project"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.1,
            "status": "deprecated",
            "metadata": {
              "notes": "Please use the entry from @angular/upgrade/static instead."
            }
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Router.isActive",
      "package": "@angular/router",
      "description": "Returns a Signal<boolean> indicating if the current route is active",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "router-is-active",
        "name": "Router.isActive",
        "package": "@angular/router",
        "metadata": {
          "description": "Returns a Signal<boolean> indicating if the current route is active"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.1,
            "status": "deprecated",
            "metadata": {
              "notes": "Replaced by a computed Signal version of Router.isActive",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/e44839b01640505e554fff16f24e08f282a557c0"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withExperimentalAutoCleanupInjectors",
      "package": "@angular/router",
      "description": "Enable automatic cleanup of unused route injectors",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "withExperimentalAutoCleanupInjectors",
        "name": "withExperimentalAutoCleanupInjectors",
        "package": "@angular/router",
        "metadata": {
          "description": "Enable automatic cleanup of unused route injectors"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.1,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5edceffd0431f5a25e111a731db521e966b91f86"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ResourceSnapshot",
      "package": "@angular/core",
      "description": "An explicit representation of a resource's state",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "resourceSnapshot",
        "name": "ResourceSnapshot",
        "package": "@angular/core",
        "metadata": {
          "description": "An explicit representation of a resource's state"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1ba9b7ac5001b315cc9df78c518964dbf479d647#diff-8182d3d1c5f1224cd109969446903a655ba093e4a1c3011be680b70c578b903eR249-R253"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "resourceFromSnapshots",
      "package": "@angular/core",
      "description": "Creates a Resource driven by a source of ResourceSnapshots",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "resourceFromSnapshots",
        "name": "resourceFromSnapshots",
        "package": "@angular/core",
        "metadata": {
          "description": "Creates a Resource driven by a source of ResourceSnapshots"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1ba9b7ac5001b315cc9df78c518964dbf479d647#diff-44fd5671f0cd20b2d286f08c4846dfca05e82f51d9bfae3ab75f5c846c665eccR15-R19"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withFetch",
      "package": "@angular/common/http",
      "description": "Use the Fetch API instead of XHR",
      "status": "deprecated",
      "introduced_in": "16.1",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "withFetch",
        "name": "withFetch",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Use the Fetch API instead of XHR",
          "replacedBy": "withXhr"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16.1,
            "status": "preview"
          },
          {
            "version": 17.1,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5c432fb8bb69343ef2633811c37c0c6c0fd65126"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ChangeDetectionStrategy.Default",
      "package": "@angular/core",
      "description": "Renamed to ChangeDetectionStrategy.Eager",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "changeDetectionStrategyDefault",
        "name": "ChangeDetectionStrategy.Default",
        "package": "@angular/core",
        "metadata": {
          "description": "Renamed to ChangeDetectionStrategy.Eager",
          "replacedBy": "ChangeDetectionStrategy.Eager"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.2,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ChangeDetectionStrategy.Eager",
      "package": "@angular/core",
      "description": "Renamed from ChangeDetectionStrategy.Default",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "changeDetectionStrategyEager",
        "name": "ChangeDetectionStrategy.Eager",
        "package": "@angular/core",
        "metadata": {
          "description": "Renamed from ChangeDetectionStrategy.Default"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "withXhr",
      "package": "@angular/common/http",
      "description": "Use the XMLHttpRequest API instead of the Fetch API",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "withXhr",
        "name": "withXhr",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Use the XMLHttpRequest API instead of the Fetch API"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5c432fb8bb69343ef2633811c37c0c6c0fd65126"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "TestBed.getLastFixture",
      "package": "@angular/core/testing",
      "description": "Get the last fixture for the test",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "getLastFixture",
        "name": "TestBed.getLastFixture",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Get the last fixture for the test"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HTML element comments",
      "package": "@angular/compiler",
      "description": "HTML element comments",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "htmlElementComments",
        "name": "HTML element comments",
        "package": "@angular/compiler",
        "metadata": {
          "description": "HTML element comments"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/e850643b1b8dca8cfdc12705be51441197cd987a"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "default OnPush strategy",
      "package": "@angular/core",
      "description": "Default OnPush strategy",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "defaultOnPushStrategy",
        "name": "default OnPush strategy",
        "package": "@angular/core",
        "metadata": {
          "description": "Default OnPush strategy"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/eae8f7e30b9f8bebdcdb535bd86260199c34274b"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "@Service decorator",
      "package": "@angular/core",
      "description": "more ergonomic alternative to @Injectable decorator",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "@Service decorator",
        "name": "@Service decorator",
        "package": "@angular/core",
        "metadata": {
          "description": "more ergonomic alternative to @Injectable decorator"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideExperimentalWebMcpTools",
      "package": "@angular/core",
      "description": "Provides a list of WebMCP tools tied to the lifecycle of the associated Injector.",
      "status": "experimental",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "provideExperimentalWebMcpTools",
        "name": "provideExperimentalWebMcpTools",
        "package": "@angular/core",
        "metadata": {
          "description": "Provides a list of WebMCP tools tied to the lifecycle of the associated Injector."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/3b0ae5fef0328477ee0f5d51980217e7c583a606"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "injectAsync",
      "package": "@angular/core",
      "description": "Lazy load services and use the DI system to create them.",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "injectAsync",
        "name": "injectAsync",
        "package": "@angular/core",
        "metadata": {
          "description": "Lazy load services and use the DI system to create them."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "debounced",
      "package": "@angular/core",
      "description": "create a debounced version of a signal, represented as a Resource",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "debounced",
        "name": "debounced",
        "package": "@angular/core",
        "metadata": {
          "description": "create a debounced version of a signal, represented as a Resource"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b918beda323eefef17bf1de03fde3d402a3d4af0"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ChangeDetectorRef.checkNoChanges",
      "package": "@angular/core",
      "description": "Do a change detection run to make sure there were no changes.",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "ChangeDetectorRefCheckNoChanges",
        "name": "ChangeDetectorRef.checkNoChanges",
        "package": "@angular/core",
        "metadata": {
          "description": "Do a change detection run to make sure there were no changes."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "notes": "use fixture.detectChanges() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b918beda323eefef17bf1de03fde3d402a3d4af0"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ComponentFactoryResolver",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "ComponentFactoryResolver",
        "name": "ComponentFactoryResolver",
        "package": "@angular/core",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ComponentFactory",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "ComponentFactory",
        "name": "ComponentFactory",
        "package": "@angular/core",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Webpack Builders",
      "package": "@angular-devkit/build-*",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "webpackBuilder",
        "name": "Webpack Builders",
        "package": "@angular-devkit/build-*",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "notes": "Migrate to the @angular/build builders (esbuild/application) for your application builds.",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CommonEngine",
      "package": "@angular/ssr",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "commonEngine",
        "name": "CommonEngine",
        "package": "@angular/ssr",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "notes": "Migrate to AngularNodeAppEngine or AngularAppEngine instead",
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Jest builder",
      "package": "@angular/devkit/build-angular:jest",
      "description": "",
      "status": "removed",
      "introduced_in": "16",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "experimental",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "jestBuilder",
        "name": "Jest builder",
        "package": "@angular/devkit/build-angular:jest",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "experimental"
          },
          {
            "version": 17,
            "status": "experimental"
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Web Test Runner builder",
      "package": "@angular-devkit/build-angular:web-test-runner",
      "description": "",
      "status": "removed",
      "introduced_in": "17",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "id": "webTestRunnerBuilder",
        "name": "Web Test Runner builder",
        "package": "@angular-devkit/build-angular:web-test-runner",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "experimental"
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NoopAnimationDriver",
      "package": "@angular/animations/browser",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "NoopAnimationDriver",
        "package": "@angular/animations/browser",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "MockAnimationDriver",
      "package": "@angular/animations/browser/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "MockAnimationDriver",
        "package": "@angular/animations/browser/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "MockAnimationPlayer",
      "package": "@angular/animations/browser/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "MockAnimationPlayer",
        "package": "@angular/animations/browser/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "animate",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "animate",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "animateChild",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "animateChild",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimateChildOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimateChildOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimateTimings",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimateTimings",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "animation",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "animation",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationAnimateChildMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationAnimateChildMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationAnimateMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationAnimateMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationAnimateRefMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationAnimateRefMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationGroupMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationGroupMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationKeyframesSequenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationKeyframesSequenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationPlayer",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationPlayer",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationQueryMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationQueryMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationQueryOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationQueryOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationReferenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationReferenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationSequenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationSequenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationStaggerMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationStaggerMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationStateMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationStateMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationStyleMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationStyleMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationTransitionMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationTransitionMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AnimationTriggerMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AnimationTriggerMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "AUTO_STYLE",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "AUTO_STYLE",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "group",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "group",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "keyframes",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "keyframes",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NoopAnimationPlayer",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "NoopAnimationPlayer",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "query",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "query",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "sequence",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "sequence",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "stagger",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "stagger",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "state",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "state",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "style",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "style",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "transition",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "transition",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "trigger",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "trigger",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "useAnimation",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "useAnimation",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HttpClientJsonpModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HttpClientJsonpModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HttpClientModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HttpClientModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HttpClientXsrfModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HttpClientXsrfModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HttpClientTestingModule",
      "package": "@angular/common/http/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HttpClientTestingModule",
        "package": "@angular/common/http/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "DATE_PIPE_DEFAULT_TIMEZONE",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "DATE_PIPE_DEFAULT_TIMEZONE",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getCurrencySymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getCurrencySymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleCurrencyCode",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleCurrencyCode",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleCurrencyName",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleCurrencyName",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleCurrencySymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleCurrencySymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleDateFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleDateFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleDateTimeFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleDateTimeFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleDayNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleDayNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleDayPeriods",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleDayPeriods",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleDirection",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleDirection",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleEraNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleEraNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleExtraDayPeriodRules",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleExtraDayPeriodRules",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleExtraDayPeriods",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleExtraDayPeriods",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleFirstDayOfWeek",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleFirstDayOfWeek",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleId",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleId",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleMonthNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleMonthNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleNumberFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleNumberFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleNumberSymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleNumberSymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocalePluralCase",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocalePluralCase",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleTimeFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleTimeFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getLocaleWeekEndRange",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getLocaleWeekEndRange",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getNumberOfCurrencyDigits",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getNumberOfCurrencyDigits",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Time",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "Time",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "APP_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "APP_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "BootstrapOptions",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "BootstrapOptions",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Compiler",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "Compiler",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "DefaultIterableDiffer",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "DefaultIterableDiffer",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ENVIRONMENT_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ENVIRONMENT_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getModuleFactory",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getModuleFactory",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "PLATFORM_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "PLATFORM_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "JitCompilerFactory",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "JitCompilerFactory",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "platformBrowserDynamic",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "platformBrowserDynamic",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "BrowserDynamicTestingModule",
      "package": "@angular/platform-browser-dynamic/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "BrowserDynamicTestingModule",
        "package": "@angular/platform-browser-dynamic/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "platformBrowserDynamicTesting",
      "package": "@angular/platform-browser-dynamic/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "platformBrowserDynamicTesting",
        "package": "@angular/platform-browser-dynamic/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "BrowserAnimationsModule",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "BrowserAnimationsModule",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "BrowserAnimationsModuleConfig",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "BrowserAnimationsModuleConfig",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NoopAnimationsModule",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "NoopAnimationsModule",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideAnimations",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "provideAnimations",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideNoopAnimations",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "provideNoopAnimations",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanActivate",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanActivate",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanActivateChild",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanActivateChild",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanDeactivate",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanDeactivate",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanLoad",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanLoad",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanLoadFn",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanLoadFn",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "CanMatch",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "CanMatch",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "DeprecatedGuard",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "DeprecatedGuard",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "DeprecatedResolve",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "DeprecatedResolve",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "Resolve",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "Resolve",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "RouterTestingModule",
      "package": "@angular/router/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "not_available",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "RouterTestingModule",
        "package": "@angular/router/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "downgradeModule",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13.4",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "downgradeModule",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13.4,
            "status": "deprecated"
          },
          {
            "version": 14.3,
            "status": "deprecated"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18.2,
            "status": "deprecated"
          },
          {
            "version": 19.2,
            "status": "deprecated"
          },
          {
            "version": 20.3,
            "status": "deprecated"
          },
          {
            "version": 21.2,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "createNgModuleRef",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "createNgModuleRef",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.1,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ModuleWithComponentFactories",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ModuleWithComponentFactories",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HAMMER_GESTURE_CONFIG",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HAMMER_GESTURE_CONFIG",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HAMMER_LOADER",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HAMMER_LOADER",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HammerGestureConfig",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HammerGestureConfig",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HammerLoader",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HammerLoader",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "HammerModule",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "HammerModule",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "provideRoutes",
      "package": "@angular/router",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "provideRoutes",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "getAngularLib",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "getAngularLib",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "setAngularLib",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "setAngularLib",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ImportedNgModuleProviders",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "14",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ImportedNgModuleProviders",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NgProbeToken",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "NgProbeToken",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "PACKAGE_ROOT_URL",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "PACKAGE_ROOT_URL",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ApplicationConfig",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "removed",
      "v21": "removed",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ApplicationConfig",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18.2,
            "status": "deprecated"
          },
          {
            "version": 19.2,
            "status": "deprecated"
          },
          {
            "version": 20.3,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "UpgradeAdapter",
      "package": "@angular/upgrade",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "UpgradeAdapter",
        "package": "@angular/upgrade",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "UpgradeAdapterRef",
      "package": "@angular/upgrade",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "UpgradeAdapterRef",
        "package": "@angular/upgrade",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "isPlatformWorkerApp",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "isPlatformWorkerApp",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "isPlatformWorkerUi",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "isPlatformWorkerUi",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "async",
      "package": "@angular/core/testing",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "async",
        "package": "@angular/core/testing",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "RESOURCE_CACHE_PROVIDER",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "removed",
      "introduced_in": "13.2",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "RESOURCE_CACHE_PROVIDER",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13.2,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "makeStateKey",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "makeStateKey",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "StateKey",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "StateKey",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "platformDynamicServer",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "platformDynamicServer",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ServerTransferStateModule",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ServerTransferStateModule",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.2,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "setupTestingRouter",
      "package": "@angular/router/testing",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "setupTestingRouter",
        "package": "@angular/router/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "UpdateActivatedEvent",
      "package": "@angular/service-worker",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "UpdateActivatedEvent",
        "package": "@angular/service-worker",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "UpdateAvailableEvent",
      "package": "@angular/service-worker",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "UpdateAvailableEvent",
        "package": "@angular/service-worker",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "XhrFactory",
      "package": "@angular/common/http",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "XhrFactory",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ANALYZE_FOR_ENTRY_COMPONENTS",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ANALYZE_FOR_ENTRY_COMPONENTS",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "ReflectiveKey",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "ReflectiveKey",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "BrowserTransferStateModule",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "BrowserTransferStateModule",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.2,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "renderModuleFactory",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "renderModuleFactory",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Features",
      "name": "NgOptimizedImageModule",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13.4",
      "removed_in": "14",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=features",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "name": "NgOptimizedImageModule",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13.4,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Standalone API",
      "package": "@angular/core",
      "description": "Directly import other components, directives, and pipes used in their templates and enable some features such as defer, hostDirectives and loadComponent.",
      "status": "stable",
      "introduced_in": "14",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "experimental",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/components/importing#standalone-components",
      "notes": "migration: ng generate @angular/core:standalone Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "standalone-api",
        "name": "Standalone API",
        "package": "@angular/core",
        "metadata": {
          "description": "Directly import other components, directives, and pipes used in their templates and enable some features such as defer, hostDirectives and loadComponent.",
          "documentationUrl": "https://angular.dev/guide/components/importing#standalone-components",
          "rfcUrl": "https://github.com/angular/angular/discussions/43784",
          "migrationScript": "ng generate @angular/core:standalone"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "experimental",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/5a10fc4f8287d448c88ce2f6c97c48307af34af1"
            }
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "notes": "Components, Directives and Pipes are now standalone by default - no need to specify `standalone: true` anymore"
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@defer",
      "package": "@angular/core",
      "description": "Defer the loading of select dependencies such as components, directives, and pipes, and any associated CSS within a template",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/defer#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "defer",
        "name": "@defer",
        "package": "@angular/core",
        "metadata": {
          "description": "Defer the loading of select dependencies such as components, directives, and pipes, and any associated CSS within a template",
          "documentationUrl": "https://angular.dev/guide/defer#",
          "rfcUrl": "https://github.com/angular/angular/discussions/50716"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@for",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally repeat elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#repeat-content-with-the-for-block",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@for",
        "name": "@for",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally repeat elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#repeat-content-with-the-for-block",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@switch",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally show elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-the-switch-block",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@switch",
        "name": "@switch",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally show elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-the-switch-block",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@if",
      "package": "@angular/core",
      "description": "Angular templates support control flow blocks that let you conditionally show and hide elements.",
      "status": "stable",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-if-else-if-and-else",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@if",
        "name": "@if",
        "package": "@angular/core",
        "metadata": {
          "description": "Angular templates support control flow blocks that let you conditionally show and hide elements.",
          "documentationUrl": "https://angular.dev/guide/templates/control-flow#conditionally-display-content-with-if-else-if-and-else",
          "rfcUrl": "https://github.com/angular/angular/discussions/50719",
          "migrationScript": "ng generate @angular/core:control-flow"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/93675dc797cb9f897c19fe298455dec52b900113"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "ng update mandatory migration"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Functional guards/resolvers",
      "package": "@angular/router",
      "description": "Create guards and resolvers using functions.",
      "status": "stable",
      "introduced_in": "14.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "functional-guards-resolvers",
        "name": "Functional guards/resolvers",
        "package": "@angular/router",
        "metadata": {
          "description": "Create guards and resolvers using functions."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/22fdd7da97c832048410ca89622712d097490c5d"
            }
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Functional interceptors",
      "package": "@angular/router",
      "description": "Create interceptors using functions.",
      "status": "stable",
      "introduced_in": "15",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://v18.angular.dev/guide/http/interceptors#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "functional-interceptors",
        "name": "Functional interceptors",
        "package": "@angular/router",
        "metadata": {
          "description": "Create interceptors using functions.",
          "documentationUrl": "https://v18.angular.dev/guide/http/interceptors#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": null
          },
          {
            "version": 15,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/62c7a7a16e035c3a5346270dc4c5c6de85bf9137"
            }
          },
          {
            "version": 16,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/22fdd7da97c832048410ca89622712d097490c5d"
            }
          },
          {
            "version": 17,
            "status": "stable",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular-cli/commit/a189962a515051fd77e20bf8dd1815086a0d12ef"
            }
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@let",
      "package": "@angular/core",
      "description": "Define a local variable and re-use it across the template.",
      "status": "stable",
      "introduced_in": "18.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/templates/variables#local-template-variables-with-let",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@let",
        "name": "@let",
        "package": "@angular/core",
        "metadata": {
          "description": "Define a local variable and re-use it across the template.",
          "documentationUrl": "https://angular.dev/guide/templates/variables#local-template-variables-with-let"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18.1,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/0a48d584f2ffeebb9402032182d4fc13a260c5cf"
            }
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal (core)",
      "package": "@angular/core",
      "description": "System that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-core",
        "name": "Signal (core)",
        "package": "@angular/core",
        "metadata": {
          "description": "System that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates.",
          "documentationUrl": "https://angular.dev/guide/signals#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal inputs",
      "package": "@angular/core",
      "description": "Allow values to be bound from parent components.",
      "status": "stable",
      "introduced_in": "17.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/inputs#",
      "notes": "migration: ng generate @angular/core:signal-input-migration Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-inputs",
        "name": "Signal inputs",
        "package": "@angular/core",
        "metadata": {
          "description": "Allow values to be bound from parent components.",
          "documentationUrl": "https://angular.dev/guide/signals/inputs#",
          "migrationScript": "ng generate @angular/core:signal-input-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.1,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "output()",
      "package": "@angular/core",
      "description": "Enable emitting values to parent directives and components.",
      "status": "stable",
      "introduced_in": "17.3",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/components/outputs#",
      "notes": "migration: ng generate @angular/core:output-migration Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "output",
        "name": "output()",
        "package": "@angular/core",
        "metadata": {
          "description": "Enable emitting values to parent directives and components.",
          "documentationUrl": "https://angular.dev/guide/components/outputs#",
          "migrationScript": "ng generate @angular/core:output-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.3,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal queries",
      "package": "@angular/core",
      "description": "Signals to retrieve references to child components, directives, DOM elements, and more.",
      "status": "stable",
      "introduced_in": "17.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/queries#",
      "notes": "migration: ng generate @angular/core:signal-queries-migration Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-queries",
        "name": "Signal queries",
        "package": "@angular/core",
        "metadata": {
          "description": "Signals to retrieve references to child components, directives, DOM elements, and more.",
          "documentationUrl": "https://angular.dev/guide/signals/queries#",
          "migrationScript": "ng generate @angular/core:signal-queries-migration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.2,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal model",
      "package": "@angular/core",
      "description": "Special type of input that enable a component to propagate new values back to another component.",
      "status": "stable",
      "introduced_in": "17.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/model",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-model",
        "name": "Signal model",
        "package": "@angular/core",
        "metadata": {
          "description": "Special type of input that enable a component to propagate new values back to another component.",
          "documentationUrl": "https://angular.dev/guide/signals/model"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17.2,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal effect",
      "package": "@angular/core",
      "description": "Operation that runs whenever one or more signal values change.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals#effects",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-effect",
        "name": "Signal effect",
        "package": "@angular/core",
        "metadata": {
          "description": "Operation that runs whenever one or more signal values change.",
          "documentationUrl": "https://angular.dev/guide/signals#effects"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal inputs converter",
      "package": "@angular/language-service",
      "description": "Language service refactoring action that can convert `@Input()` declarations to signal inputs.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-inputs-converter",
        "name": "Signal inputs converter",
        "metadata": {
          "description": "Language service refactoring action that can convert `@Input()` declarations to signal inputs."
        },
        "package": "@angular/language-service",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1f067f4507b6e908fe991d5de0dc4d3a627ab2f9"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withEventReplay",
      "package": "@angular/platform-browser",
      "description": "Support for replaying user events (e.g. clicks) that happened on a page before hydration logic has completed.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/hydration#capturing-and-replaying-events",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withEventReplay",
        "name": "withEventReplay",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Support for replaying user events (e.g. clicks) that happened on a page before hydration logic has completed.",
          "documentationUrl": "https://angular.dev/guide/hydration#capturing-and-replaying-events"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideZonelessChangeDetection",
      "package": "@angular/platform-browser",
      "description": "Provide change detection without ZoneJS for the application bootstrapped using bootstrapApplication.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "preview",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/testing/components-scenarios#automatic-change-detection",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideZonelessChangeDetection",
        "name": "provideZonelessChangeDetection",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Provide change detection without ZoneJS for the application bootstrapped using bootstrapApplication.",
          "documentationUrl": "https://angular.dev/guide/testing/components-scenarios#automatic-change-detection"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "preview",
            "metadata": {
              "notes": "Renamed from provideExperimentalZoneChangeDetection"
            }
          },
          {
            "version": 20.2,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from provideExperimentalZoneChangeDetection"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withI18nSupport",
      "package": "@angular/platform-browser",
      "description": "Enable support for hydrating i18n blocks.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/hydration#i18n",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withI18nSupport",
        "name": "withI18nSupport",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Enable support for hydrating i18n blocks.",
          "documentationUrl": "https://angular.dev/guide/hydration#i18n"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "createRequestHandler",
      "package": "@angular/ssr",
      "description": "Annotate a request handler function with metadata, marking it as a special handler.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "createRequestHandler",
        "name": "createRequestHandler",
        "metadata": {
          "description": "Annotate a request handler function with metadata, marking it as a special handler."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "createNodeRequestHandler",
      "package": "@angular/ssr",
      "description": "Attache metadata to the handler function to mark it as a special handler for Node.js environments.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "createNodeRequestHandler",
        "name": "createNodeRequestHandler",
        "metadata": {
          "description": "Attache metadata to the handler function to mark it as a special handler for Node.js environments."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "isMainModule",
      "package": "@angular/ssr",
      "description": "Determine whether the provided URL represents the main entry point module.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "isMainModule",
        "name": "isMainModule",
        "metadata": {
          "description": "Determine whether the provided URL represents the main entry point module."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "PendingTasks",
      "package": "@angular/ssr",
      "description": "Experimental service that keeps track of pending tasks contributing to the stableness of Angular application.",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/experimental/zoneless#experimentalpendingtasks-for-server-side-rendering-ssr",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "PendingTasks",
        "name": "PendingTasks",
        "metadata": {
          "description": "Experimental service that keeps track of pending tasks contributing to the stableness of Angular application.",
          "documentationUrl": "https://angular.dev/guide/experimental/zoneless#experimentalpendingtasks-for-server-side-rendering-ssr"
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AngularAppEngine",
      "package": "@angular/ssr",
      "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "AngularAppEngine",
        "name": "AngularAppEngine",
        "metadata": {
          "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AngularNodeAppEngine",
      "package": "@angular/ssr",
      "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "AngularNodeAppEngine",
        "name": "AngularNodeAppEngine",
        "metadata": {
          "description": "Manage Angular server applications (including localized ones), handles rendering requests, and optionally transforms index HTML before rendering."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "createWebRequestFromNodeRequest",
      "package": "@angular/ssr",
      "description": "",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "createWebRequestFromNodeRequest",
        "name": "createWebRequestFromNodeRequest",
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108#diff-c5d5f2d7a4d78d365d99bfe612bcd8043917786a814bb0c2b4df3ef21916636aR18"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "writeResponseToNodeResponse",
      "package": "@angular/ssr",
      "description": "",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "writeResponseToNodeResponse",
        "name": "writeResponseToNodeResponse",
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108#diff-e9a8e11f8ba8e6179d9d2746330ebdb2900cba68f0be8e9d0f34ad952cb90e43R19"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "RenderMode",
      "package": "@angular/ssr",
      "description": "Different rendering modes for server routes.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "RenderMode",
        "name": "RenderMode",
        "metadata": {
          "description": "Different rendering modes for server routes."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R15"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "PrerenderFallback",
      "package": "@angular/ssr",
      "description": "Fallback strategies for Static Site Generation (SSG) routes.",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "PrerenderFallback",
        "name": "PrerenderFallback",
        "metadata": {
          "description": "Fallback strategies for Static Site Generation (SSG) routes."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R33"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ServerRoute",
      "package": "@angular/ssr",
      "description": "Server route configuration.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ServerRoute",
        "name": "ServerRoute",
        "metadata": {
          "description": "Server route configuration."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R124"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideServerRendering",
      "package": "@angular/ssr",
      "description": "Configure the necessary providers for server routes configuration.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideServerRendering",
        "name": "provideServerRendering",
        "metadata": {
          "description": "Configure the necessary providers for server routes configuration."
        },
        "package": "@angular/ssr",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2#diff-503e115eb1d0e9fe3ed1c908026bf21f1b853c0aaabcd54be2f464b8d12d4967R139"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from provideServerRoutes"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "afterEveryRender",
      "package": "@angular/core",
      "description": "Register a callback to be invoked each time the application finishes rendering",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "afterEveryRender",
        "name": "afterEveryRender",
        "package": "@angular/core",
        "metadata": {
          "description": "Register a callback to be invoked each time the application finishes rendering",
          "documentationUrl": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "Renamed from afterRender",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60999"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "afterNextRender",
      "package": "@angular/core",
      "description": "Register callbacks to be invoked the next time the application finishes rendering",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "afterNextRender",
        "name": "afterNextRender",
        "package": "@angular/core",
        "metadata": {
          "description": "Register callbacks to be invoked the next time the application finishes rendering",
          "documentationUrl": "https://angular.dev/guide/components/lifecycle#aftereveryrender-and-afternextrender"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60792"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "afterRenderEffect",
      "package": "@angular/core",
      "description": "Create effect(s) that run as part of Angular's `afterRender` sequence.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "afterRenderEffect",
        "name": "afterRenderEffect",
        "package": "@angular/core",
        "metadata": {
          "description": "Create effect(s) that run as part of Angular's `afterRender` sequence."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/be2e49639bda831831ad62d49253db942a83fd46#diff-74210fe93145cf1b95113524d1ca78287880b46bdb8f838930b1160ec7066e3eR263"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withViewTransitions",
      "package": "@angular/router",
      "description": "Enable view transitions in the Router",
      "status": "preview",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "preview",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/animations/route-animations#how-the-router-uses-view-transitions",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withViewTransitions",
        "name": "withViewTransitions",
        "package": "@angular/router",
        "metadata": {
          "description": "Enable view transitions in the Router",
          "documentationUrl": "https://angular.dev/guide/animations/route-animations#how-the-router-uses-view-transitions"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "experimental",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/commit/73e4bf2ed2471faf44a49b591e19a390d5867449"
            }
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "commitUrl": "https://github.com/angular/angular/pull/55600/commits/313c0b1502fcac069712e311866aba5c017ef585"
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "toSignal",
      "package": "@angular/core/rxjs-interop",
      "description": "Get the current value of an Observable as a reactive Signal.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#tosignal",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "toSignal",
        "name": "toSignal",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Get the current value of an Observable as a reactive Signal.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#tosignal"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60442"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "toObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Expose the value of an Angular Signal as an RxJS Observable.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#toobservable",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "toObservable",
        "name": "toObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Expose the value of an Angular Signal as an RxJS Observable.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#toobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "takeUntilDestroyed",
      "package": "@angular/core/rxjs-interop",
      "description": "Complete the Observable when the calling context (component, directive, service, etc) is destroyed.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "takeUntilDestroyed",
        "name": "takeUntilDestroyed",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Complete the Observable when the calling context (component, directive, service, etc) is destroyed."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "outputFromObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Output using an RxJS observable as a source for events dispatched to parent subscribers.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#outputfromobservable",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "outputFromObservable",
        "name": "outputFromObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Output using an RxJS observable as a source for events dispatched to parent subscribers.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#outputfromobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "outputToObservable",
      "package": "@angular/core/rxjs-interop",
      "description": "Convert an Angular output declared via output() or outputFromObservable() to an observable.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/rxjs-interop#outputtoobservable",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "outputToObservable",
        "name": "outputToObservable",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Convert an Angular output declared via output() or outputFromObservable() to an observable.",
          "documentationUrl": "https://angular.dev/guide/signals/rxjs-interop#outputtoobservable"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "auto-csp",
      "package": "@angular/build",
      "description": "Opt-in option in angular.json to enable the auto-CSP transformation",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "auto-csp",
        "name": "auto-csp",
        "package": "@angular/build",
        "metadata": {
          "description": "Opt-in option in angular.json to enable the auto-CSP transformation"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/efb434136d8c8df207747ab8fd87b7e2116b7106"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "experimentalPlatform",
      "package": "@angular/build",
      "description": "Specifie the platform for which the server bundle is generated",
      "status": "experimental",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "experimentalPlatform",
        "name": "experimentalPlatform",
        "package": "@angular/build",
        "metadata": {
          "description": "Specifie the platform for which the server bundle is generated"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/7d883a152e978112245a98f2f737764caa76ec0f"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withIncrementalHydration",
      "package": "@angular/platform-browser",
      "description": "Enable support for incremental hydration using the `hydrate` trigger syntax.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/incremental-hydration#how-do-you-enable-incremental-hydration-in-angular",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withIncrementalHydration",
        "name": "withIncrementalHydration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Enable support for incremental hydration using the `hydrate` trigger syntax.",
          "documentationUrl": "https://angular.dev/guide/incremental-hydration#how-do-you-enable-incremental-hydration-in-angular"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/69fc5ae9229b872a9ad70eb920087af2a378fead"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "pendingUntilEvent",
      "package": "@angular/core/rxjs-interop",
      "description": "Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.",
      "status": "preview",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/zoneless#pendingtasks-for-server-side-rendering-ssr",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "pendingUntilEvent",
        "name": "pendingUntilEvent",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Operator which makes the application unstable until the observable emits, complets, errors, or is unsubscribed.",
          "documentationUrl": "https://angular.dev/guide/zoneless#pendingtasks-for-server-side-rendering-ssr"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8ebbae88ca48b8aa78cd85deedbed19d44b8227e"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "preview"
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "resource()",
      "package": "@angular/core",
      "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a loader function, which exposes the result of the loading operation via signals.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/resource#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "resource",
        "name": "resource()",
        "package": "@angular/core",
        "metadata": {
          "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a loader function, which exposes the result of the loading operation via signals.",
          "documentationUrl": "https://angular.dev/guide/signals/resource#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/18d8d44b1f3d56a4eda68f2cafded7529e08d0f1"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "rxResource()",
      "package": "@angular/core/rxjs-interop",
      "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a RxJS based loader function, which exposes the result of the loading operation via signals.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/resource#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "rxResource",
        "name": "rxResource()",
        "package": "@angular/core/rxjs-interop",
        "metadata": {
          "description": "Construct a `Resource` that projects a reactive request to an asynchronous operation defined by a RxJS based loader function, which exposes the result of the loading operation via signals.",
          "documentationUrl": "https://angular.dev/guide/signals/resource#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9762b24b5e8d7ab3ed2321959492a77b01d8ae57"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "httpResource()",
      "package": "@angular/common/http",
      "description": "new frontend to the HttpClient infrastructure",
      "status": "stable",
      "introduced_in": "19.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "httpResource",
        "name": "httpResource()",
        "package": "@angular/common/http",
        "metadata": {
          "description": "new frontend to the HttpClient infrastructure"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/59876/commits/8aec2dfb30d1b35bb3eb7bc46692525691c1a56c"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "linkedSignal",
      "package": "@angular/core",
      "description": "Represent state (hence the signal in the name) that is reset based on the provided computation.",
      "status": "stable",
      "introduced_in": "19",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "preview",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/signals/linked-signal#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "linkedSignal",
        "name": "linkedSignal",
        "package": "@angular/core",
        "metadata": {
          "description": "Represent state (hence the signal in the name) that is reset based on the provided computation.",
          "documentationUrl": "https://angular.dev/guide/signals/linked-signal#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8311f00faaf282d1a5b1ddca29247a2fba94a692"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withRequestsMadeViaParent",
      "package": "@angular/common/http",
      "description": "Configure the current `HttpClient` instance to make requests via the parent injector's `HttpClient` instead of directly.",
      "status": "stable",
      "introduced_in": "15",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "preview",
      "v17": "preview",
      "v16": "preview",
      "v15": "preview",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withRequestsMadeViaParent",
        "name": "withRequestsMadeViaParent",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Configure the current `HttpClient` instance to make requests via the parent injector's `HttpClient` instead of directly."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": "preview"
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/4b9accdf166f3990b3706de83ada15937fe786e2"
                }
              ]
            }
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ngOptimizedImage",
      "package": "@angular/common",
      "description": "Directive that improves image loading performance by enforcing best practices.",
      "status": "stable",
      "introduced_in": "14.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/image-optimization",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ngOptimizedImage",
        "name": "ngOptimizedImage",
        "package": "@angular/common",
        "metadata": {
          "description": "Directive that improves image loading performance by enforcing best practices.",
          "documentationUrl": "https://angular.dev/guide/image-optimization"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14.2,
            "status": "preview",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/d5f7da21207f7808dffb3932fa61d22614e6bd57"
                }
              ]
            }
          },
          {
            "version": 15,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b136e9eea6c9b22796186262292db738cd4d1a12"
                }
              ]
            }
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideClientHydration",
      "package": "@angular/platform-browser",
      "description": "Sets up providers necessary to enable hydration functionality for the application.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "preview",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/hydration",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideClientHydration",
        "name": "provideClientHydration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "Sets up providers necessary to enable hydration functionality for the application.",
          "documentationUrl": "https://angular.dev/guide/hydration"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "preview"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "*ngIf",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "*ngIf",
        "name": "*ngIf",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@if"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "*ngFor",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "*ngFor",
        "name": "*ngFor",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@for"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "*ngSwitch",
      "package": "@angular/common",
      "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/directives/structural-directives#",
      "notes": "migration: ng generate @angular/core:control-flow Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "*ngSwitch",
        "name": "*ngSwitch",
        "package": "@angular/common",
        "metadata": {
          "description": "Structural directives are directives which change the DOM layout by adding and removing DOM elements.",
          "documentationUrl": "https://angular.dev/guide/directives/structural-directives#",
          "migrationScript": "ng generate @angular/core:control-flow",
          "replacedBy": "@switch"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "ng update mandatory migration",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60492"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HammerJS integration",
      "package": "@angular/platform-browser",
      "description": "An injectable HammerJS Manager for gesture recognition.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://hammerjs.github.io/",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "HammerJS integration",
        "name": "HammerJS integration",
        "package": "@angular/platform-browser",
        "metadata": {
          "description": "An injectable HammerJS Manager for gesture recognition.",
          "documentationUrl": "https://hammerjs.github.io/"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60257"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "platformServerTesting",
      "package": "@angular/platform-server/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "platformServerTesting",
        "name": "platformServerTesting",
        "package": "@angular/platform-server/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ServerTestingModule",
      "package": "@angular/platform-server/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ServerTestingModule",
        "name": "ServerTestingModule",
        "package": "@angular/platform-server/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "TestBed.get",
      "package": "@angular/core/testing",
      "description": "Supplies a testing module for the Angular platform server subsystem.",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "20",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "TestBed.get",
        "name": "TestBed.get",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Supplies a testing module for the Angular platform server subsystem."
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "removed",
            "metadata": {
              "notes": "use TestBed.inject() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "TestBed.flushEffects",
      "package": "@angular/core/testing",
      "description": "Execute any pending effects. use `TestBed.tick()` instead",
      "status": "deprecated",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "preview",
      "v18": "preview",
      "v17": "preview",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "TestBed.flushEffects",
        "name": "TestBed.flushEffects",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Execute any pending effects. use `TestBed.tick()` instead"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "preview"
          },
          {
            "version": 18,
            "status": "preview"
          },
          {
            "version": 19,
            "status": "preview"
          },
          {
            "version": 20,
            "status": "deprecated",
            "metadata": {
              "notes": "use TestBed.tick() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60915"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideCheckNoChangesConfig",
      "package": "@angular/core",
      "description": "Used to disable exhaustive checks when verifying no expressions changed after they were checked.",
      "status": "preview",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "preview",
      "v21": "preview",
      "v20": "preview",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideCheckNoChangesConfig",
        "name": "provideCheckNoChangesConfig",
        "package": "@angular/core",
        "metadata": {
          "description": "Used to disable exhaustive checks when verifying no expressions changed after they were checked."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "preview",
            "metadata": {
              "notes": "Renamed from provideExperimentalCheckNoChangesForDebug",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/60906"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "preview"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Vitest",
      "package": "@angular/build",
      "description": "unit-testing and browser Vitest testing support",
      "status": "stable",
      "introduced_in": "20",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "experimental",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "Vitest",
        "name": "Vitest",
        "package": "@angular/build",
        "metadata": {
          "description": "unit-testing and browser Vitest testing support"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular-cli/commit/12def3a2e907ca8e7d530cea1b39bba90e153144"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withComponentInputBinding",
      "package": "@angular/router",
      "description": "Enables binding information from the Router state directly to the inputs of the component in Route configurations.",
      "status": "stable",
      "introduced_in": "16",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/routing/common-router-tasks#add-withcomponentinputbinding",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withComponentInputBinding",
        "name": "withComponentInputBinding",
        "package": "@angular/router",
        "metadata": {
          "description": "Enables binding information from the Router state directly to the inputs of the component in Route configurations.",
          "documentationUrl": "https://angular.dev/guide/routing/common-router-tasks#add-withcomponentinputbinding"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Unified control state change events",
      "package": "@angular/forms",
      "description": "Unified way to listen to all form events: ValueChangeEvent, StatusChangeEvent, PristineChangeEvent and TouchedChangeEvent",
      "status": "stable",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "unified-control-state-change-events",
        "name": "Unified control state change events",
        "package": "@angular/forms",
        "metadata": {
          "description": "Unified way to listen to all form events: ValueChangeEvent, StatusChangeEvent, PristineChangeEvent and TouchedChangeEvent"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideBrowserGlobalErrorListeners",
      "package": "@angular/core",
      "description": "Provides an environment initializer which forwards unhandled errors to the ErrorHandler.",
      "status": "stable",
      "introduced_in": "20",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/best-practices/error-handling#client-side-rendering",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideBrowserGlobalErrorListeners",
        "name": "provideBrowserGlobalErrorListeners",
        "package": "@angular/core",
        "metadata": {
          "description": "Provides an environment initializer which forwards unhandled errors to the ErrorHandler.",
          "documentationUrl": "https://angular.dev/best-practices/error-handling#client-side-rendering"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "inject()",
      "package": "@angular/core",
      "description": "Injects a token from the currently active injector. inject is only supported in an injection context. ",
      "status": "stable",
      "introduced_in": "14",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/best-practices/error-handling#client-side-rendering",
      "notes": "migration: ng generate @angular/core:inject Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "inject",
        "name": "inject()",
        "package": "@angular/core",
        "metadata": {
          "description": "Injects a token from the currently active injector. inject is only supported in an injection context. ",
          "documentationUrl": "https://angular.dev/best-practices/error-handling#client-side-rendering",
          "migrationScript": "ng generate @angular/core:inject"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable",
            "metadata": {
              "notes": "recommended over constructor in the new official style guide"
            }
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NG_BUILD_OPTIMIZE_CHUNKS",
      "package": "@angular/cli",
      "description": "chunk optimizer for production application builds",
      "status": "experimental",
      "introduced_in": "18",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "NG_BUILD_OPTIMIZE_CHUNKS",
        "name": "NG_BUILD_OPTIMIZE_CHUNKS",
        "package": "@angular/cli",
        "metadata": {
          "description": "chunk optimizer for production application builds"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideAnimationsAsync",
      "package": "@angular/animations",
      "description": "Renders animations only once the renderer is loaded",
      "status": "deprecated",
      "introduced_in": "17",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/api/platform-browser/animations/async/provideAnimationsAsync#",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideAnimationsAsync",
        "name": "provideAnimationsAsync",
        "package": "@angular/animations",
        "metadata": {
          "description": "Renders animations only once the renderer is loaded",
          "documentationUrl": "https://angular.dev/api/platform-browser/animations/async/provideAnimationsAsync#"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use animate.enter and animate.leave instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/62795"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@angular/animations package",
      "package": "@angular/animations",
      "description": "Renders animations only once the renderer is loaded",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/animations/css",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@angular/animations package",
        "name": "@angular/animations package",
        "package": "@angular/animations",
        "metadata": {
          "description": "Renders animations only once the renderer is loaded",
          "documentationUrl": "https://angular.dev/guide/animations/css"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use animate.enter and animate.leave instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/62795"
                }
              ]
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Router.getCurrentNavigation",
      "package": "@angular/router",
      "description": "Returns the current navigation object",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/guide/animations/css",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "get-current-navigation",
        "name": "Router.getCurrentNavigation",
        "package": "@angular/router",
        "metadata": {
          "description": "Returns the current navigation object",
          "documentationUrl": "https://angular.dev/guide/animations/css"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated",
            "metadata": {
              "notes": "use Router.currentNavigation instead"
            }
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withExperimentalPlatformNavigation",
      "package": "@angular/router",
      "description": "Navigation Web API support",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "navigation-api-support",
        "name": "withExperimentalPlatformNavigation",
        "package": "@angular/router",
        "metadata": {
          "description": "Navigation Web API support"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.1,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/7003e8d2417660f71b3a2a017aff3e650c8d9646"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Signal forms",
      "package": "@angular/forms",
      "description": "Signal forms",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "signal-forms",
        "name": "Signal forms",
        "package": "@angular/forms",
        "metadata": {
          "description": "Signal forms"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/63408"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "FormArrayDirective",
      "package": "@angular/forms",
      "description": "FormArrayDirective enables wrapping a HTML form without relying on FormGroupDirective",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "form-array-directive",
        "name": "FormArrayDirective",
        "package": "@angular/forms",
        "metadata": {
          "description": "FormArrayDirective enables wrapping a HTML form without relying on FormGroupDirective"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/pull/55880"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "enableProfiling()",
      "package": "@angular/core",
      "description": "Enable profiling of the application",
      "status": "experimental",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "https://angular.dev/best-practices/profiling-with-chrome-devtools",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "enable-profiling",
        "name": "enableProfiling()",
        "package": "@angular/core",
        "metadata": {
          "description": "Enable profiling of the application",
          "documentationUrl": "https://angular.dev/best-practices/profiling-with-chrome-devtools"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "experimental"
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Angular Aria",
      "package": "@angular/aria",
      "description": "Angular Aria",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "preview",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "angular-aria",
        "name": "Angular Aria",
        "package": "@angular/aria",
        "metadata": {
          "description": "Angular Aria"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": "preview"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "VERSION",
      "package": "@angular/upgrade",
      "description": "Angular version used by the project",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "version-upgrade",
        "name": "VERSION",
        "package": "@angular/upgrade",
        "metadata": {
          "description": "Angular version used by the project"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.1,
            "status": "deprecated",
            "metadata": {
              "notes": "Please use the entry from @angular/upgrade/static instead."
            }
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Router.isActive",
      "package": "@angular/router",
      "description": "Returns a Signal<boolean> indicating if the current route is active",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "router-is-active",
        "name": "Router.isActive",
        "package": "@angular/router",
        "metadata": {
          "description": "Returns a Signal<boolean> indicating if the current route is active"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.1,
            "status": "deprecated",
            "metadata": {
              "notes": "Replaced by a computed Signal version of Router.isActive",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/e44839b01640505e554fff16f24e08f282a557c0"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withExperimentalAutoCleanupInjectors",
      "package": "@angular/router",
      "description": "Enable automatic cleanup of unused route injectors",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withExperimentalAutoCleanupInjectors",
        "name": "withExperimentalAutoCleanupInjectors",
        "package": "@angular/router",
        "metadata": {
          "description": "Enable automatic cleanup of unused route injectors"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.1,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5edceffd0431f5a25e111a731db521e966b91f86"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "experimental"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ResourceSnapshot",
      "package": "@angular/core",
      "description": "An explicit representation of a resource's state",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "resourceSnapshot",
        "name": "ResourceSnapshot",
        "package": "@angular/core",
        "metadata": {
          "description": "An explicit representation of a resource's state"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1ba9b7ac5001b315cc9df78c518964dbf479d647#diff-8182d3d1c5f1224cd109969446903a655ba093e4a1c3011be680b70c578b903eR249-R253"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "resourceFromSnapshots",
      "package": "@angular/core",
      "description": "Creates a Resource driven by a source of ResourceSnapshots",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "resourceFromSnapshots",
        "name": "resourceFromSnapshots",
        "package": "@angular/core",
        "metadata": {
          "description": "Creates a Resource driven by a source of ResourceSnapshots"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/1ba9b7ac5001b315cc9df78c518964dbf479d647#diff-44fd5671f0cd20b2d286f08c4846dfca05e82f51d9bfae3ab75f5c846c665eccR15-R19"
                }
              ]
            }
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withFetch",
      "package": "@angular/common/http",
      "description": "Use the Fetch API instead of XHR",
      "status": "deprecated",
      "introduced_in": "16.1",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withFetch",
        "name": "withFetch",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Use the Fetch API instead of XHR",
          "replacedBy": "withXhr"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16.1,
            "status": "preview"
          },
          {
            "version": 17.1,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5c432fb8bb69343ef2633811c37c0c6c0fd65126"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ChangeDetectionStrategy.Default",
      "package": "@angular/core",
      "description": "Renamed to ChangeDetectionStrategy.Eager",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "changeDetectionStrategyDefault",
        "name": "ChangeDetectionStrategy.Default",
        "package": "@angular/core",
        "metadata": {
          "description": "Renamed to ChangeDetectionStrategy.Eager",
          "replacedBy": "ChangeDetectionStrategy.Eager"
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21.2,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ChangeDetectionStrategy.Eager",
      "package": "@angular/core",
      "description": "Renamed from ChangeDetectionStrategy.Default",
      "status": "stable",
      "introduced_in": "21.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "changeDetectionStrategyEager",
        "name": "ChangeDetectionStrategy.Eager",
        "package": "@angular/core",
        "metadata": {
          "description": "Renamed from ChangeDetectionStrategy.Default"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21.2,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "withXhr",
      "package": "@angular/common/http",
      "description": "Use the XMLHttpRequest API instead of the Fetch API",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "withXhr",
        "name": "withXhr",
        "package": "@angular/common/http",
        "metadata": {
          "description": "Use the XMLHttpRequest API instead of the Fetch API"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/5c432fb8bb69343ef2633811c37c0c6c0fd65126"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "TestBed.getLastFixture",
      "package": "@angular/core/testing",
      "description": "Get the last fixture for the test",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "getLastFixture",
        "name": "TestBed.getLastFixture",
        "package": "@angular/core/testing",
        "metadata": {
          "description": "Get the last fixture for the test"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HTML element comments",
      "package": "@angular/compiler",
      "description": "HTML element comments",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "htmlElementComments",
        "name": "HTML element comments",
        "package": "@angular/compiler",
        "metadata": {
          "description": "HTML element comments"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/e850643b1b8dca8cfdc12705be51441197cd987a"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "default OnPush strategy",
      "package": "@angular/core",
      "description": "Default OnPush strategy",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "defaultOnPushStrategy",
        "name": "default OnPush strategy",
        "package": "@angular/core",
        "metadata": {
          "description": "Default OnPush strategy"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/eae8f7e30b9f8bebdcdb535bd86260199c34274b"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "@Service decorator",
      "package": "@angular/core",
      "description": "more ergonomic alternative to @Injectable decorator",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "@Service decorator",
        "name": "@Service decorator",
        "package": "@angular/core",
        "metadata": {
          "description": "more ergonomic alternative to @Injectable decorator"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideExperimentalWebMcpTools",
      "package": "@angular/core",
      "description": "Provides a list of WebMCP tools tied to the lifecycle of the associated Injector.",
      "status": "experimental",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "experimental",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "provideExperimentalWebMcpTools",
        "name": "provideExperimentalWebMcpTools",
        "package": "@angular/core",
        "metadata": {
          "description": "Provides a list of WebMCP tools tied to the lifecycle of the associated Injector."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "experimental",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/3b0ae5fef0328477ee0f5d51980217e7c583a606"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "injectAsync",
      "package": "@angular/core",
      "description": "Lazy load services and use the DI system to create them.",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "injectAsync",
        "name": "injectAsync",
        "package": "@angular/core",
        "metadata": {
          "description": "Lazy load services and use the DI system to create them."
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "debounced",
      "package": "@angular/core",
      "description": "create a debounced version of a signal, represented as a Resource",
      "status": "stable",
      "introduced_in": "22",
      "removed_in": "",
      "v22": "stable",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "debounced",
        "name": "debounced",
        "package": "@angular/core",
        "metadata": {
          "description": "create a debounced version of a signal, represented as a Resource"
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": null
          },
          {
            "version": 18,
            "status": null
          },
          {
            "version": 19,
            "status": null
          },
          {
            "version": 20,
            "status": null
          },
          {
            "version": 21,
            "status": null
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b918beda323eefef17bf1de03fde3d402a3d4af0"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ChangeDetectorRef.checkNoChanges",
      "package": "@angular/core",
      "description": "Do a change detection run to make sure there were no changes.",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ChangeDetectorRefCheckNoChanges",
        "name": "ChangeDetectorRef.checkNoChanges",
        "package": "@angular/core",
        "metadata": {
          "description": "Do a change detection run to make sure there were no changes."
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable",
            "metadata": {
              "notes": "use fixture.detectChanges() instead",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/b918beda323eefef17bf1de03fde3d402a3d4af0"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ComponentFactoryResolver",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ComponentFactoryResolver",
        "name": "ComponentFactoryResolver",
        "package": "@angular/core",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ComponentFactory",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "ComponentFactory",
        "name": "ComponentFactory",
        "package": "@angular/core",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Webpack Builders",
      "package": "@angular-devkit/build-*",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "webpackBuilder",
        "name": "Webpack Builders",
        "package": "@angular-devkit/build-*",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "notes": "Migrate to the @angular/build builders (esbuild/application) for your application builds.",
              "links": [
                {
                  "type": 4,
                  "url": "https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CommonEngine",
      "package": "@angular/ssr",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "commonEngine",
        "name": "CommonEngine",
        "package": "@angular/ssr",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "deprecated",
            "metadata": {
              "notes": "Migrate to AngularNodeAppEngine or AngularAppEngine instead",
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Jest builder",
      "package": "@angular/devkit/build-angular:jest",
      "description": "",
      "status": "removed",
      "introduced_in": "16",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "experimental",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "jestBuilder",
        "name": "Jest builder",
        "package": "@angular/devkit/build-angular:jest",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": "experimental"
          },
          {
            "version": 17,
            "status": "experimental"
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Web Test Runner builder",
      "package": "@angular-devkit/build-angular:web-test-runner",
      "description": "",
      "status": "removed",
      "introduced_in": "17",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "experimental",
      "v19": "experimental",
      "v18": "experimental",
      "v17": "experimental",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "id": "webTestRunnerBuilder",
        "name": "Web Test Runner builder",
        "package": "@angular-devkit/build-angular:web-test-runner",
        "metadata": {
          "description": ""
        },
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": null
          },
          {
            "version": 15,
            "status": null
          },
          {
            "version": 16,
            "status": null
          },
          {
            "version": 17,
            "status": "experimental"
          },
          {
            "version": 18,
            "status": "experimental"
          },
          {
            "version": 19,
            "status": "experimental"
          },
          {
            "version": 20,
            "status": "experimental"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed",
            "metadata": {
              "links": [
                {
                  "type": 4,
                  "url": ""
                }
              ]
            }
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NoopAnimationDriver",
      "package": "@angular/animations/browser",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "NoopAnimationDriver",
        "package": "@angular/animations/browser",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "MockAnimationDriver",
      "package": "@angular/animations/browser/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "MockAnimationDriver",
        "package": "@angular/animations/browser/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "MockAnimationPlayer",
      "package": "@angular/animations/browser/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "MockAnimationPlayer",
        "package": "@angular/animations/browser/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "animate",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "animate",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "animateChild",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "animateChild",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimateChildOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimateChildOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimateTimings",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimateTimings",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "animation",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "animation",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationAnimateChildMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationAnimateChildMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationAnimateMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationAnimateMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationAnimateRefMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationAnimateRefMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationGroupMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationGroupMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationKeyframesSequenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationKeyframesSequenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationPlayer",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationPlayer",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationQueryMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationQueryMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationQueryOptions",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationQueryOptions",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationReferenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationReferenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationSequenceMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationSequenceMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationStaggerMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationStaggerMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationStateMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationStateMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationStyleMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationStyleMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationTransitionMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationTransitionMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AnimationTriggerMetadata",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AnimationTriggerMetadata",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "AUTO_STYLE",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "AUTO_STYLE",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "group",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "group",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "keyframes",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "keyframes",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NoopAnimationPlayer",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "NoopAnimationPlayer",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "query",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "query",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "sequence",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "sequence",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "stagger",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "stagger",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "state",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "state",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "style",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "style",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "transition",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "transition",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "trigger",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "trigger",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "useAnimation",
      "package": "@angular/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "useAnimation",
        "package": "@angular/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HttpClientJsonpModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HttpClientJsonpModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HttpClientModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HttpClientModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HttpClientXsrfModule",
      "package": "@angular/common/http",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HttpClientXsrfModule",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HttpClientTestingModule",
      "package": "@angular/common/http/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HttpClientTestingModule",
        "package": "@angular/common/http/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "DATE_PIPE_DEFAULT_TIMEZONE",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "DATE_PIPE_DEFAULT_TIMEZONE",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getCurrencySymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getCurrencySymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleCurrencyCode",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleCurrencyCode",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleCurrencyName",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleCurrencyName",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleCurrencySymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleCurrencySymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleDateFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleDateFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleDateTimeFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleDateTimeFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleDayNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleDayNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleDayPeriods",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleDayPeriods",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleDirection",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleDirection",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleEraNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleEraNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleExtraDayPeriodRules",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleExtraDayPeriodRules",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleExtraDayPeriods",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleExtraDayPeriods",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleFirstDayOfWeek",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleFirstDayOfWeek",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleId",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleId",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleMonthNames",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleMonthNames",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleNumberFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleNumberFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleNumberSymbol",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleNumberSymbol",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocalePluralCase",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocalePluralCase",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleTimeFormat",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleTimeFormat",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getLocaleWeekEndRange",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getLocaleWeekEndRange",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getNumberOfCurrencyDigits",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getNumberOfCurrencyDigits",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Time",
      "package": "@angular/common",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "Time",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "APP_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "APP_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "BootstrapOptions",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "BootstrapOptions",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Compiler",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "Compiler",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "DefaultIterableDiffer",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "DefaultIterableDiffer",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ENVIRONMENT_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ENVIRONMENT_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getModuleFactory",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getModuleFactory",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "PLATFORM_INITIALIZER",
      "package": "@angular/core",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "PLATFORM_INITIALIZER",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "JitCompilerFactory",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "JitCompilerFactory",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "platformBrowserDynamic",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "platformBrowserDynamic",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "BrowserDynamicTestingModule",
      "package": "@angular/platform-browser-dynamic/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "BrowserDynamicTestingModule",
        "package": "@angular/platform-browser-dynamic/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "platformBrowserDynamicTesting",
      "package": "@angular/platform-browser-dynamic/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "platformBrowserDynamicTesting",
        "package": "@angular/platform-browser-dynamic/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "BrowserAnimationsModule",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "BrowserAnimationsModule",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "BrowserAnimationsModuleConfig",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "BrowserAnimationsModuleConfig",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NoopAnimationsModule",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "NoopAnimationsModule",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideAnimations",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "provideAnimations",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideNoopAnimations",
      "package": "@angular/platform-browser/animations",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "not_available",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "provideNoopAnimations",
        "package": "@angular/platform-browser/animations",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20.2,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanActivate",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanActivate",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanActivateChild",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanActivateChild",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanDeactivate",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanDeactivate",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanLoad",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanLoad",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanLoadFn",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanLoadFn",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "CanMatch",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "CanMatch",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "DeprecatedGuard",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "DeprecatedGuard",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "DeprecatedResolve",
      "package": "@angular/router",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "DeprecatedResolve",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "Resolve",
      "package": "@angular/router",
      "description": "",
      "status": "stable",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "stable",
      "v18": "stable",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "Resolve",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "stable"
          },
          {
            "version": 21,
            "status": "stable"
          },
          {
            "version": 22,
            "status": "stable"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "RouterTestingModule",
      "package": "@angular/router/testing",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "not_available",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "RouterTestingModule",
        "package": "@angular/router/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "downgradeModule",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "deprecated",
      "introduced_in": "13.4",
      "removed_in": "",
      "v22": "deprecated",
      "v21": "not_available",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "not_available",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "downgradeModule",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13.4,
            "status": "deprecated"
          },
          {
            "version": 14.3,
            "status": "deprecated"
          },
          {
            "version": 15.2,
            "status": "deprecated"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18.2,
            "status": "deprecated"
          },
          {
            "version": 19.2,
            "status": "deprecated"
          },
          {
            "version": 20.3,
            "status": "deprecated"
          },
          {
            "version": 21.2,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "deprecated"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "createNgModuleRef",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "createNgModuleRef",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.1,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ModuleWithComponentFactories",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ModuleWithComponentFactories",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HAMMER_GESTURE_CONFIG",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HAMMER_GESTURE_CONFIG",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HAMMER_LOADER",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HAMMER_LOADER",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HammerGestureConfig",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HammerGestureConfig",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HammerLoader",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HammerLoader",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "HammerModule",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "stable",
      "v18": "stable",
      "v17": "stable",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "HammerModule",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "stable"
          },
          {
            "version": 18,
            "status": "stable"
          },
          {
            "version": 19,
            "status": "stable"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "provideRoutes",
      "package": "@angular/router",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "provideRoutes",
        "package": "@angular/router",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "getAngularLib",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "getAngularLib",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "setAngularLib",
      "package": "@angular/upgrade/static",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "22",
      "v22": "removed",
      "v21": "deprecated",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "setAngularLib",
        "package": "@angular/upgrade/static",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "deprecated"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ImportedNgModuleProviders",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "14",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ImportedNgModuleProviders",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": null
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NgProbeToken",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "stable",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "NgProbeToken",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "stable"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "PACKAGE_ROOT_URL",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "PACKAGE_ROOT_URL",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ApplicationConfig",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "13",
      "v22": "removed",
      "v21": "removed",
      "v20": "not_available",
      "v19": "not_available",
      "v18": "not_available",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ApplicationConfig",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "removed"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18.2,
            "status": "deprecated"
          },
          {
            "version": 19.2,
            "status": "deprecated"
          },
          {
            "version": 20.3,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "UpgradeAdapter",
      "package": "@angular/upgrade",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "UpgradeAdapter",
        "package": "@angular/upgrade",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "UpgradeAdapterRef",
      "package": "@angular/upgrade",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "21",
      "v22": "removed",
      "v21": "removed",
      "v20": "deprecated",
      "v19": "deprecated",
      "v18": "deprecated",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "UpgradeAdapterRef",
        "package": "@angular/upgrade",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "deprecated"
          },
          {
            "version": 19,
            "status": "deprecated"
          },
          {
            "version": 20,
            "status": "deprecated"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "isPlatformWorkerApp",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "isPlatformWorkerApp",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "isPlatformWorkerUi",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "isPlatformWorkerUi",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "async",
      "package": "@angular/core/testing",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "async",
        "package": "@angular/core/testing",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "RESOURCE_CACHE_PROVIDER",
      "package": "@angular/platform-browser-dynamic",
      "description": "",
      "status": "removed",
      "introduced_in": "13.2",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "RESOURCE_CACHE_PROVIDER",
        "package": "@angular/platform-browser-dynamic",
        "versions": [
          {
            "version": 13.2,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "makeStateKey",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "makeStateKey",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "StateKey",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "not_available",
      "v16": "not_available",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "StateKey",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16.2,
            "status": "deprecated"
          },
          {
            "version": 17.3,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "platformDynamicServer",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "stable",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "platformDynamicServer",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15,
            "status": "stable"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ServerTransferStateModule",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "18",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "deprecated",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ServerTransferStateModule",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.2,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "deprecated"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "setupTestingRouter",
      "package": "@angular/router/testing",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "not_available",
      "v14": "stable",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "setupTestingRouter",
        "package": "@angular/router/testing",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14,
            "status": "stable"
          },
          {
            "version": 15.1,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "UpdateActivatedEvent",
      "package": "@angular/service-worker",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "UpdateActivatedEvent",
        "package": "@angular/service-worker",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "UpdateAvailableEvent",
      "package": "@angular/service-worker",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "17",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "deprecated",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "UpdateAvailableEvent",
        "package": "@angular/service-worker",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "deprecated"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "XhrFactory",
      "package": "@angular/common/http",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "XhrFactory",
        "package": "@angular/common/http",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ANALYZE_FOR_ENTRY_COMPONENTS",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ANALYZE_FOR_ENTRY_COMPONENTS",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "ReflectiveKey",
      "package": "@angular/core",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "ReflectiveKey",
        "package": "@angular/core",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "BrowserTransferStateModule",
      "package": "@angular/platform-browser",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "not_available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "BrowserTransferStateModule",
        "package": "@angular/platform-browser",
        "versions": [
          {
            "version": 13,
            "status": "stable"
          },
          {
            "version": 14.2,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "renderModuleFactory",
      "package": "@angular/platform-server",
      "description": "",
      "status": "removed",
      "introduced_in": "13",
      "removed_in": "16",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "deprecated",
      "v14": "deprecated",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "renderModuleFactory",
        "package": "@angular/platform-server",
        "versions": [
          {
            "version": 13,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "deprecated"
          },
          {
            "version": 15,
            "status": "deprecated"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Diff",
      "name": "NgOptimizedImageModule",
      "package": "@angular/common",
      "description": "",
      "status": "removed",
      "introduced_in": "13.4",
      "removed_in": "14",
      "v22": "removed",
      "v21": "removed",
      "v20": "removed",
      "v19": "removed",
      "v18": "removed",
      "v17": "removed",
      "v16": "removed",
      "v15": "removed",
      "v14": "removed",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=diff",
      "angular_dev_url": "",
      "notes": "Derived from the Angular Courses diff/feature compatibility source.",
      "raw": {
        "name": "NgOptimizedImageModule",
        "package": "@angular/common",
        "versions": [
          {
            "version": 13.4,
            "status": "deprecated"
          },
          {
            "version": 14,
            "status": "removed"
          },
          {
            "version": 15,
            "status": "removed"
          },
          {
            "version": 16,
            "status": "removed"
          },
          {
            "version": 17,
            "status": "removed"
          },
          {
            "version": 18,
            "status": "removed"
          },
          {
            "version": 19,
            "status": "removed"
          },
          {
            "version": 20,
            "status": "removed"
          },
          {
            "version": 21,
            "status": "removed"
          },
          {
            "version": 22,
            "status": "removed"
          }
        ]
      }
    },
    {
      "section": "Migrations",
      "name": "common-to-standalone",
      "package": "@angular/core",
      "description": "Replaces CommonModule usage with individual imports from @angular/common",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/common-to-standalone",
      "notes": "command: ng generate @angular/core:common-to-standalone",
      "raw": {
        "index": 0,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/common-to-standalone"
          }
        ],
        "command": "ng generate @angular/core:common-to-standalone"
      }
    },
    {
      "section": "Migrations",
      "name": "router-testing-module",
      "package": "@angular/core",
      "description": "Convert deprecated RouterTestingModule usages to the recommended modern APIs.",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/router-testing-module-migration",
      "notes": "command: ng g @angular/core:router-testing-module-migration",
      "raw": {
        "index": 1,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/router-testing-module-migration"
          }
        ],
        "command": "ng g @angular/core:router-testing-module-migration"
      }
    },
    {
      "section": "Migrations",
      "name": "ngstyle-to-style",
      "package": "@angular/core",
      "description": "Convert NgStyle directive usages to style bindings .",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/ngstyle-to-style",
      "notes": "command: ng g @angular/core:ngstyle-to-style",
      "raw": {
        "index": 2,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/ngstyle-to-style"
          }
        ],
        "command": "ng g @angular/core:ngstyle-to-style"
      }
    },
    {
      "section": "Migrations",
      "name": "ngclass-to-class",
      "package": "@angular/core",
      "description": "Convert ngClass directive usages to class bindings.",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/ngclass-to-class",
      "notes": "command: ng g @angular/core:ngclass-to-class",
      "raw": {
        "index": 3,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/ngclass-to-class"
          }
        ],
        "command": "ng g @angular/core:ngclass-to-class"
      }
    },
    {
      "section": "Migrations",
      "name": "self-closing-tags",
      "package": "@angular/core",
      "description": "Convert component selectors in the templates to self-closing tags.",
      "status": "",
      "introduced_in": "19.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/self-closing-tags",
      "notes": "command: ng g @angular/core:self-closing-tag",
      "raw": {
        "index": 4,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/self-closing-tags"
          }
        ],
        "command": "ng g @angular/core:self-closing-tag"
      }
    },
    {
      "section": "Migrations",
      "name": "cleanup-unused-imports",
      "package": "@angular/core",
      "description": "Removes all unused standalone imports across the entire project.",
      "status": "",
      "introduced_in": "19.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/cleanup-unused-imports",
      "notes": "command: ng g @angular/core:cleanup-unused-imports",
      "raw": {
        "index": 5,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/cleanup-unused-imports"
          }
        ],
        "command": "ng g @angular/core:cleanup-unused-imports"
      }
    },
    {
      "section": "Migrations",
      "name": "signal-queries",
      "package": "@angular/core",
      "description": "Convert decorator queries to signal queries.",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/signal-queries",
      "notes": "command: ng g @angular/core:signal-queries-migration",
      "raw": {
        "index": 6,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/signal-queries"
          }
        ],
        "command": "ng g @angular/core:signal-queries-migration"
      }
    },
    {
      "section": "Migrations",
      "name": "output",
      "package": "@angular/core",
      "description": "Convert outputs from the decorator version to the output function.",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/outputs",
      "notes": "command: ng g @angular/core:output-migration",
      "raw": {
        "index": 7,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/outputs"
          }
        ],
        "command": "ng g @angular/core:output-migration"
      }
    },
    {
      "section": "Migrations",
      "name": "signal-input",
      "package": "@angular/core",
      "description": "Convert `@Input()` declarations to signal inputs.",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/signal-inputs",
      "notes": "command: ng g @angular/core:signal-input-migration",
      "raw": {
        "index": 8,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/signal-inputs"
          }
        ],
        "command": "ng g @angular/core:signal-input-migration"
      }
    },
    {
      "section": "Migrations",
      "name": "route-lazy-loading",
      "package": "@angular/core",
      "description": "Convert eagerly loaded component routes to lazy-loaded routes.",
      "status": "",
      "introduced_in": "18.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/route-lazy-loading",
      "notes": "command: ng g @angular/core:route-lazy-loading",
      "raw": {
        "index": 9,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/route-lazy-loading"
          }
        ],
        "command": "ng g @angular/core:route-lazy-loading"
      }
    },
    {
      "section": "Migrations",
      "name": "inject",
      "package": "@angular/core",
      "description": "Converts classes using constructor-based injection to the inject function.",
      "status": "",
      "introduced_in": "18.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/inject-function",
      "notes": "command: ng g @angular/core:inject",
      "raw": {
        "index": 10,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/inject-function"
          }
        ],
        "command": "ng g @angular/core:inject"
      }
    },
    {
      "section": "Migrations",
      "name": "control-flow",
      "package": "@angular/core",
      "description": "Replaces the existing usages of *ngIf, *ngFor, and *ngSwitch to their equivalent block syntax.",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/control-flow",
      "notes": "command: ng g @angular/core:control-flow",
      "raw": {
        "index": 11,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/control-flow"
          }
        ],
        "command": "ng g @angular/core:control-flow"
      }
    },
    {
      "section": "Migrations",
      "name": "standalone",
      "package": "@angular/core",
      "description": "Convert an application to standalone components, directives, and pipes.",
      "status": "",
      "introduced_in": "15.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=migrations",
      "angular_dev_url": "https://angular.dev/reference/migrations/standalone",
      "notes": "command: ng g @angular/core:standalone",
      "raw": {
        "index": 12,
        "links": [
          {
            "text": "Doc",
            "href": "https://angular.dev/reference/migrations/standalone"
          }
        ],
        "command": "ng g @angular/core:standalone"
      }
    },
    {
      "section": "Update",
      "name": "add-istanbul-instrumenter",
      "package": "angular-cli",
      "description": "Add 'istanbul-lib-instrument' to 'devDependencies' if Karma unit testing is used.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 0,
        "links": [
          {
            "text": "add-istanbul-instrumenter",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter"
          },
          {
            "text": "Add 'istanbul-lib-instrument' to 'devDependencies' if Karma unit testing is used.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-istanbul-instrumenter"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "can-match-snapshot-required",
      "package": "angular",
      "description": "Adds the required third argument to canMatch callsites.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 1,
        "links": [
          {
            "text": "can-match-snapshot-required",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required"
          },
          {
            "text": "Adds the required third argument to canMatch callsites.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-match-snapshot-required"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "change-detection-eager",
      "package": "angular",
      "description": "Adds `ChangeDetectionStrategy.Eager` to all components.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 2,
        "links": [
          {
            "text": "change-detection-eager",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager"
          },
          {
            "text": "Adds `ChangeDetectionStrategy.Eager` to all components.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/change-detection-eager"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "http-xhr-backend",
      "package": "angular",
      "description": "Adds 'withXhr' to 'provideHttpClient' function calls when the 'HttpXhrBackend' is used. For more information see: https://angular.dev/api/common/http/withXhr",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 3,
        "links": [
          {
            "text": "http-xhr-backend",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend"
          },
          {
            "text": "Adds 'withXhr' to 'provideHttpClient' function calls when the 'HttpXhrBackend' is used. For more information see: https://angular.dev/api/common/http/withXhr",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-xhr-backend"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "incremental-hydration",
      "package": "angular",
      "description": "Adds withNoIncrementalHydration() opt out to provideClientHydration() when incremental hydration is not enabled to retain pre-v22 behavior-.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 4,
        "links": [
          {
            "text": "incremental-hydration",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration"
          },
          {
            "text": "Adds withNoIncrementalHydration() opt out to provideClientHydration() when incremental hydration is not enabled to retain pre-v22 behavior-.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/incremental-hydration"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "migrate-karma-to-vitest",
      "package": "angular-cli",
      "description": "Migrate projects using legacy Karma unit-test builder to the new unit-test builder with Vitest.",
      "status": "optional",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "optional",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest",
      "angular_dev_url": "",
      "notes": "optional migration",
      "raw": {
        "index": 5,
        "links": [
          {
            "text": "migrate-karma-to-vitest",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest"
          },
          {
            "text": "Migrate projects using legacy Karma unit-test builder to the new unit-test builder with Vitest.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest"
          },
          {
            "text": "Yes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/migrate-karma-to-vitest"
          }
        ],
        "optional": "Yes"
      }
    },
    {
      "section": "Update",
      "name": "model-output",
      "package": "angular",
      "description": "Migrate broken duplicate outputs",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/model-output",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 6,
        "links": [
          {
            "text": "model-output",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/model-output"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/model-output"
          },
          {
            "text": "Migrate broken duplicate outputs",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/model-output"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/model-output"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/model-output"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "safe-optional-chaining",
      "package": "angular",
      "description": "Wraps optional chaining expressions in $safeNavigationMigration().",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 7,
        "links": [
          {
            "text": "safe-optional-chaining",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining"
          },
          {
            "text": "Wraps optional chaining expressions in $safeNavigationMigration().",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/safe-optional-chaining"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "strict-safe-navigation-narrow",
      "package": "angular",
      "description": "Disables the 'nullishCoalescingNotNullable & optionalChainNotNullable extended diagnostics.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 8,
        "links": [
          {
            "text": "strict-safe-navigation-narrow",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow"
          },
          {
            "text": "Disables the 'nullishCoalescingNotNullable & optionalChainNotNullable extended diagnostics.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-safe-navigation-narrow"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "strict-templates-default",
      "package": "angular",
      "description": "Adds 'strictTemplates: false' in tsconfig.json when not set.",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 9,
        "links": [
          {
            "text": "strict-templates-default",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default"
          },
          {
            "text": "Adds 'strictTemplates: false' in tsconfig.json when not set.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/strict-templates-default"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "trust-proxy-headers",
      "package": "angular-cli",
      "description": "Add 'trustProxyHeaders' configuration to 'AngularNodeAppEngine' or 'AngularAppEngine'. For more information see: https://angular.dev/best-practices/security#configuring-trusted-proxy-headers",
      "status": "",
      "introduced_in": "22.0.0",
      "removed_in": "",
      "v22": "available",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 10,
        "links": [
          {
            "text": "trust-proxy-headers",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers"
          },
          {
            "text": "Add 'trustProxyHeaders' configuration to 'AngularNodeAppEngine' or 'AngularAppEngine'. For more information see: https://angular.dev/best-practices/security#configuring-trusted-proxy-headers",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers"
          },
          {
            "text": "22.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/trust-proxy-headers"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "application-config-core",
      "package": "angular",
      "description": "Moves imports of `ApplicationConfig` from `@angular/platform-browser` to `@angular/core`",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 11,
        "links": [
          {
            "text": "application-config-core",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core"
          },
          {
            "text": "Moves imports of `ApplicationConfig` from `@angular/platform-browser` to `@angular/core`",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core"
          },
          {
            "text": "21.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/application-config-core"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "bootstrap-options-migration",
      "package": "angular",
      "description": "Migrates deprecated bootstrap options to providers.",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 12,
        "links": [
          {
            "text": "bootstrap-options-migration",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration"
          },
          {
            "text": "Migrates deprecated bootstrap options to providers.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration"
          },
          {
            "text": "21.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/bootstrap-options-migration"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-last-successful-navigation",
      "package": "angular",
      "description": "Ensures that the Router.lastSuccessfulNavigation signal is now invoked",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 13,
        "links": [
          {
            "text": "router-last-successful-navigation",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation"
          },
          {
            "text": "Ensures that the Router.lastSuccessfulNavigation signal is now invoked",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation"
          },
          {
            "text": "21.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-last-successful-navigation"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-typescript-lib",
      "package": "angular-cli",
      "description": "Updates the 'lib' property in tsconfig files to use 'es2022' or a more modern version.",
      "status": "",
      "introduced_in": "21.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 14,
        "links": [
          {
            "text": "update-typescript-lib",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib"
          },
          {
            "text": "Updates the 'lib' property in tsconfig files to use 'es2022' or a more modern version.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib"
          },
          {
            "text": "21.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-lib"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "add-bootstrap-context-to-server-main",
      "package": "angular",
      "description": "Adds `BootstrapContext` to `bootstrapApplication` calls in `main.server.ts` to support server rendering.",
      "status": "",
      "introduced_in": "20.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 15,
        "links": [
          {
            "text": "add-bootstrap-context-to-server-main",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main"
          },
          {
            "text": "Adds `BootstrapContext` to `bootstrapApplication` calls in `main.server.ts` to support server rendering.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main"
          },
          {
            "text": "20.3.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/add-bootstrap-context-to-server-main"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-default-karma-config",
      "package": "angular-cli",
      "description": "Remove any karma configuration files that only contain the default content. The default configuration is automatically available without a specific project file.",
      "status": "",
      "introduced_in": "20.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 16,
        "links": [
          {
            "text": "remove-default-karma-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config"
          },
          {
            "text": "Remove any karma configuration files that only contain the default content. The default configuration is automatically available without a specific project file.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config"
          },
          {
            "text": "20.2.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-karma-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-current-navigation",
      "package": "angular",
      "description": "Replaces usages of the deprecated Router.getCurrentNavigation method with the Router.currentNavigation signal",
      "status": "optional",
      "introduced_in": "20.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "optional",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation",
      "angular_dev_url": "",
      "notes": "optional migration",
      "raw": {
        "index": 17,
        "links": [
          {
            "text": "router-current-navigation",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation"
          },
          {
            "text": "Replaces usages of the deprecated Router.getCurrentNavigation method with the Router.currentNavigation signal",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation"
          },
          {
            "text": "20.2.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation"
          },
          {
            "text": "Yes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-current-navigation"
          }
        ],
        "optional": "Yes"
      }
    },
    {
      "section": "Update",
      "name": "control-flow-migration",
      "package": "angular",
      "description": "Converts the entire application to block control flow syntax",
      "status": "optional",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "optional",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration",
      "angular_dev_url": "",
      "notes": "optional migration",
      "raw": {
        "index": 18,
        "links": [
          {
            "text": "control-flow-migration",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration"
          },
          {
            "text": "Converts the entire application to block control flow syntax",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration"
          },
          {
            "text": "Yes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/control-flow-migration"
          }
        ],
        "optional": "Yes"
      }
    },
    {
      "section": "Update",
      "name": "document-core",
      "package": "angular",
      "description": "Moves imports of `DOCUMENT` from `@angular/common` to `@angular/core`",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/document-core",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 19,
        "links": [
          {
            "text": "document-core",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/document-core"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/document-core"
          },
          {
            "text": "Moves imports of `DOCUMENT` from `@angular/common` to `@angular/core`",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/document-core"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/document-core"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/document-core"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "inject-flags",
      "package": "angular",
      "description": "Replaces usages of the deprecated InjectFlags enum",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 20,
        "links": [
          {
            "text": "inject-flags",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags"
          },
          {
            "text": "Replaces usages of the deprecated InjectFlags enum",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/inject-flags"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "previous-style-guide",
      "package": "angular-cli",
      "description": "Update workspace generation defaults to maintain previous style guide behavior.",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 21,
        "links": [
          {
            "text": "previous-style-guide",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide"
          },
          {
            "text": "Update workspace generation defaults to maintain previous style guide behavior.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/previous-style-guide"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-provide-server-rendering-import",
      "package": "angular-cli",
      "description": "Migrate imports of 'provideServerRendering' from '@angular/platform-server' to '@angular/ssr'.",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 22,
        "links": [
          {
            "text": "replace-provide-server-rendering-import",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import"
          },
          {
            "text": "Migrate imports of 'provideServerRendering' from '@angular/platform-server' to '@angular/ssr'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-rendering-import"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-provide-server-routing",
      "package": "angular-cli",
      "description": "Migrate 'provideServerRendering' to use 'withRoutes', and remove 'provideServerRouting' and 'provideServerRoutesConfig' from '@angular/ssr'.",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 23,
        "links": [
          {
            "text": "replace-provide-server-routing",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing"
          },
          {
            "text": "Migrate 'provideServerRendering' to use 'withRoutes', and remove 'provideServerRouting' and 'provideServerRoutesConfig' from '@angular/ssr'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-provide-server-routing"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "test-bed-get",
      "package": "angular",
      "description": "Replaces usages of the deprecated TestBed.get method with TestBed.inject",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 24,
        "links": [
          {
            "text": "test-bed-get",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get"
          },
          {
            "text": "Replaces usages of the deprecated TestBed.get method with TestBed.inject",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/test-bed-get"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-module-resolution",
      "package": "angular-cli",
      "description": "Update 'moduleResolution' to 'bundler' in TypeScript configurations. You can read more about this, here: https://www.typescriptlang.org/tsconfig/#moduleResolution",
      "status": "",
      "introduced_in": "20.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 25,
        "links": [
          {
            "text": "update-module-resolution",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution"
          },
          {
            "text": "Update 'moduleResolution' to 'bundler' in TypeScript configurations. You can read more about this, here: https://www.typescriptlang.org/tsconfig/#moduleResolution",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution"
          },
          {
            "text": "20.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-resolution"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "explicit-standalone-flag",
      "package": "angular",
      "description": "Updates non-standalone Directives, Component and Pipes to 'standalone:false' and removes 'standalone:true' from those who are standalone",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 26,
        "links": [
          {
            "text": "explicit-standalone-flag",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag"
          },
          {
            "text": "Updates non-standalone Directives, Component and Pipes to 'standalone:false' and removes 'standalone:true' from those who are standalone",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag"
          },
          {
            "text": "19.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/explicit-standalone-flag"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "pending-tasks",
      "package": "angular",
      "description": "Updates ExperimentalPendingTasks to PendingTasks",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 27,
        "links": [
          {
            "text": "pending-tasks",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks"
          },
          {
            "text": "Updates ExperimentalPendingTasks to PendingTasks",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks"
          },
          {
            "text": "19.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/pending-tasks"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "provide-initializer",
      "package": "angular",
      "description": "Replaces `APP_INITIALIZER`, `ENVIRONMENT_INITIALIZER` & `PLATFORM_INITIALIZER` respectively with `provideAppInitializer`, `provideEnvironmentInitializer` & `providePlatformInitializer`.",
      "status": "optional",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "optional",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer",
      "angular_dev_url": "",
      "notes": "optional migration",
      "raw": {
        "index": 28,
        "links": [
          {
            "text": "provide-initializer",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer"
          },
          {
            "text": "Replaces `APP_INITIALIZER`, `ENVIRONMENT_INITIALIZER` & `PLATFORM_INITIALIZER` respectively with `provideAppInitializer`, `provideEnvironmentInitializer` & `providePlatformInitializer`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer"
          },
          {
            "text": "19.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer"
          },
          {
            "text": "Yes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/provide-initializer"
          }
        ],
        "optional": "Yes"
      }
    },
    {
      "section": "Update",
      "name": "update-ssr-imports",
      "package": "angular-cli",
      "description": "Update '@angular/ssr' import paths to use the new '/node' entry point when 'CommonEngine' is detected.",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 29,
        "links": [
          {
            "text": "update-ssr-imports",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports"
          },
          {
            "text": "Update '@angular/ssr' import paths to use the new '/node' entry point when 'CommonEngine' is detected.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports"
          },
          {
            "text": "19.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-ssr-imports"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "after-render-phase",
      "package": "angular",
      "description": "Updates calls to afterRender with an explicit phase to the new API",
      "status": "",
      "introduced_in": "18.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "available",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 30,
        "links": [
          {
            "text": "after-render-phase",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase"
          },
          {
            "text": "Updates calls to afterRender with an explicit phase to the new API",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase"
          },
          {
            "text": "18.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/after-render-phase"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "http-providers",
      "package": "angular",
      "description": "Replace deprecated HTTP related modules with provider functions",
      "status": "",
      "introduced_in": "18.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "available",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 31,
        "links": [
          {
            "text": "http-providers",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers"
          },
          {
            "text": "Replace deprecated HTTP related modules with provider functions",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers"
          },
          {
            "text": "18.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/http-providers"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "use-application-builder",
      "package": "angular-cli",
      "description": "Migrate application projects using '@angular-devkit/build-angular:browser' and '@angular-devkit/build-angular:browser-esbuild' to use the '@angular-devkit/build-angular:application' builder. Read more about this here: https://angular.dev/tools/cli/esbuild#using-the-application-builder",
      "status": "optional",
      "introduced_in": "18.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "optional",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder",
      "angular_dev_url": "",
      "notes": "optional migration",
      "raw": {
        "index": 32,
        "links": [
          {
            "text": "use-application-builder",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder"
          },
          {
            "text": "Migrate application projects using '@angular-devkit/build-angular:browser' and '@angular-devkit/build-angular:browser-esbuild' to use the '@angular-devkit/build-angular:application' builder. Read more about this here: https://angular.dev/tools/cli/esbuild#using-the-application-builder",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder"
          },
          {
            "text": "18.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder"
          },
          {
            "text": "Yes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/use-application-builder"
          }
        ],
        "optional": "Yes"
      }
    },
    {
      "section": "Update",
      "name": "invalid-two-way-bindings",
      "package": "angular",
      "description": "Updates two-way bindings that have an invalid expression to use the longform expression instead.",
      "status": "",
      "introduced_in": "17.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 33,
        "links": [
          {
            "text": "invalid-two-way-bindings",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings"
          },
          {
            "text": "Updates two-way bindings that have an invalid expression to use the longform expression instead.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings"
          },
          {
            "text": "17.3.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/invalid-two-way-bindings"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "add-browser-sync-dependency",
      "package": "angular-cli",
      "description": "Add 'browser-sync' as dev dependency when '@angular-devkit/build-angular:ssr-dev-server' is used, as it is no longer a direct dependency of '@angular-devkit/build-angular'.",
      "status": "",
      "introduced_in": "17.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 34,
        "links": [
          {
            "text": "add-browser-sync-dependency",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency"
          },
          {
            "text": "Add 'browser-sync' as dev dependency when '@angular-devkit/build-angular:ssr-dev-server' is used, as it is no longer a direct dependency of '@angular-devkit/build-angular'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency"
          },
          {
            "text": "17.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-browser-sync-dependency"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "block-template-entities",
      "package": "angular",
      "description": "Angular v17 introduces a new control flow syntax that uses the @ and } characters. This migration replaces the existing usages with their corresponding HTML entities.",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 35,
        "links": [
          {
            "text": "block-template-entities",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities"
          },
          {
            "text": "Angular v17 introduces a new control flow syntax that uses the @ and } characters. This migration replaces the existing usages with their corresponding HTML entities.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities"
          },
          {
            "text": "17.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/block-template-entities"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "compiler-options",
      "package": "angular",
      "description": "CompilerOption.useJit and CompilerOption.missingTranslation are unused under Ivy. This migration removes their usage",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 36,
        "links": [
          {
            "text": "compiler-options",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options"
          },
          {
            "text": "CompilerOption.useJit and CompilerOption.missingTranslation are unused under Ivy. This migration removes their usage",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options"
          },
          {
            "text": "17.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/compiler-options"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-nguniversal-builders",
      "package": "angular-cli",
      "description": "Replace usages of '@nguniversal/builders' with '@angular-devkit/build-angular'.",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 37,
        "links": [
          {
            "text": "replace-nguniversal-builders",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders"
          },
          {
            "text": "Replace usages of '@nguniversal/builders' with '@angular-devkit/build-angular'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders"
          },
          {
            "text": "17.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-builders"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-nguniversal-engines",
      "package": "angular-cli",
      "description": "Replace usages of '@nguniversal/' packages with '@angular/ssr'.",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 38,
        "links": [
          {
            "text": "replace-nguniversal-engines",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines"
          },
          {
            "text": "Replace usages of '@nguniversal/' packages with '@angular/ssr'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines"
          },
          {
            "text": "17.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-nguniversal-engines"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "transfer-state",
      "package": "angular",
      "description": "Updates `TransferState`, `makeStateKey`, `StateKey` imports from `@angular/platform-browser` to `@angular/core`.",
      "status": "",
      "introduced_in": "17.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 39,
        "links": [
          {
            "text": "transfer-state",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state"
          },
          {
            "text": "Updates `TransferState`, `makeStateKey`, `StateKey` imports from `@angular/platform-browser` to `@angular/core`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state"
          },
          {
            "text": "17.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/transfer-state"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "guard-and-resolve-interfaces",
      "package": "angular",
      "description": "In Angular version 15.2, the guard and resolver interfaces (CanActivate, Resolve, etc) were deprecated. This migration removes imports and 'implements' clauses that contain them.",
      "status": "",
      "introduced_in": "16.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 40,
        "links": [
          {
            "text": "guard-and-resolve-interfaces",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces"
          },
          {
            "text": "In Angular version 15.2, the guard and resolver interfaces (CanActivate, Resolve, etc) were deprecated. This migration removes imports and 'implements' clauses that contain them.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces"
          },
          {
            "text": "16.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/guard-and-resolve-interfaces"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-module-id",
      "package": "angular",
      "description": "As of Angular v16, the `moduleId` property of `@Component` is deprecated as it no longer has any effect.",
      "status": "",
      "introduced_in": "16.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 41,
        "links": [
          {
            "text": "remove-module-id",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id"
          },
          {
            "text": "As of Angular v16, the `moduleId` property of `@Component` is deprecated as it no longer has any effect.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id"
          },
          {
            "text": "16.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/remove-module-id"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-server-builder-config",
      "package": "angular-cli",
      "description": "Update the '@angular-devkit/build-angular:server' builder configuration to disable 'buildOptimizer' for non optimized builds.",
      "status": "",
      "introduced_in": "16.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 42,
        "links": [
          {
            "text": "update-server-builder-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config"
          },
          {
            "text": "Update the '@angular-devkit/build-angular:server' builder configuration to disable 'buildOptimizer' for non optimized builds.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config"
          },
          {
            "text": "16.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-server-builder-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "relative-link-resolution",
      "package": "angular",
      "description": "In Angular version 15, the deprecated `relativeLinkResolution` config parameter of the Router is removed. This migration removes all `relativeLinkResolution` fields from the Router config objects.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 43,
        "links": [
          {
            "text": "relative-link-resolution",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution"
          },
          {
            "text": "In Angular version 15, the deprecated `relativeLinkResolution` config parameter of the Router is removed. This migration removes all `relativeLinkResolution` fields from the Router config objects.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/relative-link-resolution"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-browserslist-config",
      "package": "angular-cli",
      "description": "Remove Browserslist configuration files that matches the Angular CLI default configuration.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 44,
        "links": [
          {
            "text": "remove-browserslist-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config"
          },
          {
            "text": "Remove Browserslist configuration files that matches the Angular CLI default configuration.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-browserslist-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-platform-server-exports",
      "package": "angular-cli",
      "description": "Remove exported `@angular/platform-server` `renderModule` method. The `renderModule` method is now exported by the Angular CLI.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 45,
        "links": [
          {
            "text": "remove-platform-server-exports",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports"
          },
          {
            "text": "Remove exported `@angular/platform-server` `renderModule` method. The `renderModule` method is now exported by the Angular CLI.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-platform-server-exports"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-link-with-href",
      "package": "angular",
      "description": "Since Angular v15, the `RouterLink` contains the logic of the `RouterLinkWithHref` directive. This migration replaces all `RouterLinkWithHref` references with `RouterLink`.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 46,
        "links": [
          {
            "text": "router-link-with-href",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href"
          },
          {
            "text": "Since Angular v15, the `RouterLink` contains the logic of the `RouterLinkWithHref` directive. This migration replaces all `RouterLinkWithHref` references with `RouterLink`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-with-href"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-karma-main-file",
      "package": "angular-cli",
      "description": "Remove no longer needed require calls in Karma builder main file.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 47,
        "links": [
          {
            "text": "update-karma-main-file",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file"
          },
          {
            "text": "Remove no longer needed require calls in Karma builder main file.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-karma-main-file"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-typescript-target",
      "package": "angular-cli",
      "description": "Update TypeScript compiler `target` and set `useDefineForClassFields`. These changes are for IDE purposes as TypeScript compiler options `target` and `useDefineForClassFields` are set to `ES2022` and `false` respectively by the Angular CLI. To control ECMA version and features use the Browerslist configuration.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 48,
        "links": [
          {
            "text": "update-typescript-target",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target"
          },
          {
            "text": "Update TypeScript compiler `target` and set `useDefineForClassFields`. These changes are for IDE purposes as TypeScript compiler options `target` and `useDefineForClassFields` are set to `ES2022` and `false` respectively by the Angular CLI. To control ECMA version and features use the Browerslist configuration.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-typescript-target"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-workspace-config",
      "package": "angular-cli",
      "description": "Remove options from 'angular.json' that are no longer supported by the official builders.",
      "status": "",
      "introduced_in": "15.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 49,
        "links": [
          {
            "text": "update-workspace-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config"
          },
          {
            "text": "Remove options from 'angular.json' that are no longer supported by the official builders.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config"
          },
          {
            "text": "15.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "path-match-type",
      "package": "angular",
      "description": "In Angular version 14, the `pathMatch` property of `Routes` was updated to be a strict union of the two valid options: `'full'|'prefix'`. `Routes` and `Route` variables need an explicit type so TypeScript does not infer the property as the looser `string`.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 50,
        "links": [
          {
            "text": "path-match-type",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type"
          },
          {
            "text": "In Angular version 14, the `pathMatch` property of `Routes` was updated to be a strict union of the two valid options: `'full'|'prefix'`. `Routes` and `Route` variables need an explicit type so TypeScript does not infer the property as the looser `string`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/path-match-type"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-default-project-option",
      "package": "angular-cli",
      "description": "Remove 'defaultProject' option from workspace configuration. The project to use will be determined from the current working directory.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 51,
        "links": [
          {
            "text": "remove-default-project-option",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option"
          },
          {
            "text": "Remove 'defaultProject' option from workspace configuration. The project to use will be determined from the current working directory.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-default-project-option"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-show-circular-dependencies-option",
      "package": "angular-cli",
      "description": "Remove 'showCircularDependencies' option from browser and server builders.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 52,
        "links": [
          {
            "text": "remove-show-circular-dependencies-option",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option"
          },
          {
            "text": "Remove 'showCircularDependencies' option from browser and server builders.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-show-circular-dependencies-option"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-default-collection-option",
      "package": "angular-cli",
      "description": "Replace 'defaultCollection' option in workspace configuration with 'schematicCollections'.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 53,
        "links": [
          {
            "text": "replace-default-collection-option",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option"
          },
          {
            "text": "Replace 'defaultCollection' option in workspace configuration with 'schematicCollections'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-default-collection-option"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "typed-forms",
      "package": "angular",
      "description": "As of Angular version 14, Forms model classes accept a type parameter, and existing usages must be opted out to preserve backwards-compatibility.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 54,
        "links": [
          {
            "text": "typed-forms",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms"
          },
          {
            "text": "As of Angular version 14, Forms model classes accept a type parameter, and existing usages must be opted out to preserve backwards-compatibility.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/typed-forms"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-angular-packages-version-prefix",
      "package": "angular-cli",
      "description": "Update Angular packages 'dependencies' and 'devDependencies' version prefix to '^' instead of '~'.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 55,
        "links": [
          {
            "text": "update-angular-packages-version-prefix",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix"
          },
          {
            "text": "Update Angular packages 'dependencies' and 'devDependencies' version prefix to '^' instead of '~'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-packages-version-prefix"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-libraries-secondary-entrypoints",
      "package": "angular-cli",
      "description": "Remove 'package.json' files from library projects secondary entrypoints.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 56,
        "links": [
          {
            "text": "update-libraries-secondary-entrypoints",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints"
          },
          {
            "text": "Remove 'package.json' files from library projects secondary entrypoints.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-secondary-entrypoints"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-tsconfig-target",
      "package": "angular-cli",
      "description": "Update TypeScript compilation target to 'ES2020'.",
      "status": "",
      "introduced_in": "14.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 57,
        "links": [
          {
            "text": "update-tsconfig-target",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target"
          },
          {
            "text": "Update TypeScript compilation target to 'ES2020'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target"
          },
          {
            "text": "14.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-tsconfig-target"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "entry-components",
      "package": "angular",
      "description": "As of Angular version 13, `entryComponents` are no longer necessary.",
      "status": "",
      "introduced_in": "13.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 58,
        "links": [
          {
            "text": "entry-components",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components"
          },
          {
            "text": "As of Angular version 13, `entryComponents` are no longer necessary.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components"
          },
          {
            "text": "13.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/entry-components"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "drop-ie-polyfills",
      "package": "angular-cli",
      "description": "Remove polyfills required only for Internet Explorer which is no longer supported.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 59,
        "links": [
          {
            "text": "drop-ie-polyfills",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills"
          },
          {
            "text": "Remove polyfills required only for Internet Explorer which is no longer supported.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/drop-ie-polyfills"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-link-empty-expression",
      "package": "angular",
      "description": "Migrates `[routerLink]=\"\"` in templates to `[routerLink]=\"[]\"` because these links are likely intended to route to the current page with updated fragment/query params.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 60,
        "links": [
          {
            "text": "router-link-empty-expression",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression"
          },
          {
            "text": "Migrates `[routerLink]=\"\"` in templates to `[routerLink]=\"[]\"` because these links are likely intended to route to the current page with updated fragment/query params.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-link-empty-expression"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "schematic-options-13",
      "package": "angular-cli",
      "description": "Remove no longer valid Angular schematic options from `angular.json`.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 61,
        "links": [
          {
            "text": "schematic-options-13",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13"
          },
          {
            "text": "Remove no longer valid Angular schematic options from `angular.json`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-13"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "testbed-teardown",
      "package": "angular",
      "description": "In Angular version 13, the `teardown` flag in `TestBed` will be enabled by default. This migration automatically opts out existing apps from the new teardown behavior.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 62,
        "links": [
          {
            "text": "testbed-teardown",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown"
          },
          {
            "text": "In Angular version 13, the `teardown` flag in `TestBed` will be enabled by default. This migration automatically opts out existing apps from the new teardown behavior.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/testbed-teardown"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-angular-config-v13",
      "package": "angular-cli",
      "description": "Remove deprecated options from 'angular.json' that are no longer present in v13.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 63,
        "links": [
          {
            "text": "update-angular-config-v13",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13"
          },
          {
            "text": "Remove deprecated options from 'angular.json' that are no longer present in v13.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v13"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-gitignore",
      "package": "angular-cli",
      "description": "Updating '.gitignore' to include '.angular/cache'.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 64,
        "links": [
          {
            "text": "update-gitignore",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore"
          },
          {
            "text": "Updating '.gitignore' to include '.angular/cache'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-gitignore"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-libraries-v13",
      "package": "angular-cli",
      "description": "Update library projects to be published in partial mode and removed deprecated options from ng-packagr configuration.",
      "status": "",
      "introduced_in": "13.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 65,
        "links": [
          {
            "text": "update-libraries-v13",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13"
          },
          {
            "text": "Update library projects to be published in partial mode and removed deprecated options from ng-packagr configuration.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13"
          },
          {
            "text": "13.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-v13"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-deprecated-prod-flag",
      "package": "angular-cli",
      "description": "Replace the deprecated '--prod' in package.json scripts.",
      "status": "",
      "introduced_in": "12.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 66,
        "links": [
          {
            "text": "replace-deprecated-prod-flag",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag"
          },
          {
            "text": "Replace the deprecated '--prod' in package.json scripts.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag"
          },
          {
            "text": "12.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-deprecated-prod-flag"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "deep-shadow-piercing-selector",
      "package": "angular",
      "description": "Automatically migrates shadow-piercing selector from `/deep/` to the recommanded alternative `::ng-deep`.",
      "status": "",
      "introduced_in": "12.0.2",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 67,
        "links": [
          {
            "text": "deep-shadow-piercing-selector",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector"
          },
          {
            "text": "Automatically migrates shadow-piercing selector from `/deep/` to the recommanded alternative `::ng-deep`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector"
          },
          {
            "text": "12.0.2",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/deep-shadow-piercing-selector"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "schematic-options-12",
      "package": "angular-cli",
      "description": "Remove invalid 'skipTests' option in '@schematics/angular:module' Angular schematic options.",
      "status": "",
      "introduced_in": "12.0.1",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 68,
        "links": [
          {
            "text": "schematic-options-12",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12"
          },
          {
            "text": "Remove invalid 'skipTests' option in '@schematics/angular:module' Angular schematic options.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12"
          },
          {
            "text": "12.0.1",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-12"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "activated-route-snapshot-fragment",
      "package": "angular",
      "description": "In Angular version 12, the type of ActivatedRouteSnapshot.fragment is nullable. This migration automatically adds non-null assertions to it.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 69,
        "links": [
          {
            "text": "activated-route-snapshot-fragment",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment"
          },
          {
            "text": "In Angular version 12, the type of ActivatedRouteSnapshot.fragment is nullable. This migration automatically adds non-null assertions to it.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/activated-route-snapshot-fragment"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "lazy-loading-string-syntax",
      "package": "angular-cli",
      "description": "Lazy loading syntax migration. Update lazy loading string syntax to use dynamic imports.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 70,
        "links": [
          {
            "text": "lazy-loading-string-syntax",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax"
          },
          {
            "text": "Lazy loading syntax migration. Update lazy loading string syntax to use dynamic imports.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-string-syntax"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-deprecated-i18n-options",
      "package": "angular-cli",
      "description": "Remove deprecated ViewEngine-based i18n build and extract options. Options present in the configuration will be converted to use non-deprecated options.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 71,
        "links": [
          {
            "text": "remove-deprecated-i18n-options",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options"
          },
          {
            "text": "Remove deprecated ViewEngine-based i18n build and extract options. Options present in the configuration will be converted to use non-deprecated options.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-deprecated-i18n-options"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-emit-decorator-metadata",
      "package": "angular-cli",
      "description": "Remove 'emitDecoratorMetadata' TypeScript compiler option. Decorator metadata is no longer needed by Angular. Read more about this here: https://www.typescriptlang.org/docs/handbook/decorators.html#metadata",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 72,
        "links": [
          {
            "text": "remove-emit-decorator-metadata",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata"
          },
          {
            "text": "Remove 'emitDecoratorMetadata' TypeScript compiler option. Decorator metadata is no longer needed by Angular. Read more about this here: https://www.typescriptlang.org/docs/handbook/decorators.html#metadata",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-emit-decorator-metadata"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-angular-config-v12",
      "package": "angular-cli",
      "description": "Remove deprecated options from 'angular.json' that are no longer present in v12.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 73,
        "links": [
          {
            "text": "update-angular-config-v12",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12"
          },
          {
            "text": "Remove deprecated options from 'angular.json' that are no longer present in v12.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v12"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-web-workers-webpack-5",
      "package": "angular-cli",
      "description": "Updates Web Worker consumer usage to use the new syntax supported directly by Webpack 5.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 74,
        "links": [
          {
            "text": "update-web-workers-webpack-5",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5"
          },
          {
            "text": "Updates Web Worker consumer usage to use the new syntax supported directly by Webpack 5.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-web-workers-webpack-5"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-zonejs",
      "package": "angular-cli",
      "description": "Update 'zone.js' to version 0.11.x. Read more about this here: https://github.com/angular/angular/blob/master/packages/zone.js/CHANGELOG.md#breaking-changes-since-zonejs-v0111",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 75,
        "links": [
          {
            "text": "update-zonejs",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs"
          },
          {
            "text": "Update 'zone.js' to version 0.11.x. Read more about this here: https://github.com/angular/angular/blob/master/packages/zone.js/CHANGELOG.md#breaking-changes-since-zonejs-v0111",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-zonejs"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "xhr-factory",
      "package": "angular",
      "description": "`XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 76,
        "links": [
          {
            "text": "xhr-factory",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory"
          },
          {
            "text": "`XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory"
          },
          {
            "text": "12.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/xhr-factory"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "can-activate-with-redirect-to",
      "package": "angular",
      "description": "Removes `canActivate` from a `Route` config when `redirectTo` is also present",
      "status": "",
      "introduced_in": "11.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 77,
        "links": [
          {
            "text": "can-activate-with-redirect-to",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to"
          },
          {
            "text": "Removes `canActivate` from a `Route` config when `redirectTo` is also present",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to"
          },
          {
            "text": "11.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/can-activate-with-redirect-to"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "abstract-control-parent",
      "package": "angular",
      "description": "In Angular version 11, the type of `AbstractControl.parent` can be `null` to reflect the runtime value more accurately. This migration automatically adds non-null assertions to existing accesses of the `parent` property on types like `FormControl`, `FormArray` and `FormGroup`.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 78,
        "links": [
          {
            "text": "abstract-control-parent",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent"
          },
          {
            "text": "In Angular version 11, the type of `AbstractControl.parent` can be `null` to reflect the runtime value more accurately. This migration automatically adds non-null assertions to existing accesses of the `parent` property on types like `FormControl`, `FormArray` and `FormGroup`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/abstract-control-parent"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "add-declaration-map-compiler-option",
      "package": "angular-cli",
      "description": "Add 'declarationMap' compiler options for non production library builds.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 79,
        "links": [
          {
            "text": "add-declaration-map-compiler-option",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option"
          },
          {
            "text": "Add 'declarationMap' compiler options for non production library builds.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/add-declaration-map-compiler-option"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "native-view-encapsulation",
      "package": "angular",
      "description": "ViewEncapsulation.Native has been removed as of Angular version 11. This migration replaces any usages with ViewEncapsulation.ShadowDom.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 80,
        "links": [
          {
            "text": "native-view-encapsulation",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation"
          },
          {
            "text": "ViewEncapsulation.Native has been removed as of Angular version 11. This migration replaces any usages with ViewEncapsulation.ShadowDom.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/native-view-encapsulation"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "navigation-extras-omissions",
      "package": "angular",
      "description": "NavigationExtras omissions migration. In version 11, some unsupported properties were omitted from the `extras` parameter of the `Router.navigateByUrl` and `Router.createUrlTree` methods.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 81,
        "links": [
          {
            "text": "navigation-extras-omissions",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions"
          },
          {
            "text": "NavigationExtras omissions migration. In version 11, some unsupported properties were omitted from the `extras` parameter of the `Router.navigateByUrl` and `Router.createUrlTree` methods.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/navigation-extras-omissions"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "replace-ng-packagr-builder",
      "package": "angular-cli",
      "description": "Replace deprecated library builder '@angular-devkit/build-ng-packagr'.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 82,
        "links": [
          {
            "text": "replace-ng-packagr-builder",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder"
          },
          {
            "text": "Replace deprecated library builder '@angular-devkit/build-ng-packagr'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/replace-ng-packagr-builder"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-initial-navigation-options",
      "package": "angular",
      "description": "Updates the `initialNavigation` property for `RouterModule.forRoot`.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 83,
        "links": [
          {
            "text": "router-initial-navigation-options",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options"
          },
          {
            "text": "Updates the `initialNavigation` property for `RouterModule.forRoot`.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-initial-navigation-options"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-preserve-query-params",
      "package": "angular",
      "description": "NavigationExtras.preserveQueryParams has been removed as of Angular version 11. This migration replaces any usages with the appropriate assignment of the queryParamsHandler key.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 84,
        "links": [
          {
            "text": "router-preserve-query-params",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params"
          },
          {
            "text": "NavigationExtras.preserveQueryParams has been removed as of Angular version 11. This migration replaces any usages with the appropriate assignment of the queryParamsHandler key.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-preserve-query-params"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "router-relative-link-resolution-default",
      "package": "angular",
      "description": "The default value for `relativeLinkResolution` is changing from 'legacy' to 'corrected'. This migration updates `RouterModule` configurations that use the default value to now specifically use 'legacy' to prevent breakages when updating.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 85,
        "links": [
          {
            "text": "router-relative-link-resolution-default",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default"
          },
          {
            "text": "The default value for `relativeLinkResolution` is changing from 'legacy' to 'corrected'. This migration updates `RouterModule` configurations that use the default value to now specifically use 'legacy' to prevent breakages when updating.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/router-relative-link-resolution-default"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-angular-config-v11",
      "package": "angular-cli",
      "description": "Remove deprecated options from 'angular.json' that are no longer present in v11.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 86,
        "links": [
          {
            "text": "update-angular-config-v11",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11"
          },
          {
            "text": "Remove deprecated options from 'angular.json' that are no longer present in v11.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config-v11"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-workspace-dependencies-v11",
      "package": "angular-cli",
      "description": "Update workspace dependencies to match a new v11 project.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 87,
        "links": [
          {
            "text": "update-workspace-dependencies-v11",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11"
          },
          {
            "text": "Update workspace dependencies to match a new v11 project.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies-v11"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "wait-for-async",
      "package": "angular",
      "description": "`async` to `waitForAsync` migration. The `async` testing function has been renamed to `waitForAsync` to avoid confusion with the native `async` keyword.",
      "status": "",
      "introduced_in": "11.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 88,
        "links": [
          {
            "text": "wait-for-async",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async"
          },
          {
            "text": "`async` to `waitForAsync` migration. The `async` testing function has been renamed to `waitForAsync` to avoid confusion with the native `async` keyword.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async"
          },
          {
            "text": "11.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/wait-for-async"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-solution-style-tsconfig",
      "package": "angular-cli",
      "description": "Removing \"Solution Style\" TypeScript configuration file support.",
      "status": "",
      "introduced_in": "10.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 89,
        "links": [
          {
            "text": "remove-solution-style-tsconfig",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig"
          },
          {
            "text": "Removing \"Solution Style\" TypeScript configuration file support.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig"
          },
          {
            "text": "10.1.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-solution-style-tsconfig"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-module-and-target-compiler-options",
      "package": "angular-cli",
      "description": "Update 'module' and 'target' TypeScript compiler options. Read more about this here: https://v10.angular.io/guide/migration-update-module-and-target-compiler-options",
      "status": "",
      "introduced_in": "10.0.1",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 90,
        "links": [
          {
            "text": "update-module-and-target-compiler-options",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options"
          },
          {
            "text": "Update 'module' and 'target' TypeScript compiler options. Read more about this here: https://v10.angular.io/guide/migration-update-module-and-target-compiler-options",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options"
          },
          {
            "text": "10.0.1",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-module-and-target-compiler-options"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "remove-es5-browser-support-option",
      "package": "angular-cli",
      "description": "Remove deprecated 'es5BrowserSupport' browser builder option. The inclusion for ES5 polyfills will be determined from the browsers listed in the browserslist configuration.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 91,
        "links": [
          {
            "text": "remove-es5-browser-support-option",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option"
          },
          {
            "text": "Remove deprecated 'es5BrowserSupport' browser builder option. The inclusion for ES5 polyfills will be determined from the browsers listed in the browserslist configuration.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/remove-es5-browser-support-option"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "rename-browserslist-config",
      "package": "angular-cli",
      "description": "Update Browserslist configuration file name to '.browserslistrc' from deprecated 'browserslist'.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 92,
        "links": [
          {
            "text": "rename-browserslist-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config"
          },
          {
            "text": "Update Browserslist configuration file name to '.browserslistrc' from deprecated 'browserslist'.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/rename-browserslist-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "schematic-options-10",
      "package": "angular-cli",
      "description": "Replace deprecated and removed 'styleext' and 'spec' Angular schematic options with 'style' and 'skipTests', respectively.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 93,
        "links": [
          {
            "text": "schematic-options-10",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10"
          },
          {
            "text": "Replace deprecated and removed 'styleext' and 'spec' Angular schematic options with 'style' and 'skipTests', respectively.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-10"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "tslint-add-deprecation-rule",
      "package": "angular-cli",
      "description": "Add the tslint deprecation rule to tslint JSON configuration files.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 94,
        "links": [
          {
            "text": "tslint-add-deprecation-rule",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule"
          },
          {
            "text": "Add the tslint deprecation rule to tslint JSON configuration files.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-add-deprecation-rule"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "tslint-version-6",
      "package": "angular-cli",
      "description": "Update tslint to version 6 and adjust rules to maintain existing behavior.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 95,
        "links": [
          {
            "text": "tslint-version-6",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6"
          },
          {
            "text": "Update tslint to version 6 and adjust rules to maintain existing behavior.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/tslint-version-6"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-angular-config",
      "package": "angular-cli",
      "description": "Remove deprecated options from 'angular.json' that are no longer present in v10.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 96,
        "links": [
          {
            "text": "update-angular-config",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config"
          },
          {
            "text": "Remove deprecated options from 'angular.json' that are no longer present in v10.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-angular-config"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-libraries-tslib",
      "package": "angular-cli",
      "description": "Update library projects to use tslib version 2 as a direct dependency. Read more about this here: https://v10.angular.io/guide/migration-update-libraries-tslib",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 97,
        "links": [
          {
            "text": "update-libraries-tslib",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib"
          },
          {
            "text": "Update library projects to use tslib version 2 as a direct dependency. Read more about this here: https://v10.angular.io/guide/migration-update-libraries-tslib",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-libraries-tslib"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "update-workspace-dependencies",
      "package": "angular-cli",
      "description": "Update workspace dependencies to match a new v10 project.",
      "status": "",
      "introduced_in": "10.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 98,
        "links": [
          {
            "text": "update-workspace-dependencies",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies"
          },
          {
            "text": "Update workspace dependencies to match a new v10 project.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies"
          },
          {
            "text": "10.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/update-workspace-dependencies"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "schematic-options-9",
      "package": "angular-cli",
      "description": "Replace deprecated 'styleext' and 'spec' Angular schematic options.",
      "status": "",
      "introduced_in": "9.0.2",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 99,
        "links": [
          {
            "text": "schematic-options-9",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9"
          },
          {
            "text": "Replace deprecated 'styleext' and 'spec' Angular schematic options.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9"
          },
          {
            "text": "9.0.2",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/schematic-options-9"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "dynamic-queries",
      "package": "angular",
      "description": "Static flag migration. Removes the `static` flag from dynamic queries. As of Angular 9, the \"static\" flag defaults to false and is no longer required for your view and content queries. Read more about this here: https://v9.angular.io/guide/migration-dynamic-flag",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 100,
        "links": [
          {
            "text": "dynamic-queries",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries"
          },
          {
            "text": "Static flag migration. Removes the `static` flag from dynamic queries. As of Angular 9, the \"static\" flag defaults to false and is no longer required for your view and content queries. Read more about this here: https://v9.angular.io/guide/migration-dynamic-flag",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/dynamic-queries"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "lazy-loading-syntax",
      "package": "angular-cli",
      "description": "Lazy loading syntax migration. Update lazy loading syntax to use dynamic imports.",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 101,
        "links": [
          {
            "text": "lazy-loading-syntax",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax"
          },
          {
            "text": "Lazy loading syntax migration. Update lazy loading syntax to use dynamic imports.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/lazy-loading-syntax"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "missing-injectable",
      "package": "angular",
      "description": "Missing @Injectable and incomplete provider definition migration. In Angular 9, enforcement of @Injectable decorators for DI is a bit stricter and incomplete provider definitions behave differently. Read more about this here: https://v9.angular.io/guide/migration-injectable",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 102,
        "links": [
          {
            "text": "missing-injectable",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable"
          },
          {
            "text": "Missing @Injectable and incomplete provider definition migration. In Angular 9, enforcement of @Injectable decorators for DI is a bit stricter and incomplete provider definitions behave differently. Read more about this here: https://v9.angular.io/guide/migration-injectable",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/missing-injectable"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "module-with-providers",
      "package": "angular",
      "description": "ModuleWithProviders migration. In Angular 9, the ModuleWithProviders type without a generic has been deprecated. This migration adds the generic where it is missing. Read more about this here: https://v9.angular.io/guide/migration-module-with-providers",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 103,
        "links": [
          {
            "text": "module-with-providers",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers"
          },
          {
            "text": "ModuleWithProviders migration. In Angular 9, the ModuleWithProviders type without a generic has been deprecated. This migration adds the generic where it is missing. Read more about this here: https://v9.angular.io/guide/migration-module-with-providers",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/module-with-providers"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "renderer-to-renderer2",
      "package": "angular",
      "description": "Migrates usages of Renderer to Renderer2",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 104,
        "links": [
          {
            "text": "renderer-to-renderer2",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2"
          },
          {
            "text": "Migrates usages of Renderer to Renderer2",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/renderer-to-renderer2"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "undecorated-classes-with-decorated-fields",
      "package": "angular",
      "description": "Undecorated classes with decorated fields migration. As of Angular 9, it is no longer supported to have Angular field decorators on a class that does not have an Angular decorator. Read more about this here: https://v9.angular.io/guide/migration-undecorated-classes",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 105,
        "links": [
          {
            "text": "undecorated-classes-with-decorated-fields",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields"
          },
          {
            "text": "Undecorated classes with decorated fields migration. As of Angular 9, it is no longer supported to have Angular field decorators on a class that does not have an Angular decorator. Read more about this here: https://v9.angular.io/guide/migration-undecorated-classes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-decorated-fields"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "undecorated-classes-with-di",
      "package": "angular",
      "description": "Undecorated classes with DI migration. As of Angular 9, it is no longer supported to use Angular DI on a class that does not have an Angular decorator. Read more about this here: https://v9.angular.io/guide/migration-undecorated-classes",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 106,
        "links": [
          {
            "text": "undecorated-classes-with-di",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di"
          },
          {
            "text": "Undecorated classes with DI migration. As of Angular 9, it is no longer supported to use Angular DI on a class that does not have an Angular decorator. Read more about this here: https://v9.angular.io/guide/migration-undecorated-classes",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/undecorated-classes-with-di"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "workspace-version-9",
      "package": "angular-cli",
      "description": "Angular Workspace migration. Update an Angular CLI workspace to version 9.",
      "status": "",
      "introduced_in": "9.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 107,
        "links": [
          {
            "text": "workspace-version-9",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9"
          },
          {
            "text": "Angular Workspace migration. Update an Angular CLI workspace to version 9.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9"
          },
          {
            "text": "9.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/workspace-version-9"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "move-document",
      "package": "angular",
      "description": "Migrates DOCUMENT Injection token from platform-browser imports to common import",
      "status": "",
      "introduced_in": "8.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/move-document",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 108,
        "links": [
          {
            "text": "move-document",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/move-document"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/move-document"
          },
          {
            "text": "Migrates DOCUMENT Injection token from platform-browser imports to common import",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/move-document"
          },
          {
            "text": "8.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/move-document"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/move-document"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "static-queries",
      "package": "angular",
      "description": "Migrates ViewChild and ContentChild to explicit query timing",
      "status": "",
      "introduced_in": "8.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 109,
        "links": [
          {
            "text": "static-queries",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries"
          },
          {
            "text": "Migrates ViewChild and ContentChild to explicit query timing",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries"
          },
          {
            "text": "8.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/static-queries"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "template-local-variables",
      "package": "angular",
      "description": "Warns developers if values are assigned to template variables",
      "status": "",
      "introduced_in": "8.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 110,
        "links": [
          {
            "text": "template-local-variables",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables"
          },
          {
            "text": "angular",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables"
          },
          {
            "text": "Warns developers if values are assigned to template variables",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables"
          },
          {
            "text": "8.0.0",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular/template-local-variables"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "Update",
      "name": "production-by-default",
      "package": "angular-cli",
      "description": "Optional migration to update Angular CLI workspace configurations to 'production' mode by default.",
      "status": "",
      "introduced_in": "",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default",
      "angular_dev_url": "",
      "notes": "",
      "raw": {
        "index": 111,
        "links": [
          {
            "text": "production-by-default",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default"
          },
          {
            "text": "angular-cli",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default"
          },
          {
            "text": "Optional migration to update Angular CLI workspace configurations to 'production' mode by default.",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default"
          },
          {
            "text": "",
            "href": "https://www.angular.courses/caniuse/update/migrations/angular-cli/production-by-default"
          }
        ],
        "optional": ""
      }
    },
    {
      "section": "MCP",
      "name": "ai_tutor",
      "package": "tool",
      "description": "Acts as a RAG (Retrieval-Augmented Generation) source, effectively reprogramming the assistant to become a specialized Angular tutor by providing it with a new core identity and knowledge base.",
      "status": "stable",
      "introduced_in": "21",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 0,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "get_best_practices",
      "package": "tool",
      "description": "Retrieves the official Angular Best Practices Guide.",
      "status": "stable",
      "introduced_in": "20.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 1,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "stable",
            "label": "20.2",
            "aria": "stable feature in version 20.2",
            "version": "20.2"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "search_documentation",
      "package": "tool",
      "description": "concise and specific search query for the Angular documentation.",
      "status": "stable",
      "introduced_in": "20.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 2,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "stable",
            "label": "20.2",
            "aria": "stable feature in version 20.2",
            "version": "20.2"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "find_examples",
      "package": "tool",
      "description": "Provides Angular code examples to improve the generated code quality output.",
      "status": "stable",
      "introduced_in": "20.2",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "experimental",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 3,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "experimental",
            "label": "20.2",
            "aria": "experimental feature in version 20.2",
            "version": "20.2"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "list_projects",
      "package": "tool",
      "description": "Provides a comprehensive overview of all Angular workspaces and projects within the repository.",
      "status": "stable",
      "introduced_in": "20.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 4,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "stable",
            "label": "20.1",
            "aria": "stable feature in version 20.1",
            "version": "20.1"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "modernize",
      "package": "tool",
      "description": "Provides instructions and commands for modernizing Angular code to align with the latest best practices and syntax.",
      "status": "experimental",
      "introduced_in": "20.2",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "experimental",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 5,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "experimental",
            "label": "20.2",
            "aria": "experimental feature in version 20.2",
            "version": "20.2"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "onpush-zoneless-migration",
      "package": "tool",
      "description": "Analyzes Angular code and provides a step-by-step, iterative plan to migrate it to OnPush change detection, a prerequisite for a zoneless application.",
      "status": "stable",
      "introduced_in": "20.3",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "experimental",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 6,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "21.1",
            "aria": "stable feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "experimental",
            "label": "20.3",
            "aria": "experimental feature in version 20.3",
            "version": "20.3"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "instructions",
      "package": "resource",
      "description": "Comprehensive guide detailing Angular's best practices for code generation and development.",
      "status": "stable",
      "introduced_in": "20.1",
      "removed_in": "",
      "v22": "stable",
      "v21": "stable",
      "v20": "stable",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 7,
        "byVersion": {
          "v22": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "stable",
            "label": "",
            "aria": "stable feature in version 21",
            "version": "21"
          },
          "v20": {
            "status": "stable",
            "label": "20.1",
            "aria": "stable feature in version 20.1",
            "version": "20.1"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "test",
      "package": "tool",
      "description": "Perform a one-off, non-watched unit test execution with ng test.",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 8,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "e2e",
      "package": "tool",
      "description": "Perform an end-to-end test with ng e2e.",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 9,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "build",
      "package": "tool",
      "description": "Perform a one-off, non-watched build using \"ng build\".",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 10,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "devserver.start",
      "package": "tool",
      "description": "Starts the Angular development server (\"ng serve\") as a background process.",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 11,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "devserver.stop",
      "package": "tool",
      "description": "Stops a running Angular development server (\"ng serve\") that was started with the \"start_devserver\" tool.",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 12,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "MCP",
      "name": "devserver.wait_for_build",
      "package": "tool",
      "description": "Waits for a dev server that was started with the \"start_devserver\" tool to complete its build.",
      "status": "experimental",
      "introduced_in": "21.1",
      "removed_in": "",
      "v22": "experimental",
      "v21": "experimental",
      "v20": "not_available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=mcp",
      "angular_dev_url": "",
      "notes": "No per-item link exposed in rendered row; source tab URL recorded.",
      "raw": {
        "index": 13,
        "byVersion": {
          "v22": {
            "status": "experimental",
            "label": "",
            "aria": "experimental feature in version 22",
            "version": "22"
          },
          "v21": {
            "status": "experimental",
            "label": "21.1",
            "aria": "experimental feature in version 21.1",
            "version": "21.1"
          },
          "v20": {
            "status": "not_available",
            "label": "",
            "aria": "Feature not available in version 20",
            "version": "20"
          }
        }
      }
    },
    {
      "section": "ESLint",
      "name": "contextual-lifecycle",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that lifecycle methods are used in a correct context",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-lifecycle.md",
      "notes": "",
      "raw": {
        "name": "contextual-lifecycle",
        "description": "Ensures that lifecycle methods are used in a correct context",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-lifecycle.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-async-lifecycle-method",
      "package": "angular-eslint/eslint-plugin",
      "description": "Angular Lifecycle methods should not be async. Angular does not wait for async lifecycle but the code incorrectly suggests it does.",
      "status": "",
      "introduced_in": "17.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-async-lifecycle-method.md",
      "notes": "",
      "raw": {
        "name": "no-async-lifecycle-method",
        "description": "Angular Lifecycle methods should not be async. Angular does not wait for async lifecycle but the code incorrectly suggests it does.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-async-lifecycle-method.md",
        "version": "17.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-attribute-decorator",
      "package": "angular-eslint/eslint-plugin",
      "description": "The @Attribute decorator is used to obtain a single value for an attribute. This is a much less common use case than getting a stream of values (using @Input), so the @Attribute decorator is often mistakenly used when @Input is intended. This rule disallows the usage of @Attribute decorator entirely to prevent these mistakes.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-attribute-decorator.md",
      "notes": "",
      "raw": {
        "name": "no-attribute-decorator",
        "description": "The @Attribute decorator is used to obtain a single value for an attribute. This is a much less common use case than getting a stream of values (using @Input), so the @Attribute decorator is often mistakenly used when @Input is intended. This rule disallows the usage of @Attribute decorator entirely to prevent these mistakes.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-attribute-decorator.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-developer-preview",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallow using code which is marked as developer preview",
      "status": "",
      "introduced_in": "20.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-developer-preview.md",
      "notes": "",
      "raw": {
        "name": "no-developer-preview",
        "description": "Disallow using code which is marked as developer preview",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-developer-preview.md",
        "version": "20.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-experimental",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallow using code which is marked as experimental",
      "status": "",
      "introduced_in": "20.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-experimental.md",
      "notes": "",
      "raw": {
        "name": "no-experimental",
        "description": "Disallow using code which is marked as experimental",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-experimental.md",
        "version": "20.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "require-lifecycle-on-prototype",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that lifecycle methods are defined on the object's prototype instead of on an instance.",
      "status": "",
      "introduced_in": "19.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md",
      "notes": "",
      "raw": {
        "name": "require-lifecycle-on-prototype",
        "description": "Ensures that lifecycle methods are defined on the object's prototype instead of on an instance.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md",
        "version": "19.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "sort-lifecycle-methods",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that lifecycle methods are declared in order of execution",
      "status": "",
      "introduced_in": "16.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-lifecycle-methods.md",
      "notes": "",
      "raw": {
        "name": "sort-lifecycle-methods",
        "description": "Ensures that lifecycle methods are declared in order of execution",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-lifecycle-methods.md",
        "version": "16.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "component-class-suffix",
      "package": "angular-eslint/eslint-plugin",
      "description": "Classes decorated with @Component must have suffix \"Component\" (or custom) in their name. Note: As of v20, this is no longer recommended by the Angular Team.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-class-suffix.md",
      "notes": "",
      "raw": {
        "name": "component-class-suffix",
        "description": "Classes decorated with @Component must have suffix \"Component\" (or custom) in their name. Note: As of v20, this is no longer recommended by the Angular Team.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-class-suffix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "component-max-inline-declarations",
      "package": "angular-eslint/eslint-plugin",
      "description": "Enforces a maximum number of lines in inline template, styles and animations.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-max-inline-declarations.md",
      "notes": "",
      "raw": {
        "name": "component-max-inline-declarations",
        "description": "Enforces a maximum number of lines in inline template, styles and animations.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-max-inline-declarations.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "component-selector",
      "package": "angular-eslint/eslint-plugin",
      "description": "Component selectors should follow given naming rules. See more at https://angular.dev/style-guide#choosing-component-selectors.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-selector.md",
      "notes": "",
      "raw": {
        "name": "component-selector",
        "description": "Component selectors should follow given naming rules. See more at https://angular.dev/style-guide#choosing-component-selectors.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-selector.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "consistent-component-styles",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures consistent usage of `styles` / `styleUrls` / `styleUrl` within Component metadata",
      "status": "",
      "introduced_in": "17.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/consistent-component-styles.md",
      "notes": "",
      "raw": {
        "name": "consistent-component-styles",
        "description": "Ensures consistent usage of `styles` / `styleUrls` / `styleUrl` within Component metadata",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/consistent-component-styles.md",
        "version": "17.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "contextual-decorator",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that classes use contextual decorators in their body",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-decorator.md",
      "notes": "",
      "raw": {
        "name": "contextual-decorator",
        "description": "Ensures that classes use contextual decorators in their body",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-decorator.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "directive-class-suffix",
      "package": "angular-eslint/eslint-plugin",
      "description": "Classes decorated with @Directive must have suffix \"Directive\" (or custom) in their name. Note: As of v20, this is no longer recommended by the Angular Team.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-class-suffix.md",
      "notes": "",
      "raw": {
        "name": "directive-class-suffix",
        "description": "Classes decorated with @Directive must have suffix \"Directive\" (or custom) in their name. Note: As of v20, this is no longer recommended by the Angular Team.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-class-suffix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "directive-selector",
      "package": "angular-eslint/eslint-plugin",
      "description": "Directive selectors should follow given naming rules. See more at https://angular.dev/style-guide#choosing-directive-selectors.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-selector.md",
      "notes": "",
      "raw": {
        "name": "directive-selector",
        "description": "Directive selectors should follow given naming rules. See more at https://angular.dev/style-guide#choosing-directive-selectors.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-selector.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-conflicting-lifecycle",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that directives do not implement conflicting lifecycle interfaces.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-conflicting-lifecycle.md",
      "notes": "",
      "raw": {
        "name": "no-conflicting-lifecycle",
        "description": "Ensures that directives do not implement conflicting lifecycle interfaces.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-conflicting-lifecycle.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-duplicates-in-metadata-arrays",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that metadata arrays do not contain duplicate entries.",
      "status": "",
      "introduced_in": "17.4.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-duplicates-in-metadata-arrays.md",
      "notes": "",
      "raw": {
        "name": "no-duplicates-in-metadata-arrays",
        "description": "Ensures that metadata arrays do not contain duplicate entries.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-duplicates-in-metadata-arrays.md",
        "version": "17.4.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-empty-lifecycle-method",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows declaring empty lifecycle methods",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-empty-lifecycle-method.md",
      "notes": "",
      "raw": {
        "name": "no-empty-lifecycle-method",
        "description": "Disallows declaring empty lifecycle methods",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-empty-lifecycle-method.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-forward-ref",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows usage of `forwardRef` references for DI",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-forward-ref.md",
      "notes": "",
      "raw": {
        "name": "no-forward-ref",
        "description": "Disallows usage of `forwardRef` references for DI",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-forward-ref.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-input-prefix",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that input bindings, including aliases, are not named or prefixed by the configured disallowed prefixes",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-prefix.md",
      "notes": "",
      "raw": {
        "name": "no-input-prefix",
        "description": "Ensures that input bindings, including aliases, are not named or prefixed by the configured disallowed prefixes",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-prefix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-input-rename",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that input bindings are not aliased",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-rename.md",
      "notes": "",
      "raw": {
        "name": "no-input-rename",
        "description": "Ensures that input bindings are not aliased",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-rename.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-inputs-metadata-property",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows usage of the `inputs` metadata property.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-inputs-metadata-property.md",
      "notes": "",
      "raw": {
        "name": "no-inputs-metadata-property",
        "description": "Disallows usage of the `inputs` metadata property.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-inputs-metadata-property.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-lifecycle-call",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows explicit calls to lifecycle methods.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-lifecycle-call.md",
      "notes": "",
      "raw": {
        "name": "no-lifecycle-call",
        "description": "Disallows explicit calls to lifecycle methods.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-lifecycle-call.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-output-native",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that output bindings, including aliases, are not named as standard DOM events.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-native.md",
      "notes": "",
      "raw": {
        "name": "no-output-native",
        "description": "Ensures that output bindings, including aliases, are not named as standard DOM events.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-native.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-output-on-prefix",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that output bindings, including aliases, are not named \"on\", nor prefixed with it. See more at https://angular.dev/guide/components/outputs#choosing-event-names.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-on-prefix.md",
      "notes": "",
      "raw": {
        "name": "no-output-on-prefix",
        "description": "Ensures that output bindings, including aliases, are not named \"on\", nor prefixed with it. See more at https://angular.dev/guide/components/outputs#choosing-event-names.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-on-prefix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-output-rename",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that output bindings are not aliased",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-rename.md",
      "notes": "",
      "raw": {
        "name": "no-output-rename",
        "description": "Ensures that output bindings are not aliased",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-rename.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-outputs-metadata-property",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows usage of the `outputs` metadata property.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-outputs-metadata-property.md",
      "notes": "",
      "raw": {
        "name": "no-outputs-metadata-property",
        "description": "Disallows usage of the `outputs` metadata property.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-outputs-metadata-property.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-pipe-impure",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows the declaration of impure pipes.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-pipe-impure.md",
      "notes": "",
      "raw": {
        "name": "no-pipe-impure",
        "description": "Disallows the declaration of impure pipes.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-pipe-impure.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-queries-metadata-property",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows usage of the `queries` metadata property.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-queries-metadata-property.md",
      "notes": "",
      "raw": {
        "name": "no-queries-metadata-property",
        "description": "Disallows usage of the `queries` metadata property.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-queries-metadata-property.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-uncalled-signals",
      "package": "angular-eslint/eslint-plugin",
      "description": "Warns user about unintentionally doing logic on the signal, rather than the signal's value.",
      "status": "",
      "introduced_in": "19.7.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-uncalled-signals.md",
      "notes": "",
      "raw": {
        "name": "no-uncalled-signals",
        "description": "Warns user about unintentionally doing logic on the signal, rather than the signal's value.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-uncalled-signals.md",
        "version": "19.7.0"
      }
    },
    {
      "section": "ESLint",
      "name": "pipe-prefix",
      "package": "angular-eslint/eslint-plugin",
      "description": "Enforce consistent prefix for pipes.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/pipe-prefix.md",
      "notes": "",
      "raw": {
        "name": "pipe-prefix",
        "description": "Enforce consistent prefix for pipes.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/pipe-prefix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-host-metadata-property",
      "package": "angular-eslint/eslint-plugin",
      "description": "Use `host` metadata property instead of `@HostBinding` and `HostListener`.",
      "status": "",
      "introduced_in": "20.5.2",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-host-metadata-property.md",
      "notes": "",
      "raw": {
        "name": "prefer-host-metadata-property",
        "description": "Use `host` metadata property instead of `@HostBinding` and `HostListener`.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-host-metadata-property.md",
        "version": "20.5.2"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-inject",
      "package": "angular-eslint/eslint-plugin",
      "description": "Prefer using the `inject()` function over constructor parameter injection.",
      "status": "",
      "introduced_in": "19.6.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-inject.md",
      "notes": "",
      "raw": {
        "name": "prefer-inject",
        "description": "Prefer using the `inject()` function over constructor parameter injection.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-inject.md",
        "version": "19.6.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-on-push-component-change-detection",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures component's `changeDetection` is set to `ChangeDetectionStrategy.OnPush`.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-on-push-component-change-detection.md",
      "notes": "",
      "raw": {
        "name": "prefer-on-push-component-change-detection",
        "description": "Ensures component's `changeDetection` is set to `ChangeDetectionStrategy.OnPush`.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-on-push-component-change-detection.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-output-emitter-ref",
      "package": "angular-eslint/eslint-plugin",
      "description": "Use `OutputEmitterRef` instead of `@Output()`.",
      "status": "",
      "introduced_in": "19.4.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-emitter-ref.md",
      "notes": "",
      "raw": {
        "name": "prefer-output-emitter-ref",
        "description": "Use `OutputEmitterRef` instead of `@Output()`.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-emitter-ref.md",
        "version": "19.4.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-output-readonly",
      "package": "angular-eslint/eslint-plugin",
      "description": "Prefer to declare `@Output`, `OutputEmitterRef` and `OutputRef` as `readonly` since they are not supposed to be reassigned.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md",
      "notes": "",
      "raw": {
        "name": "prefer-output-readonly",
        "description": "Prefer to declare `@Output`, `OutputEmitterRef` and `OutputRef` as `readonly` since they are not supposed to be reassigned.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-signals",
      "package": "angular-eslint/eslint-plugin",
      "description": "Use `readonly` signals instead of `@Input()`, `@ViewChild()` and other legacy decorators.",
      "status": "",
      "introduced_in": "19.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-signals.md",
      "notes": "",
      "raw": {
        "name": "prefer-signals",
        "description": "Use `readonly` signals instead of `@Input()`, `@ViewChild()` and other legacy decorators.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-signals.md",
        "version": "19.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-standalone",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures Components, Directives and Pipes do not opt out of standalone.",
      "status": "",
      "introduced_in": "17.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone.md",
      "notes": "",
      "raw": {
        "name": "prefer-standalone",
        "description": "Ensures Components, Directives and Pipes do not opt out of standalone.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone.md",
        "version": "17.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "relative-url-prefix",
      "package": "angular-eslint/eslint-plugin",
      "description": "The ./ and ../ prefix is standard syntax for relative URLs; don't depend on Angular's current ability to do without that prefix.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md",
      "notes": "",
      "raw": {
        "name": "relative-url-prefix",
        "description": "The ./ and ../ prefix is standard syntax for relative URLs; don't depend on Angular's current ability to do without that prefix.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "require-localize-metadata",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that $localize tagged messages contain helpful metadata to aid with translations.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-localize-metadata.md",
      "notes": "",
      "raw": {
        "name": "require-localize-metadata",
        "description": "Ensures that $localize tagged messages contain helpful metadata to aid with translations.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-localize-metadata.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "runtime-localize",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that $localize tagged messages can use runtime-loaded translations.",
      "status": "",
      "introduced_in": "18.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "available",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/runtime-localize.md",
      "notes": "",
      "raw": {
        "name": "runtime-localize",
        "description": "Ensures that $localize tagged messages can use runtime-loaded translations.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/runtime-localize.md",
        "version": "18.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "sort-keys-in-type-decorator",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that keys in type decorators (Component, Directive, NgModule, Pipe) are sorted in a consistent order",
      "status": "",
      "introduced_in": "19.5.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-keys-in-type-decorator.md",
      "notes": "",
      "raw": {
        "name": "sort-keys-in-type-decorator",
        "description": "Ensures that keys in type decorators (Component, Directive, NgModule, Pipe) are sorted in a consistent order",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-keys-in-type-decorator.md",
        "version": "19.5.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-component-selector",
      "package": "angular-eslint/eslint-plugin",
      "description": "Component selector must be declared",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-selector.md",
      "notes": "",
      "raw": {
        "name": "use-component-selector",
        "description": "Component selector must be declared",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-selector.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-component-view-encapsulation",
      "package": "angular-eslint/eslint-plugin",
      "description": "Disallows using ViewEncapsulation.None",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-view-encapsulation.md",
      "notes": "",
      "raw": {
        "name": "use-component-view-encapsulation",
        "description": "Disallows using ViewEncapsulation.None",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-view-encapsulation.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-injectable-provided-in",
      "package": "angular-eslint/eslint-plugin",
      "description": "Using the providedIn property makes Injectables tree-shakable",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-injectable-provided-in.md",
      "notes": "",
      "raw": {
        "name": "use-injectable-provided-in",
        "description": "Using the providedIn property makes Injectables tree-shakable",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-injectable-provided-in.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-lifecycle-interface",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that classes implement lifecycle interfaces corresponding to the declared lifecycle methods. See more at https://angular.dev/style-guide#use-lifecycle-hook-interfaces",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-lifecycle-interface.md",
      "notes": "",
      "raw": {
        "name": "use-lifecycle-interface",
        "description": "Ensures that classes implement lifecycle interfaces corresponding to the declared lifecycle methods. See more at https://angular.dev/style-guide#use-lifecycle-hook-interfaces",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-lifecycle-interface.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-pipe-transform-interface",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that Pipes implement PipeTransform interface",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-pipe-transform-interface.md",
      "notes": "",
      "raw": {
        "name": "use-pipe-transform-interface",
        "description": "Ensures that Pipes implement PipeTransform interface",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-pipe-transform-interface.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-duplicate-attributes",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that there are no duplicate input properties or output event listeners",
      "status": "",
      "introduced_in": "14.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md",
      "notes": "",
      "raw": {
        "name": "no-duplicate-attributes",
        "description": "Ensures that there are no duplicate input properties or output event listeners",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md",
        "version": "14.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-nested-tags",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Denies nesting of and tags.",
      "status": "",
      "introduced_in": "19.5.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-nested-tags.md",
      "notes": "",
      "raw": {
        "name": "no-nested-tags",
        "description": "Denies nesting of and tags.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-nested-tags.md",
        "version": "19.5.0"
      }
    },
    {
      "section": "ESLint",
      "name": "alt-text",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Enforces alternate text for elements which require the alt, aria-label, aria-labelledby attributes.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/alt-text.md",
      "notes": "",
      "raw": {
        "name": "alt-text",
        "description": "[Accessibility] Enforces alternate text for elements which require the alt, aria-label, aria-labelledby attributes.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/alt-text.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "banana-in-box",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that the two-way data binding syntax is correct",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/banana-in-box.md",
      "notes": "",
      "raw": {
        "name": "banana-in-box",
        "description": "Ensures that the two-way data binding syntax is correct",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/banana-in-box.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "button-has-type",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that a button has a valid type specified",
      "status": "",
      "introduced_in": "13.5.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/button-has-type.md",
      "notes": "",
      "raw": {
        "name": "button-has-type",
        "description": "Ensures that a button has a valid type specified",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/button-has-type.md",
        "version": "13.5.0"
      }
    },
    {
      "section": "ESLint",
      "name": "click-events-have-key-events",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that the click event is accompanied with at least one key event keyup, keydown or keypress.",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/click-events-have-key-events.md",
      "notes": "",
      "raw": {
        "name": "click-events-have-key-events",
        "description": "[Accessibility] Ensures that the click event is accompanied with at least one key event keyup, keydown or keypress.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/click-events-have-key-events.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "conditional-complexity",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "The conditional complexity should not exceed a rational limit",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/conditional-complexity.md",
      "notes": "",
      "raw": {
        "name": "conditional-complexity",
        "description": "The conditional complexity should not exceed a rational limit",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/conditional-complexity.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "cyclomatic-complexity",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Checks cyclomatic complexity against a specified limit. It is a quantitative measure of the number of linearly independent paths through a program's source code",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/cyclomatic-complexity.md",
      "notes": "",
      "raw": {
        "name": "cyclomatic-complexity",
        "description": "Checks cyclomatic complexity against a specified limit. It is a quantitative measure of the number of linearly independent paths through a program's source code",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/cyclomatic-complexity.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "elements-content",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that the heading, anchor and button elements have content in them",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/elements-content.md",
      "notes": "",
      "raw": {
        "name": "elements-content",
        "description": "[Accessibility] Ensures that the heading, anchor and button elements have content in them",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/elements-content.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "eqeqeq",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Requires === and !== in place of == and !=",
      "status": "",
      "introduced_in": "12.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/eqeqeq.md",
      "notes": "",
      "raw": {
        "name": "eqeqeq",
        "description": "Requires === and !== in place of == and !=",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/eqeqeq.md",
        "version": "12.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "i18n",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures following best practices for i18n. Checks for missing i18n attributes on elements and attributes containing texts. Can also check for texts without i18n attribute, elements that do not use custom ID (@@) feature and duplicate custom IDs",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/i18n.md",
      "notes": "",
      "raw": {
        "name": "i18n",
        "description": "Ensures following best practices for i18n. Checks for missing i18n attributes on elements and attributes containing texts. Can also check for texts without i18n attribute, elements that do not use custom ID (@@) feature and duplicate custom IDs",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/i18n.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "interactive-supports-focus",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that elements with interactive handlers like (click) are focusable.",
      "status": "",
      "introduced_in": "14.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/interactive-supports-focus.md",
      "notes": "",
      "raw": {
        "name": "interactive-supports-focus",
        "description": "[Accessibility] Ensures that elements with interactive handlers like (click) are focusable.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/interactive-supports-focus.md",
        "version": "14.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "label-has-associated-control",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that a label element/component is associated with a form element",
      "status": "",
      "introduced_in": "4.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md",
      "notes": "",
      "raw": {
        "name": "label-has-associated-control",
        "description": "[Accessibility] Ensures that a label element/component is associated with a form element",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md",
        "version": "4.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "mouse-events-have-key-events",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that the mouse events mouseout and mouseover are accompanied by focus and blur events respectively. Coding for the keyboard is important for users with physical disabilities who cannot use a mouse, AT compatibility, and screenreader users. See more at https://www.w3.org/WAI/WCAG21/Understanding/keyboard",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/mouse-events-have-key-events.md",
      "notes": "",
      "raw": {
        "name": "mouse-events-have-key-events",
        "description": "[Accessibility] Ensures that the mouse events mouseout and mouseover are accompanied by focus and blur events respectively. Coding for the keyboard is important for users with physical disabilities who cannot use a mouse, AT compatibility, and screenreader users. See more at https://www.w3.org/WAI/WCAG21/Understanding/keyboard",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/mouse-events-have-key-events.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-any",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "The use of \"$any\" nullifies the compile-time benefits of Angular's type system",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-any.md",
      "notes": "",
      "raw": {
        "name": "no-any",
        "description": "The use of \"$any\" nullifies the compile-time benefits of Angular's type system",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-any.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-autofocus",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that the autofocus attribute is not used",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-autofocus.md",
      "notes": "",
      "raw": {
        "name": "no-autofocus",
        "description": "[Accessibility] Ensures that the autofocus attribute is not used",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-autofocus.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-call-expression",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Disallows calling expressions in templates, except for output handlers",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-call-expression.md",
      "notes": "",
      "raw": {
        "name": "no-call-expression",
        "description": "Disallows calling expressions in templates, except for output handlers",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-call-expression.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-distracting-elements",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Enforces that no distracting elements are used",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-distracting-elements.md",
      "notes": "",
      "raw": {
        "name": "no-distracting-elements",
        "description": "[Accessibility] Enforces that no distracting elements are used",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-distracting-elements.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-empty-control-flow",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that control flow blocks are not empty. Empty control flow blocks usually occur due to refactoring that wasn't completed. They can cause confusion when reading code.",
      "status": "",
      "introduced_in": "20.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-empty-control-flow.md",
      "notes": "",
      "raw": {
        "name": "no-empty-control-flow",
        "description": "Ensures that control flow blocks are not empty. Empty control flow blocks usually occur due to refactoring that wasn't completed. They can cause confusion when reading code.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-empty-control-flow.md",
        "version": "20.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-inline-styles",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Disallows the use of inline styles in HTML templates",
      "status": "",
      "introduced_in": "14.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-inline-styles.md",
      "notes": "",
      "raw": {
        "name": "no-inline-styles",
        "description": "Disallows the use of inline styles in HTML templates",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-inline-styles.md",
        "version": "14.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-interpolation-in-attributes",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that property-binding is used instead of interpolation in attributes.",
      "status": "",
      "introduced_in": "15.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "available",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-interpolation-in-attributes.md",
      "notes": "",
      "raw": {
        "name": "no-interpolation-in-attributes",
        "description": "Ensures that property-binding is used instead of interpolation in attributes.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-interpolation-in-attributes.md",
        "version": "15.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-negated-async",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that async pipe results, as well as values used with the async pipe, are not negated",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-negated-async.md",
      "notes": "",
      "raw": {
        "name": "no-negated-async",
        "description": "Ensures that async pipe results, as well as values used with the async pipe, are not negated",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-negated-async.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-positive-tabindex",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that the tabindex attribute is not positive",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-positive-tabindex.md",
      "notes": "",
      "raw": {
        "name": "no-positive-tabindex",
        "description": "Ensures that the tabindex attribute is not positive",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-positive-tabindex.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-at-else",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Prefer using @else instead of a second @if with the opposite condition to reduce code and make it easier to read.",
      "status": "",
      "introduced_in": "20.5.2",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-at-else.md",
      "notes": "",
      "raw": {
        "name": "prefer-at-else",
        "description": "Prefer using @else instead of a second @if with the opposite condition to reduce code and make it easier to read.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-at-else.md",
        "version": "20.5.2"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-at-empty",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Prefer using @empty with @for loops instead of a separate @if or @else block to reduce code and make it easier to read.",
      "status": "",
      "introduced_in": "19.5.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-at-empty.md",
      "notes": "",
      "raw": {
        "name": "prefer-at-empty",
        "description": "Prefer using @empty with @for loops instead of a separate @if or @else block to reduce code and make it easier to read.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-at-empty.md",
        "version": "19.5.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-built-in-pipes",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Encourages the use of Angular built-in pipes (e.g. lowercase, uppercase, titlecase) instead of certain JavaScript methods in Angular templates.",
      "status": "",
      "introduced_in": "20.5.2",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "available",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-built-in-pipes.md",
      "notes": "",
      "raw": {
        "name": "prefer-built-in-pipes",
        "description": "Encourages the use of Angular built-in pipes (e.g. lowercase, uppercase, titlecase) instead of certain JavaScript methods in Angular templates.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-built-in-pipes.md",
        "version": "20.5.2"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-contextual-for-variables",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that contextual variables are used in @for blocks where possible instead of aliasing them.",
      "status": "",
      "introduced_in": "19.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-contextual-for-variables.md",
      "notes": "",
      "raw": {
        "name": "prefer-contextual-for-variables",
        "description": "Ensures that contextual variables are used in @for blocks where possible instead of aliasing them.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-contextual-for-variables.md",
        "version": "19.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-control-flow",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that the built-in control flow is used.",
      "status": "",
      "introduced_in": "17.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "available",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-control-flow.md",
      "notes": "",
      "raw": {
        "name": "prefer-control-flow",
        "description": "Ensures that the built-in control flow is used.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-control-flow.md",
        "version": "17.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-ngsrc",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures ngSrc is used instead of src for img elements",
      "status": "",
      "introduced_in": "16.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-ngsrc.md",
      "notes": "",
      "raw": {
        "name": "prefer-ngsrc",
        "description": "Ensures ngSrc is used instead of src for img elements",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-ngsrc.md",
        "version": "16.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-template-literal",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensure that template literals are used instead of concatenating strings or expressions.",
      "status": "",
      "introduced_in": "19.4.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-template-literal.md",
      "notes": "",
      "raw": {
        "name": "prefer-template-literal",
        "description": "Ensure that template literals are used instead of concatenating strings or expressions.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-template-literal.md",
        "version": "19.4.0"
      }
    },
    {
      "section": "ESLint",
      "name": "role-has-required-aria",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures elements with ARIA roles have all required properties for that role.",
      "status": "",
      "introduced_in": "14.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/role-has-required-aria.md",
      "notes": "",
      "raw": {
        "name": "role-has-required-aria",
        "description": "[Accessibility] Ensures elements with ARIA roles have all required properties for that role.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/role-has-required-aria.md",
        "version": "14.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "table-scope",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that the scope attribute is only used on the <th> element",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/table-scope.md",
      "notes": "",
      "raw": {
        "name": "table-scope",
        "description": "[Accessibility] Ensures that the scope attribute is only used on the <th> element",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/table-scope.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "use-track-by-function",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures trackBy function is used",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/use-track-by-function.md",
      "notes": "",
      "raw": {
        "name": "use-track-by-function",
        "description": "Ensures trackBy function is used",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/use-track-by-function.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "valid-aria",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "[Accessibility] Ensures that correct ARIA attributes and respective values are used",
      "status": "",
      "introduced_in": "1.0.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/valid-aria.md",
      "notes": "",
      "raw": {
        "name": "valid-aria",
        "description": "[Accessibility] Ensures that correct ARIA attributes and respective values are used",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/valid-aria.md",
        "version": "1.0.0"
      }
    },
    {
      "section": "ESLint",
      "name": "attributes-order",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that HTML attributes and Angular bindings are sorted based on an expected order",
      "status": "",
      "introduced_in": "14.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "available",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/attributes-order.md",
      "notes": "",
      "raw": {
        "name": "attributes-order",
        "description": "Ensures that HTML attributes and Angular bindings are sorted based on an expected order",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/attributes-order.md",
        "version": "14.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-self-closing-tags",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that self-closing tags are used for elements with a closing tag but no content.",
      "status": "",
      "introduced_in": "16.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "available",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md",
      "notes": "",
      "raw": {
        "name": "prefer-self-closing-tags",
        "description": "Ensures that self-closing tags are used for elements with a closing tag but no content.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md",
        "version": "16.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-static-string-properties",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Ensures that static string values use property assignment instead of property binding.",
      "status": "",
      "introduced_in": "19.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "",
      "v20": "",
      "v19": "available",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md",
      "notes": "",
      "raw": {
        "name": "prefer-static-string-properties",
        "description": "Ensures that static string values use property assignment instead of property binding.",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md",
        "version": "19.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-signal-model",
      "package": "angular-eslint/eslint-plugin",
      "description": "Use model instead of input and output for two-way bindings",
      "status": "",
      "introduced_in": "21.1.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-signal-model.md",
      "notes": "",
      "raw": {
        "name": "prefer-signal-model",
        "description": "Use model instead of input and output for two-way bindings",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-signal-model.md",
        "version": "21.1.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-implicit-takeuntil-destroyed",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that takeUntilDestroyed() is called with an explicit DestroyRef when used outside of an injection context",
      "status": "",
      "introduced_in": "21.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-implicit-take-until-destroyed.md",
      "notes": "",
      "raw": {
        "name": "no-implicit-takeuntil-destroyed",
        "description": "Ensures that takeUntilDestroyed() is called with an explicit DestroyRef when used outside of an injection context",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-implicit-take-until-destroyed.md",
        "version": "21.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "prefer-class-binding",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Suggests using [class] bindings over ngClass where applicable",
      "status": "",
      "introduced_in": "21.2.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-class-binding.md",
      "notes": "",
      "raw": {
        "name": "prefer-class-binding",
        "description": "Suggests using [class] bindings over ngClass where applicable",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/prefer-class-binding.md",
        "version": "21.2.0"
      }
    },
    {
      "section": "ESLint",
      "name": "computed-must-return",
      "package": "angular-eslint/eslint-plugin",
      "description": "Ensures that computed() returns a value. Omitting the value is likely a mistake.",
      "status": "",
      "introduced_in": "21.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/computed-must-return.md",
      "notes": "",
      "raw": {
        "name": "computed-must-return",
        "description": "Ensures that computed() returns a value. Omitting the value is likely a mistake.",
        "type": "eslint-plugin",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/computed-must-return.md",
        "version": "21.3.0"
      }
    },
    {
      "section": "ESLint",
      "name": "no-non-null-assertion",
      "package": "angular-eslint/eslint-plugin-template",
      "description": "Disallows the non-null assertion operator (!) in templates",
      "status": "",
      "introduced_in": "21.3.0",
      "removed_in": "",
      "v22": "",
      "v21": "available",
      "v20": "",
      "v19": "",
      "v18": "",
      "v17": "",
      "v16": "",
      "v15": "",
      "v14": "",
      "angular_courses_url": "https://www.angular.courses/caniuse?tab=eslint",
      "angular_dev_url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-non-null-assertion.md",
      "notes": "",
      "raw": {
        "name": "no-non-null-assertion",
        "description": "Disallows the non-null assertion operator (!) in templates",
        "type": "eslint-plugin-template",
        "url": "https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/docs/rules/no-non-null-assertion.md",
        "version": "21.3.0"
      }
    }
  ]
}
