<p style="font-size:small;">Content-Length: 38287 | <a href="http://clevelandohioweatherforecast.com//pFad.php?u=" style="font-size:small;">pFad</a> | <a href="http://github.com/angular/angular/pull/60748.diff" style="font-size:small;">http://github.com/angular/angular/pull/60748.diff</a></p>thub.com

diff --git a/adev/shared-docs/components/breadcrumb/breadcrumb.component.spec.ts b/adev/shared-docs/components/breadcrumb/breadcrumb.component.spec.ts
index 8a524477e51856..eb57a5857e4592 100644
--- a/adev/shared-docs/components/breadcrumb/breadcrumb.component.spec.ts
+++ b/adev/shared-docs/components/breadcrumb/breadcrumb.component.spec.ts
@@ -13,7 +13,7 @@ import {NavigationState} from '../../services';
 import {NavigationItem} from '../../interfaces';
 import {By} from '@angular/platform-browser';
 import {RouterTestingModule} from '@angular/router/testing';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('Breadcrumb', () => {
   let fixture: ComponentFixture<Breadcrumb>;
@@ -25,7 +25,7 @@ describe('Breadcrumb', () => {
     TestBed.configureTestingModule({
       imports: [Breadcrumb, RouterTestingModule],
       providers: [
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {
           provide: NavigationState,
           useValue: navigationStateSpy,
diff --git a/adev/shared-docs/components/cookie-popup/cookie-popup.component.spec.ts b/adev/shared-docs/components/cookie-popup/cookie-popup.component.spec.ts
index b1dc899bad8f11..a5568e674ee68b 100644
--- a/adev/shared-docs/components/cookie-popup/cookie-popup.component.spec.ts
+++ b/adev/shared-docs/components/cookie-popup/cookie-popup.component.spec.ts
@@ -11,7 +11,7 @@ import {ComponentFixture, TestBed} from '@angular/core/testing';
 import {CookiePopup, STORAGE_KEY} from './cookie-popup.component';
 import {LOCAL_STORAGE} from '../../providers/index';
 import {MockLocalStorage} from '../../testing/index';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('CookiePopup', () => {
   let fixture: ComponentFixture<CookiePopup>;
@@ -21,7 +21,7 @@ describe('CookiePopup', () => {
     TestBed.configureTestingModule({
       imports: [CookiePopup],
       providers: [
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {
           provide: LOCAL_STORAGE,
           useValue: mockLocalStorage,
diff --git a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts
index bb8be5d1435dfb..4eb7ca4a9c962e 100644
--- a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts
+++ b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts
@@ -15,7 +15,7 @@ import {
 import {
   ChangeDetectionStrategy,
   Component,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   signal,
 } from '@angular/core';
 import {By} from '@angular/platform-browser';
@@ -32,7 +32,7 @@ describe('CopySourceCodeButton', () => {
   beforeEach(async () => {
     TestBed.configureTestingModule({
       imports: [CodeSnippetWrapper],
-      providers: [provideExperimentalZonelessChangeDetection()],
+      providers: [provideZonelessChangeDetection()],
     });
     fixture = TestBed.createComponent(CodeSnippetWrapper);
     component = fixture.componentInstance;
diff --git a/adev/shared-docs/components/navigation-list/navigation-list.component.spec.ts b/adev/shared-docs/components/navigation-list/navigation-list.component.spec.ts
index 6c2fb4e9011b2e..c71e5fae0b2e34 100644
--- a/adev/shared-docs/components/navigation-list/navigation-list.component.spec.ts
+++ b/adev/shared-docs/components/navigation-list/navigation-list.component.spec.ts
@@ -12,7 +12,7 @@ import {NavigationList} from './navigation-list.component';
 import {By} from '@angular/platform-browser';
 import {NavigationItem} from '../../interfaces';
 import {provideRouter} from '@angular/router';
-import {provideExperimentalZonelessChangeDetection, signal} from '@angular/core';
+import {provideZonelessChangeDetection, signal} from '@angular/core';
 import {NavigationState} from '../../services';
 
 const navigationItems: NavigationItem[] = [
@@ -41,7 +41,7 @@ describe('NavigationList', () => {
       providers: [
         provideRouter([]),
         {provide: NavigationState, useClass: FakeNavigationListState},
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
       ],
     }).compileComponents();
     fixture = TestBed.createComponent(NavigationList);
diff --git a/adev/shared-docs/components/search-dialog/search-dialog.component.spec.ts b/adev/shared-docs/components/search-dialog/search-dialog.component.spec.ts
index 43d0ac939fc0b5..579420bfab280f 100644
--- a/adev/shared-docs/components/search-dialog/search-dialog.component.spec.ts
+++ b/adev/shared-docs/components/search-dialog/search-dialog.component.spec.ts
@@ -16,11 +16,7 @@ import {By} from '@angular/platform-browser';
 import {AlgoliaIcon} from '../algolia-icon/algolia-icon.component';
 import {RouterTestingModule} from '@angular/router/testing';
 import {Router} from '@angular/router';
-import {
-  ApplicationRef,
-  provideExperimentalZonelessChangeDetection,
-  ResourceStatus,
-} from '@angular/core';
+import {ApplicationRef, provideZonelessChangeDetection, ResourceStatus} from '@angular/core';
 import {SearchResult} from '../../interfaces';
 
 describe('SearchDialog', () => {
@@ -38,7 +34,7 @@ describe('SearchDialog', () => {
     TestBed.configureTestingModule({
       imports: [SearchDialog, RouterTestingModule],
       providers: [
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {provide: ENVIRONMENT, useValue: {algolia: {index: 'fakeIndex'}}},
         {provide: ALGOLIA_CLIENT, useValue: {search: searchResults}},
         {provide: WINDOW, useValue: fakeWindow},
diff --git a/adev/shared-docs/components/select/select.component.spec.ts b/adev/shared-docs/components/select/select.component.spec.ts
index 3cd9410111d898..d694c5cda90213 100644
--- a/adev/shared-docs/components/select/select.component.spec.ts
+++ b/adev/shared-docs/components/select/select.component.spec.ts
@@ -9,7 +9,7 @@
 import {ComponentFixture, TestBed} from '@angular/core/testing';
 
 import {Select} from './select.component';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('Select', () => {
   let component: Select;
@@ -18,7 +18,7 @@ describe('Select', () => {
   beforeEach(() => {
     TestBed.configureTestingModule({
       imports: [Select],
-      providers: [provideExperimentalZonelessChangeDetection()],
+      providers: [provideZonelessChangeDetection()],
     });
     fixture = TestBed.createComponent(Select);
     component = fixture.componentInstance;
diff --git a/adev/shared-docs/components/slide-toggle/slide-toggle.component.spec.ts b/adev/shared-docs/components/slide-toggle/slide-toggle.component.spec.ts
index 4973562fd9fb85..7f7f4680b3e52f 100644
--- a/adev/shared-docs/components/slide-toggle/slide-toggle.component.spec.ts
+++ b/adev/shared-docs/components/slide-toggle/slide-toggle.component.spec.ts
@@ -9,7 +9,7 @@
 import {ComponentFixture, TestBed} from '@angular/core/testing';
 
 import {SlideToggle} from './slide-toggle.component';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('SlideToggle', () => {
   let component: SlideToggle;
@@ -18,7 +18,7 @@ describe('SlideToggle', () => {
   beforeEach(() => {
     TestBed.configureTestingModule({
       imports: [SlideToggle],
-      providers: [provideExperimentalZonelessChangeDetection()],
+      providers: [provideZonelessChangeDetection()],
     });
     fixture = TestBed.createComponent(SlideToggle);
     fixture.componentRef.setInput('buttonId', 'id');
diff --git a/adev/shared-docs/components/table-of-contents/table-of-contents.component.spec.ts b/adev/shared-docs/components/table-of-contents/table-of-contents.component.spec.ts
index b7ec2190983de2..fe98e89329e97e 100644
--- a/adev/shared-docs/components/table-of-contents/table-of-contents.component.spec.ts
+++ b/adev/shared-docs/components/table-of-contents/table-of-contents.component.spec.ts
@@ -12,7 +12,7 @@ import {RouterTestingModule} from '@angular/router/testing';
 import {TableOfContentsItem, TableOfContentsLevel} from '../../interfaces/index';
 import {TableOfContentsLoader} from '../../services/index';
 import {WINDOW} from '../../providers/index';
-import {provideExperimentalZonelessChangeDetection, signal} from '@angular/core';
+import {provideZonelessChangeDetection, signal} from '@angular/core';
 
 describe('TableOfContents', () => {
   let component: TableOfContents;
@@ -43,7 +43,7 @@ describe('TableOfContents', () => {
     await TestBed.configureTestingModule({
       imports: [TableOfContents, RouterTestingModule],
       providers: [
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {
           provide: WINDOW,
           useValue: fakeWindow,
diff --git a/adev/shared-docs/components/text-field/text-field.component.spec.ts b/adev/shared-docs/components/text-field/text-field.component.spec.ts
index c79ee80780eb9d..5562d9c32caa00 100644
--- a/adev/shared-docs/components/text-field/text-field.component.spec.ts
+++ b/adev/shared-docs/components/text-field/text-field.component.spec.ts
@@ -9,7 +9,7 @@
 import {ComponentFixture, TestBed} from '@angular/core/testing';
 
 import {TextField} from './text-field.component';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('TextField', () => {
   let component: TextField;
@@ -18,7 +18,7 @@ describe('TextField', () => {
   beforeEach(() => {
     TestBed.configureTestingModule({
       imports: [TextField],
-      providers: [provideExperimentalZonelessChangeDetection()],
+      providers: [provideZonelessChangeDetection()],
     });
     fixture = TestBed.createComponent(TextField);
     component = fixture.componentInstance;
diff --git a/adev/shared-docs/components/viewers/docs-viewer/docs-viewer.component.spec.ts b/adev/shared-docs/components/viewers/docs-viewer/docs-viewer.component.spec.ts
index 1c131e5da4f088..00e362d3523334 100644
--- a/adev/shared-docs/components/viewers/docs-viewer/docs-viewer.component.spec.ts
+++ b/adev/shared-docs/components/viewers/docs-viewer/docs-viewer.component.spec.ts
@@ -18,7 +18,7 @@ import {Breadcrumb} from '../../breadcrumb/breadcrumb.component';
 import {NavigationState} from '../../../services';
 import {CopySourceCodeButton} from '../../copy-source-code-button/copy-source-code-button.component';
 import {TableOfContents} from '../../table-of-contents/table-of-contents.component';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {provideZonelessChangeDetection} from '@angular/core';
 
 describe('DocViewer', () => {
   let fixture: ComponentFixture<DocViewer>;
@@ -82,7 +82,7 @@ describe('DocViewer', () => {
       imports: [DocViewer],
       providers: [
         provideRouter([]),
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {provide: EXAMPLE_VIEWER_CONTENT_LOADER, useValue: exampleContentSpy},
         {provide: NavigationState, useValue: navigationStateSpy},
       ],
diff --git a/adev/shared-docs/components/viewers/example-viewer/example-viewer.component.spec.ts b/adev/shared-docs/components/viewers/example-viewer/example-viewer.component.spec.ts
index 6947c003a5bf18..47fe9b2a3e3898 100644
--- a/adev/shared-docs/components/viewers/example-viewer/example-viewer.component.spec.ts
+++ b/adev/shared-docs/components/viewers/example-viewer/example-viewer.component.spec.ts
@@ -10,7 +10,7 @@ import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
 import {ExampleViewer} from './example-viewer.component';
 import {DocsContentLoader, ExampleMetadata, ExampleViewerContentLoader} from '../../../interfaces';
 import {DOCS_CONTENT_LOADER, EXAMPLE_VIEWER_CONTENT_LOADER} from '../../../providers';
-import {Component, provideExperimentalZonelessChangeDetection, ComponentRef} from '@angular/core';
+import {Component, provideZonelessChangeDetection, ComponentRef} from '@angular/core';
 import {HarnessLoader} from '@angular/cdk/testing';
 import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
 import {Clipboard} from '@angular/cdk/clipboard';
@@ -39,7 +39,7 @@ describe('ExampleViewer', () => {
       imports: [ExampleViewer],
       providers: [
         // TODO: Find why tests warn that zone.js is still loaded
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {provide: EXAMPLE_VIEWER_CONTENT_LOADER, useValue: exampleContentSpy},
         {provide: DOCS_CONTENT_LOADER, useValue: contentServiceSpy},
         {provide: ActivatedRoute, useValue: {snapshot: {fragment: 'fragment'}}},
diff --git a/adev/src/app/app.config.ts b/adev/src/app/app.config.ts
index 868eed181de112..38d5af03dd6984 100644
--- a/adev/src/app/app.config.ts
+++ b/adev/src/app/app.config.ts
@@ -13,7 +13,7 @@ import {
   ErrorHandler,
   VERSION,
   inject,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   provideEnvironmentInitializer,
 } from '@angular/core';
 import {
@@ -72,7 +72,7 @@ export const appConfig: ApplicationConfig = {
       }),
       withComponentInputBinding(),
     ),
-    provideExperimentalZonelessChangeDetection(),
+    provideZonelessChangeDetection(),
     provideClientHydration(),
     provideHttpClient(withFetch()),
     provideEnvironmentInitializer(() => inject(AppScroller)),
diff --git a/adev/src/app/sub-navigation-data.ts b/adev/src/app/sub-navigation-data.ts
index 4077a8ce777fef..54a422a850e00b 100644
--- a/adev/src/app/sub-navigation-data.ts
+++ b/adev/src/app/sub-navigation-data.ts
@@ -573,12 +573,6 @@ const DOCS_SUB_NAVIGATION_DATA: NavigationItem[] = [
           },
         ],
       },
-      {
-        label: 'Experimental features',
-        children: [
-          {label: 'Zoneless', path: 'guide/experimental/zoneless', contentPath: 'guide/zoneless'},
-        ],
-      },
     ],
   },
   {
@@ -742,6 +736,7 @@ const DOCS_SUB_NAVIGATION_DATA: NavigationItem[] = [
             path: 'best-practices/skipping-subtrees',
             contentPath: 'best-practices/runtime-performance/skipping-subtrees',
           },
+          {label: 'Zoneless', path: 'guide/zoneless', contentPath: 'guide/zoneless'},
         ],
       },
       {
diff --git a/adev/src/content/guide/testing/components-scenarios.md b/adev/src/content/guide/testing/components-scenarios.md
index 14f556d5374434..6e27446d838509 100644
--- a/adev/src/content/guide/testing/components-scenarios.md
+++ b/adev/src/content/guide/testing/components-scenarios.md
@@ -73,7 +73,7 @@ Then add it to the `providers` array of the testing module configuration:
 
 HELPFUL: You can also use the `fixture.autoDetectChanges()` function instead if you only want to enable automatic change detection
 after making updates to the state of the fixture's component. In addition, automatic change detection is on by default
-when using `provideExperimentalZonelessChangeDetection` and turning it off is not recommended.
+when using `provideZonelessChangeDetection` and turning it off is not recommended.
 
 Here are three tests that illustrate how automatic change detection works.
 
diff --git a/adev/src/content/guide/zoneless.md b/adev/src/content/guide/zoneless.md
index 25cc7d35798344..eadc59dd9f228c 100644
--- a/adev/src/content/guide/zoneless.md
+++ b/adev/src/content/guide/zoneless.md
@@ -11,19 +11,18 @@ The main advantages to removing ZoneJS as a dependency are:
 
 ## Enabling Zoneless in an application
 
-The API for enabling Zoneless is currently experimental. Neither the shape, nor the underlying behavior is stable and can change
-in patch versions. There are known feature gaps, including the lack of an ergonomic API which prevents the application from serializing too early with Server Side Rendering.
+The API for enabling Zoneless is currently in developer preview. Neither the shape of the API nor the underlying behavior are stable and can change in patch versions.
 
 ```typescript
 // standalone bootstrap
 bootstrapApplication(MyApp, {providers: [
-  provideExperimentalZonelessChangeDetection(),
+  provideZonelessChangeDetection(),
 ]});
 
 // NgModule bootstrap
 platformBrowser().bootstrapModule(AppModule);
 @NgModule({
-  providers: [provideExperimentalZonelessChangeDetection()]
+  providers: [provideZonelessChangeDetection()]
 })
 export class AppModule {}
 ```
@@ -134,7 +133,7 @@ Angular application.
 
 ```typescript
 TestBed.configureTestingModule({
-  providers: [provideExperimentalZonelessChangeDetection()]
+  providers: [provideZonelessChangeDetection()]
 });
 
 const fixture = TestBed.createComponent(MyComponent);
diff --git a/adev/src/content/reference/roadmap.md b/adev/src/content/reference/roadmap.md
index 70bc6cd8aeec18..bb60b28a46e838 100644
--- a/adev/src/content/reference/roadmap.md
+++ b/adev/src/content/reference/roadmap.md
@@ -20,7 +20,7 @@ Start developing with the latest Angular features from our roadmap. This list re
 ### Available to experiment with
 
 * [Incremental hydration](/guide/incremental-hydration)
-* [Zoneless change detection](/guide/experimental/zoneless)
+* [Zoneless change detection](/guide/zoneless)
 * [Hydration support for i18n blocks](/api/platform-browser/withI18nSupport)
 * [Resource API](/guide/signals/resource)
 * [Effect API](/api/core/effect)
diff --git a/adev/test-main.ts b/adev/test-main.ts
index e56a06c345d65e..6a405f2771c8e7 100644
--- a/adev/test-main.ts
+++ b/adev/test-main.ts
@@ -6,13 +6,13 @@
  * found in the LICENSE file at https://angular.dev/license
  */
 
-import {ErrorHandler, NgModule, provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {ErrorHandler, NgModule, provideZonelessChangeDetection} from '@angular/core';
 import {TestBed} from '@angular/core/testing';
 import {BrowserTestingModule, platformBrowserTesting} from '@angular/platform-browser/testing';
 
 @NgModule({
   providers: [
-    provideExperimentalZonelessChangeDetection(),
+    provideZonelessChangeDetection(),
     {
       provide: ErrorHandler,
       useValue: {
diff --git a/goldens/public-api/core/index.api.md b/goldens/public-api/core/index.api.md
index e50b863b43e830..371c46ad1a976a 100644
--- a/goldens/public-api/core/index.api.md
+++ b/goldens/public-api/core/index.api.md
@@ -1464,9 +1464,6 @@ export function provideExperimentalCheckNoChangesForDebug(options: {
     exhaustive?: boolean;
 }): _angular_core.EnvironmentProviders;
 
-// @public
-export function provideExperimentalZonelessChangeDetection(): EnvironmentProviders;
-
 // @public
 export function providePlatformInitializer(initializerFn: () => void): EnvironmentProviders;
 
@@ -1479,6 +1476,11 @@ export type ProviderToken<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
 // @public
 export function provideZoneChangeDetection(options?: NgZoneOptions): EnvironmentProviders;
 
+// @public
+function provideZonelessChangeDetection(): EnvironmentProviders;
+export { provideZonelessChangeDetection as provideExperimentalZonelessChangeDetection }
+export { provideZonelessChangeDetection }
+
 // @public
 export interface Query {
     // (undocumented)
diff --git a/modules/ssr-benchmarks/src/app/app.config.ts b/modules/ssr-benchmarks/src/app/app.config.ts
index 58298b051145fc..03524b19eded4e 100644
--- a/modules/ssr-benchmarks/src/app/app.config.ts
+++ b/modules/ssr-benchmarks/src/app/app.config.ts
@@ -6,13 +6,10 @@
  * found in the LICENSE file at https://angular.dev/license
  */
 
-import {ApplicationConfig, provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {ApplicationConfig, provideZonelessChangeDetection} from '@angular/core';
 
 import {provideClientHydration, withEventReplay} from '@angular/platform-browser';
 
 export const appConfig: ApplicationConfig = {
-  providers: [
-    provideExperimentalZonelessChangeDetection(),
-    provideClientHydration(withEventReplay()),
-  ],
+  providers: [provideZonelessChangeDetection(), provideClientHydration(withEventReplay())],
 };
diff --git a/packages/core/src/change_detection/scheduling/exhaustive_check_no_changes.ts b/packages/core/src/change_detection/scheduling/exhaustive_check_no_changes.ts
index 99b6b7ba10b1a5..cf22375a49e2f8 100644
--- a/packages/core/src/change_detection/scheduling/exhaustive_check_no_changes.ts
+++ b/packages/core/src/change_detection/scheduling/exhaustive_check_no_changes.ts
@@ -34,7 +34,7 @@ import {ZONELESS_ENABLED} from './zoneless_scheduling';
  *     and will always check all views, regardless of their "dirty" state and `ChangeDetectionStrategy`.
  *
  * When the `useNgZoneOnStable` option is `true`, this function will provide its own `NgZone` implementation and needs
- * to come after any other `NgZone` provider, including `provideZoneChangeDetection()` and `provideExperimentalZonelessChangeDetection()`.
+ * to come after any other `NgZone` provider, including `provideZoneChangeDetection()` and `provideZonelessChangeDetection()`.
  *
  * @experimental
  * @publicApi
diff --git a/packages/core/src/change_detection/scheduling/zoneless_scheduling.ts b/packages/core/src/change_detection/scheduling/zoneless_scheduling.ts
index 352c92824e5797..d3d5c796fdcbe9 100644
--- a/packages/core/src/change_detection/scheduling/zoneless_scheduling.ts
+++ b/packages/core/src/change_detection/scheduling/zoneless_scheduling.ts
@@ -69,7 +69,7 @@ export const ZONELESS_ENABLED = new InjectionToken<boolean>(
   {providedIn: 'root', factory: () => false},
 );
 
-/** Token used to indicate `provideExperimentalZonelessChangeDetection` was used. */
+/** Token used to indicate `provideZonelessChangeDetection` was used. */
 export const PROVIDED_ZONELESS = new InjectionToken<boolean>(
   typeof ngDevMode === 'undefined' || ngDevMode ? 'Zoneless provided' : '',
   {providedIn: 'root', factory: () => false},
diff --git a/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts b/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts
index 46ccdc5630b9b1..7e6034301f16fa 100644
--- a/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts
+++ b/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts
@@ -361,7 +361,7 @@ export class ChangeDetectionSchedulerImpl implements ChangeDetectionScheduler {
  * @usageNotes
  * ```ts
  * bootstrapApplication(MyApp, {providers: [
- *   provideExperimentalZonelessChangeDetection(),
+ *   provideZonelessChangeDetection(),
  * ]});
  * ```
  *
@@ -370,10 +370,10 @@ export class ChangeDetectionSchedulerImpl implements ChangeDetectionScheduler {
  * on the exact API based on the feedback and our understanding of the problem and solution space.
  *
  * @publicApi
- * @experimental
+ * @developerPreview
  * @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication}
  */
-export function provideExperimentalZonelessChangeDetection(): EnvironmentProviders {
+export function provideZonelessChangeDetection(): EnvironmentProviders {
   performanceMarkFeature('NgZoneless');
 
   if ((typeof ngDevMode === 'undefined' || ngDevMode) && typeof Zone !== 'undefined' && Zone) {
diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts
index 9733270b26dca4..b9837171a1bcd8 100644
--- a/packages/core/src/core.ts
+++ b/packages/core/src/core.ts
@@ -43,7 +43,11 @@ export {
   provideZoneChangeDetection,
   NgZoneOptions,
 } from './change_detection/scheduling/ng_zone_scheduling';
-export {provideExperimentalZonelessChangeDetection} from './change_detection/scheduling/zoneless_scheduling_impl';
+export {
+  provideZonelessChangeDetection,
+  // TODO(atscott): Remove after internal LSC for name change
+  provideZonelessChangeDetection as provideExperimentalZonelessChangeDetection,
+} from './change_detection/scheduling/zoneless_scheduling_impl';
 export {PendingTasks} from './pending_tasks';
 export {provideExperimentalCheckNoChangesForDebug} from './change_detection/scheduling/exhaustive_check_no_changes';
 export {enableProdMode, isDevMode} from './util/is_dev_mode';
diff --git a/packages/core/src/platform/bootstrap.ts b/packages/core/src/platform/bootstrap.ts
index 017bc3f4e0af87..a20ede52fb3232 100644
--- a/packages/core/src/platform/bootstrap.ts
+++ b/packages/core/src/platform/bootstrap.ts
@@ -105,7 +105,7 @@ export function bootstrap<M>(
         throw new RuntimeError(
           RuntimeErrorCode.PROVIDED_BOTH_ZONE_AND_ZONELESS,
           'Invalid change detection configuration: ' +
-            'provideZoneChangeDetection and provideExperimentalZonelessChangeDetection cannot be used together.',
+            'provideZoneChangeDetection and provideZonelessChangeDetection cannot be used together.',
         );
       }
     }
diff --git a/packages/core/test/acceptance/after_render_effect_spec.ts b/packages/core/test/acceptance/after_render_effect_spec.ts
index cb150000a7c17e..8aa30dd6b3e4f6 100644
--- a/packages/core/test/acceptance/after_render_effect_spec.ts
+++ b/packages/core/test/acceptance/after_render_effect_spec.ts
@@ -11,7 +11,7 @@ import {
   ApplicationRef,
   computed,
   PLATFORM_ID,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   signal,
 } from '../../src/core';
 import {afterRenderEffect} from '../../src/render3/reactivity/after_render_effect';
@@ -227,10 +227,7 @@ describe('afterRenderEffect', () => {
 
   it('should schedule CD when dirty', async () => {
     TestBed.configureTestingModule({
-      providers: [
-        provideExperimentalZonelessChangeDetection(),
-        {provide: PLATFORM_ID, useValue: 'browser'},
-      ],
+      providers: [provideZonelessChangeDetection(), {provide: PLATFORM_ID, useValue: 'browser'}],
     });
 
     const log: string[] = [];
diff --git a/packages/core/test/acceptance/bootstrap_spec.ts b/packages/core/test/acceptance/bootstrap_spec.ts
index 5ffb8943261a62..2886fafa326a08 100644
--- a/packages/core/test/acceptance/bootstrap_spec.ts
+++ b/packages/core/test/acceptance/bootstrap_spec.ts
@@ -14,7 +14,7 @@ import {
   forwardRef,
   NgModule,
   NgZone,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   provideZoneChangeDetection,
   TestabilityRegistry,
   ViewContainerRef,
@@ -367,7 +367,7 @@ describe('bootstrap', () => {
 
           @NgModule({
             declarations: [App],
-            providers: [provideExperimentalZonelessChangeDetection()],
+            providers: [provideZonelessChangeDetection()],
             imports: [BrowserModule],
             bootstrap: [App],
           })
diff --git a/packages/core/test/acceptance/change_detection_spec.ts b/packages/core/test/acceptance/change_detection_spec.ts
index 844bdd507839b0..6bdb0c394feb28 100644
--- a/packages/core/test/acceptance/change_detection_spec.ts
+++ b/packages/core/test/acceptance/change_detection_spec.ts
@@ -32,7 +32,7 @@ import {
   ViewChildren,
   ViewContainerRef,
   provideExperimentalCheckNoChangesForDebug,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   ɵRuntimeError as RuntimeError,
   ɵRuntimeErrorCode as RuntimeErrorCode,
   afterRender,
@@ -47,7 +47,7 @@ describe('change detection', () => {
   it('can provide zone and zoneless (last one wins like any other provider) in TestBed', () => {
     expect(() => {
       TestBed.configureTestingModule({
-        providers: [provideExperimentalZonelessChangeDetection(), provideZoneChangeDetection()],
+        providers: [provideZonelessChangeDetection(), provideZoneChangeDetection()],
       });
       TestBed.inject(ApplicationRef);
     }).not.toThrow();
@@ -1428,7 +1428,7 @@ describe('change detection', () => {
             providers: [
               {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},
               provideExperimentalCheckNoChangesForDebug({useNgZoneOnStable: true}),
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
             ],
           });
 
@@ -1456,7 +1456,7 @@ describe('change detection', () => {
           TestBed.configureTestingModule({
             providers: [
               {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
               provideExperimentalCheckNoChangesForDebug({useNgZoneOnStable: true}),
               {
                 provide: ErrorHandler,
@@ -1495,7 +1495,7 @@ describe('change detection', () => {
           let error: RuntimeError | undefined = undefined;
           TestBed.configureTestingModule({
             providers: [
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
               provideExperimentalCheckNoChangesForDebug({useNgZoneOnStable: true}),
               {
                 provide: ErrorHandler,
@@ -1532,7 +1532,7 @@ describe('change detection', () => {
           let error: RuntimeError | undefined = undefined;
           TestBed.configureTestingModule({
             providers: [
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
               provideExperimentalCheckNoChangesForDebug({interval: 5}),
               {
                 provide: ErrorHandler,
@@ -1558,7 +1558,7 @@ describe('change detection', () => {
           let error: RuntimeError | undefined = undefined;
           TestBed.configureTestingModule({
             providers: [
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
               provideExperimentalCheckNoChangesForDebug({interval: 0}),
               {
                 provide: ErrorHandler,
@@ -1587,7 +1587,7 @@ describe('change detection', () => {
           let error: RuntimeError | undefined = undefined;
           TestBed.configureTestingModule({
             providers: [
-              provideExperimentalZonelessChangeDetection(),
+              provideZonelessChangeDetection(),
               provideExperimentalCheckNoChangesForDebug({interval: 0, exhaustive: false}),
               {
                 provide: ErrorHandler,
diff --git a/packages/core/test/change_detection_scheduler_spec.ts b/packages/core/test/change_detection_scheduler_spec.ts
index 38fa64214f0a25..90ad3ecfcb44d1 100644
--- a/packages/core/test/change_detection_scheduler_spec.ts
+++ b/packages/core/test/change_detection_scheduler_spec.ts
@@ -25,7 +25,7 @@ import {
   NgZone,
   Output,
   PLATFORM_ID,
-  provideExperimentalZonelessChangeDetection as provideZonelessChangeDetection,
+  provideZonelessChangeDetection as provideZonelessChangeDetection,
   provideZoneChangeDetection,
   signal,
   TemplateRef,
diff --git a/packages/core/test/component_fixture_spec.ts b/packages/core/test/component_fixture_spec.ts
index 23b67ccae31731..a4651f8dcf8a80 100644
--- a/packages/core/test/component_fixture_spec.ts
+++ b/packages/core/test/component_fixture_spec.ts
@@ -15,7 +15,7 @@ import {
   Input,
   NgZone,
   createComponent,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   signal,
 } from '../src/core';
 import {
@@ -563,7 +563,7 @@ describe('ComponentFixture with zoneless', () => {
   beforeEach(() => {
     TestBed.configureTestingModule({
       providers: [
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
         {provide: ErrorHandler, useValue: {handleError: () => {}}},
       ],
     });
diff --git a/packages/core/test/render3/reactivity_spec.ts b/packages/core/test/render3/reactivity_spec.ts
index fd6ded16b9753b..216091e694d5c6 100644
--- a/packages/core/test/render3/reactivity_spec.ts
+++ b/packages/core/test/render3/reactivity_spec.ts
@@ -27,7 +27,7 @@ import {
   Input,
   NgZone,
   OnChanges,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   QueryList,
   signal,
   SimpleChanges,
@@ -315,7 +315,7 @@ describe('reactivity', () => {
 
     it('should run root effects in creation order independent of dirty order', async () => {
       TestBed.configureTestingModule({
-        providers: [provideExperimentalZonelessChangeDetection()],
+        providers: [provideZonelessChangeDetection()],
       });
       const appRef = TestBed.inject(ApplicationRef);
 
@@ -343,7 +343,7 @@ describe('reactivity', () => {
 
     it('should check components made dirty from markForCheck() from an effect', async () => {
       TestBed.configureTestingModule({
-        providers: [provideExperimentalZonelessChangeDetection()],
+        providers: [provideZonelessChangeDetection()],
       });
 
       const source = signal('');
@@ -373,7 +373,7 @@ describe('reactivity', () => {
 
     it('should check components made dirty from markForCheck() from an effect in a service', async () => {
       TestBed.configureTestingModule({
-        providers: [provideExperimentalZonelessChangeDetection()],
+        providers: [provideZonelessChangeDetection()],
       });
 
       const source = signal('');
@@ -410,7 +410,7 @@ describe('reactivity', () => {
 
     it('should check views made dirty from markForCheck() from an effect in a directive', async () => {
       TestBed.configureTestingModule({
-        providers: [provideExperimentalZonelessChangeDetection()],
+        providers: [provideZonelessChangeDetection()],
       });
 
       const source = signal('');
diff --git a/packages/forms/test/ng_control_status_spec.ts b/packages/forms/test/ng_control_status_spec.ts
index a47a98dbc96e62..88b8d1b227fa82 100644
--- a/packages/forms/test/ng_control_status_spec.ts
+++ b/packages/forms/test/ng_control_status_spec.ts
@@ -9,11 +9,11 @@
 import {ChangeDetectionStrategy, Component} from '@angular/core';
 import {FormControl, FormsModule, ReactiveFormsModule, Validators} from '../public_api';
 import {TestBed} from '@angular/core/testing';
-import {provideExperimentalZonelessChangeDetection} from '@angular/core/src/change_detection/scheduling/zoneless_scheduling_impl';
+import {provideZonelessChangeDetection} from '@angular/core/src/change_detection/scheduling/zoneless_scheduling_impl';
 
 describe('status host binding classes', () => {
   beforeEach(() => {
-    TestBed.configureTestingModule({providers: [provideExperimentalZonelessChangeDetection()]});
+    TestBed.configureTestingModule({providers: [provideZonelessChangeDetection()]});
   });
 
   it('work in OnPush components', async () => {
diff --git a/packages/platform-server/test/full_app_hydration_spec.ts b/packages/platform-server/test/full_app_hydration_spec.ts
index 828a111eac9cbb..8c60e5a7814a3e 100644
--- a/packages/platform-server/test/full_app_hydration_spec.ts
+++ b/packages/platform-server/test/full_app_hydration_spec.ts
@@ -42,7 +42,7 @@ import {
   Pipe,
   PipeTransform,
   PLATFORM_ID,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   Provider,
   QueryList,
   TemplateRef,
@@ -8036,7 +8036,7 @@ describe('platform-server full application hydration integration', () => {
         const appRef = await prepareEnvironmentAndHydrate(doc, html, SimpleComponent, {
           envProviders: [
             withDebugConsole(),
-            provideExperimentalZonelessChangeDetection() as unknown as Provider[],
+            provideZonelessChangeDetection() as unknown as Provider[],
           ],
         });
         const compRef = getComponentRef<SimpleComponent>(appRef);
@@ -8154,7 +8154,7 @@ describe('platform-server full application hydration integration', () => {
         class SimpleComponent {}
 
         const envProviders = [
-          provideExperimentalZonelessChangeDetection(),
+          provideZonelessChangeDetection(),
           {provide: PlatformLocation, useClass: MockPlatformLocation},
           provideRouter(routes),
         ] as unknown as Provider[];
diff --git a/packages/router/test/directives/router_outlet.spec.ts b/packages/router/test/directives/router_outlet.spec.ts
index 40f71ca8327bf9..a2d0d9f224442c 100644
--- a/packages/router/test/directives/router_outlet.spec.ts
+++ b/packages/router/test/directives/router_outlet.spec.ts
@@ -10,7 +10,7 @@ import {CommonModule, NgForOf} from '@angular/common';
 import {
   Component,
   inject,
-  provideExperimentalZonelessChangeDetection,
+  provideZonelessChangeDetection,
   Input,
   Signal,
   Type,
@@ -487,7 +487,7 @@ describe('router outlet data', () => {
     TestBed.configureTestingModule({
       providers: [
         provideRouter([{path: '**', component: MyComponent}]),
-        provideExperimentalZonelessChangeDetection(),
+        provideZonelessChangeDetection(),
       ],
     });
 
diff --git a/packages/router/test/router_link_spec.ts b/packages/router/test/router_link_spec.ts
index ca29309afda894..54721f3e1d1dc9 100644
--- a/packages/router/test/router_link_spec.ts
+++ b/packages/router/test/router_link_spec.ts
@@ -6,14 +6,14 @@
  * found in the LICENSE file at https://angular.dev/license
  */
 
-import {Component, inject, signal, provideExperimentalZonelessChangeDetection} from '@angular/core';
+import {Component, inject, signal, provideZonelessChangeDetection} from '@angular/core';
 import {ComponentFixture, TestBed} from '@angular/core/testing';
 import {By} from '@angular/platform-browser';
 import {Router, RouterLink, RouterModule, provideRouter} from '../index';
 
 describe('RouterLink', () => {
   beforeEach(() => {
-    TestBed.configureTestingModule({providers: [provideExperimentalZonelessChangeDetection()]});
+    TestBed.configureTestingModule({providers: [provideZonelessChangeDetection()]});
   });
 
   it('does not modify tabindex if already set on non-anchor element', async () => {
<!-- URL input box at the bottom -->
<form method="GET" action="">
    <label for="targeturl-bottom"><b>Enter URL:</b></label>
    <input type="text" id="targeturl-bottom" name="u" value="http://github.com/angular/angular/pull/60748.diff" required><br><small>
    <label for="useWeserv-bottom">Disable Weserv Image Reduction:</label>
    <input type="checkbox" id="useWeserv-bottom" name="useWeserv" value="false"><br>
    <label for="stripJS-bottom">Strip JavaScript:</label>
    <input type="checkbox" id="stripJS-bottom" name="stripJS" value="true"><br>
    <label for="stripImages-bottom">Strip Images:</label>
    <input type="checkbox" id="stripImages-bottom" name="stripImages" value="true"><br>
    <label for="stripFnts-bottom">Stripout Font Forcing:</label>
    <input type="checkbox" id="stripFnts-bottom" name="stripFnts" value="true"><br>
    <label for="stripCSS-bottom">Strip CSS:</label>
    <input type="checkbox" id="stripCSS-bottom" name="stripCSS" value="true"><br>
    <label for="stripVideos-bottom">Strip Videos:</label>
    <input type="checkbox" id="stripVideos-bottom" name="stripVideos" value="true"><br>
    <label for="removeMenus-bottom">Remove Headers and Menus:</label>
    <input type="checkbox" id="removeMenus-bottom" name="removeMenus" value="true"><br></small>
<!-- New form elements Sandwich Strip -->
        <label for="start"><small>Remove from after:</label>
        <input type="text" id="start" name="start" value="<body>">
        <label for="end"><small>to before:</label>
        <input type="text" id="end" name="end">
        <input type="checkbox" id="applySandwichStrip" name="applySandwichStrip" value="1" onclick="submitForm()"> ApplySandwichStrip<br></small>
    <button type="submit">Fetch</button>
</form><!-- Header banner at the bottom -->
<p><h1><a href="http://clevelandohioweatherforecast.com//pFad.php?u=" title="pFad">pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Saves Data!</i></a></h1><br><em>--- a PPN by Garber Painting Akron. <b> With Image Size Reduction </b>included!</em></p><p>Fetched URL: <a href="http://github.com/angular/angular/pull/60748.diff" target="_blank">http://github.com/angular/angular/pull/60748.diff</a></p><p>Alternative Proxies:</p><p><a href="http://clevelandohioweatherforecast.com/php-proxy/index.php?q=http://github.com/angular/angular/pull/60748.diff" target="_blank">Alternative Proxy</a></p><p><a href="http://clevelandohioweatherforecast.com/pFad/index.php?u=http://github.com/angular/angular/pull/60748.diff&useWeserv=true" target="_blank">pFad Proxy</a></p><p><a href="http://clevelandohioweatherforecast.com/pFad/v3index.php?u=http://github.com/angular/angular/pull/60748.diff&useWeserv=true" target="_blank">pFad v3 Proxy</a></p><p><a href="http://clevelandohioweatherforecast.com/pFad/v4index.php?u=http://github.com/angular/angular/pull/60748.diff&useWeserv=true" target="_blank">pFad v4 Proxy</a></p>