# Deprecation Summary Angular strives to balance innovation and stability. Sometimes, APIs and features become obsolete and need to be removed or replaced so that Angular can stay current with new best practices, changing dependencies, or changes in the (web) platform itself. To make these transitions as easy as possible, we deprecate APIs and features for a period of time before removing them. This gives you time to update your apps to the latest APIs and best practices. This guide contains a summary of all Angular APIs and features that are currently deprecated.
Features and APIs that were deprecated in v6 or earlier are candidates for removal in the next major version. For information about Angular's deprecation and removal practices, see [Angular Release Practices](guide/releases#deprecation-practices "Angular Release Practices: Deprecation practices"). For step-by-step instructions on how to update to the latest Angular release, use the interactive update guide at [update.angular.io](https://update.angular.io).
{@a removed-v8} ## Version 8 ### Removed The following APIs and features have been removed starting with version 8.0.0: | Package | API or feature | Replacement | Notes | | ------- | -------------- | ----------- | ----- | | [@angular/http](https://v7.angular.io/api/http) | All exports | [@angular/common/http](https://v7.angular.io/api/common/http) | See [below](#http). | [@angular/http/testing](https://v7.angular.io/api/http/testing) | All exports | [@angular/common/http/testing](https://v7.angular.io/api/common/http/testing) | See [below](#http). | | @angular/platform-browser | [DOCUMENT](https://v7.angular.io/api/platform-browser/DOCUMENT) | [`DOCUMENT` in `@angular/common`](https://v7.angular.io/api/common/DOCUMENT) | Updating to version 8 with [`ng update`](cli/update) changes this automatically. | {@a http} #### @angular/http The entire [@angular/http](http://v7.angular.io/api/http) package has been removed. Use [@angular/common/http](api/common/http) instead. The new API is a smaller, easier, and more powerful way to make HTTP requests in Angular. The new API simplifies the default ergonomics: There is no need to map by invoking the `.json()` method. It also supports typed return values and interceptors. To update your apps: * Replace `HttpModule` with [`HttpClientModule`](api/common/http/HttpClientModule) (from [`@angular/common/http`](api/common/http)) in each of your modules * Replace the `Http` service with the [`HttpClient`](api/common/http/HttpClient) service * Remove any `map(res => res.json())` calls. They are no longer needed. For more information about using `@angular/common/http`, see the [HttpClient guide](guide/http "HTTP Client guide"). | @angular/http | Closest replacement in @angular/common/http | | ------------- | ------------------------------------------- | | BaseRequestOptions | [HttpRequest](/api/common/http/HttpRequest) | | BaseResponseOptions | [HttpResponse](/api/common/http/HttpResponse) | | BrowserXhr | | | Connection | [HttpBackend](/api/common/http/HttpBackend) | | ConnectionBackend | [HttpBackend](/api/common/http/HttpBackend) | | CookieXSRFStrategy | [HttpClientXsrfModule](/api/common/http/HttpClientXsrfModule) | | Headers | [HttpHeaders](/api/common/http/HttpHeaders) | | Http | [HttpClient](/api/common/http/HttpClient) | | HttpModule | [HttpClientModule](/api/common/http/HttpClientModule) | | Jsonp | [HttpClient](/api/common/http/HttpClient) | | JSONPBackend | [JsonpClientBackend](/api/common/http/JsonpClientBackend) | | JSONPConnection | [JsonpClientBackend](/api/common/http/JsonpClientBackend) | | JsonpModule | [HttpClientJsonpModule](/api/common/http/HttpClientJsonpModule) | | QueryEncoder | [HttpUrlEncodingCodec](/api/common/http/HttpUrlEncodingCodec) | | ReadyState | [HttpBackend](/api/common/http/HttpBackend) | | Request | [HttpRequest](/api/common/http/HttpRequest) | | RequestMethod | [HttpClient](/api/common/http/HttpClient) | | RequestOptions | [HttpRequest](/api/common/http/HttpRequest) | | RequestOptionsArgs | [HttpRequest](/api/common/http/HttpRequest) | | Response | [HttpResponse](/api/common/http/HttpResponse) | | ResponseContentType | [HttpClient](/api/common/http/HttpClient) | | ResponseOptions | [HttpResponse](/api/common/http/HttpResponse) | | ResponseOptionsArgs | [HttpResponse](/api/common/http/HttpResponse) | | ResponseType | [HttpClient](/api/common/http/HttpClient) | | URLSearchParams | [HttpParams](/api/common/http/HttpParams) | | XHRBackend | [HttpXhrBackend](/api/common/http/HttpXhrBackend) | | XHRConnection | [HttpXhrBackend](/api/common/http/HttpXhrBackend) | | XSRFStrategy | [HttpClientXsrfModule](/api/common/http/HttpClientXsrfModule) | | @angular/http/testing | Closest replacement in @angular/common/http/testing | | --------------------- | ------------------------------------------- | | MockBackend | [HttpTestingController](/api/common/http/testing/HttpTestingController) | | MockConnection | [HttpTestingController](/api/common/http/testing/HttpTestingController) | ### Deprecated The following APIs are announced as deprecated in version 8: | Package | API | Replacement | Deprecation announced | Notes | | ------- | --- | ----------- | --------------------- | ----- | | @angular/core | [defineInjectable](api/core/defineInjectable) | `ɵɵdefineInjectable` | v8 | Used only in generated code. | | @angular/core | [inject](api/core/inject) | `ɵɵinject` | v8 | Used only in generated code. | The string syntax for the `loadChildren` route specification is deprecated in Angular version 8, in favor of new syntax that uses an `import` statement. For more information, see [loadChildren string syntax](#loadChildren) below. ## Deprecated APIs This section contains a complete list **all** of the currently-deprecated APIs, with details to help you plan your migration to a replacement.
Features and APIs that were deprecated in v6 or earlier are candidates for removal in the next major version. For information about Angular's deprecation and removal practices, see [Angular Release Practices](guide/releases#deprecation-practices "Angular Release Practices: Deprecation practices"). In the [API reference section](api) of this doc site, deprecated APIs are indicated by ~~strikethrough.~~ You can filter the API list by [**Status: deprecated**](api?status=deprecated).
#### @angular/common | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [DeprecatedI18NPipesModule](api/common/DeprecatedI18NPipesModule) | [CommonModule](api/common/CommonModule#pipes) | v5 | See [Pipes](#i18n-pipes) | | [DeprecatedCurrencyPipe](api/common/DeprecatedCurrencyPipe) | [CurrencyPipe](api/common/CurrencyPipe) | v5 | See [Pipes](#i18n-pipes) | | [DeprecatedDatePipe](api/common/DeprecatedDatePipe) | [DatePipe](api/common/DatePipe) | v5 | See [Pipes](#i18n-pipes) | | [DeprecatedDecimalPipe](api/common/DeprecatedDecimalPipe) | [DecimalPipe](api/common/DecimalPipe) | v5 | See [Pipes](#i18n-pipes) | | [DeprecatedPercentPipe](api/common/DeprecatedPercentPipe) | [PercentPipe](api/common/PercentPipe) | v5 | See [Pipes](#i18n-pipes) | #### @angular/core | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [CollectionChangeRecord](api/core/CollectionChangeRecord) | [IterableChangeRecord](api/core/IterableChangeRecord) | v4 | none | | [DefaultIterableDiffer](api/core/DefaultIterableDiffer) | n/a | v4 | Not part of public API. | | [defineInjectable](api/core/defineInjectable) | `ɵɵdefineInjectable` | v8 | Used only in generated code. | | [inject](api/core/inject) | `ɵɵinject` | v8 | Used only in generated code. | | [ReflectiveInjector](api/core/ReflectiveInjector) | [Injector.create](api/core/Injector#create) | v5 | See [ReflectiveInjector](#reflectiveinjector) | | [ReflectiveKey](api/core/ReflectiveKey) | none | v5 | none | | [RenderComponentType](api/core/RenderComponentType) | [`RendererType2`](api/core/RendererType2) and [`Renderer2`](api/core/Renderer2) | v4 | none | | [Renderer](api/core/Renderer) | [`Renderer2`](api/core/Renderer2) | v4 | none | | [RootRenderer](api/core/RootRenderer) | [`RendererFactory2`](api/core/RendererFactory2) | v4 | none | | [ViewEncapsulation.Native](api/core/ViewEncapsulation#Native) | [ViewEncapsulation.ShadowDom](api/core/ViewEncapsulation#ShadowDom) | v6 | Use the native encapsulation mechanism of the renderer. See [view.ts](https://github.com/angular/angular/blob/3e992e18ebf51d6036818f26c3d77b52d3ec48eb/packages/core/src/metadata/view.ts#L32). #### @angular/core/testing | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [TestBed.deprecatedOverrideProvider()](api/core/testing/TestBed#deprecatedoverrideprovider) | [TestBed.overrideProvider()] (api/core/testing/TestBed#overrideprovider) | v7 | none | | [TestBedStatic.deprecatedOverrideProvider()](api/core/testing/TestBedStatic#deprecatedoverrideprovider) | [TestBedStatic.overrideProvider()](api/core/testing/TestBedStatic#overrideprovider) | v5 | none | #### @angular/forms | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [NgFormSelectorWarning](api/forms/NgFormSelectorWarning) | n/a | v6 | See [ngForm](#ngform). | #### @angular/router | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [preserveQueryParams](api/router/NavigationExtras#preserveQueryParams) | [queryParamsHandling](api/router/NavigationExtras#queryParamsHandling) | v4 | none | #### @angular/upgrade | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [All entry points](api/upgrade) | [@angular/upgrade/static](api/upgrade/static) | v5 | See [Upgrading from AngularJS](guide/upgrade). | #### @angular/upgrade/static | API | Replacement | Deprecation announced | Notes | | --- | ----------- | --------------------- | ----- | | [getAngularLib](api/upgrade/static/getAngularLib) | [getAngularJSGlobal](api/upgrade/static/getAngularJSGlobal) | v5 | See [Upgrading from AngularJS](guide/upgrade). | [setAngularLib](api/upgrade/static/setAngularLib) | [setAngularJSGlobal](api/upgrade/static/setAngularJSGlobal) | v5 | See [Upgrading from AngularJS](guide/upgrade). | {@a deprecated-features} ## Deprecated features This section lists all of the currently-deprecated features, which includes template syntax, configuration options, and any other deprecations not listed in the [Deprecated APIs](#deprecated-apis) section above. It also includes deprecated API usage scenarios or API combinations, to augment the information above. {@a component-styles} ### Component styles The shadow-piercing descendant combinator is deprecated and support is being removed from major browsers and tools. As such, in v4 we deprecated support in Angular for all 3 of `/deep/`, `>>>` and `::ng-deep`. Until removal, `::ng-deep` is preferred for broader compatibility with the tools. For more information, see [/deep/, >>>, and ::ng-deep](guide/component-styles#deprecated-deep--and-ng-deep "Component Styles guide, Deprecated deep and ngdeep") in the Component Styles guide. {@a template-tag} ### <template> tag The `