diff --git a/projects/nshmp-apps/src/app/designmaps/rtgm/services/app.service.ts b/projects/nshmp-apps/src/app/designmaps/rtgm/services/app.service.ts
index bc507d2e3c0d3790aca5f28926e75c351c5099f2..4f466b187b23c9623855d56e3a2220f1f1903776 100644
--- a/projects/nshmp-apps/src/app/designmaps/rtgm/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/designmaps/rtgm/services/app.service.ts
@@ -1,7 +1,8 @@
+import {Location as LocationService} from '@angular/common';
 import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   HazardControlForm,
   HazardService,
@@ -103,8 +104,8 @@ export class AppService
     private spinnerService: SpinnerService,
     private nshmpService: NshmpService,
     private route: ActivatedRoute,
-    private router: Router,
-    private hazardService: HazardService
+    private hazardService: HazardService,
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -912,11 +913,10 @@ export class AppService
   }
 
   private updateUrl(): void {
-    this.router
-      .navigate([apps().designMaps.rtgm.routerLink], {
-        queryParams: this.formGroup.getRawValue(),
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().designMaps.rtgm.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 
   private usageFormValues(parameters: RtgmUsageParameters): ControlForm {
diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
index 27a0966784796cf5773c37e0e26b4133dceea1a7..83aed91b3179a006f39c346f12c2681358be0d5a 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
@@ -1,3 +1,5 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {Injectable, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
 import {ActivatedRoute, Router} from '@angular/router';
@@ -72,6 +74,7 @@ export class AppService
     private nshmpService: NshmpService,
     private formBuilder: FormBuilder,
     private route: ActivatedRoute,
+    private location: LocationService,
     private router: Router
   ) {
     super();
@@ -562,12 +565,9 @@ export class AppService
       zTor: value.zTor?.toString(),
     };
 
-    this.router
-      .navigate([devApps().gmm.hangingWallEffects.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      devApps().gmm.hangingWallEffects.routerLink,
+      new HttpParams().appendAll({...query}).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/dev/hazard/dynamic-compare/services/app.service.ts b/projects/nshmp-apps/src/app/dev/hazard/dynamic-compare/services/app.service.ts
index 6e6a78a102c558912dc488b85137fc5d53d60b3f..77fab0a953d7396f6ff68c86a2793b416435718e 100644
--- a/projects/nshmp-apps/src/app/dev/hazard/dynamic-compare/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/dev/hazard/dynamic-compare/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {HazardService, hazardUtils} from '@ghsc/nshmp-lib-ng/hazard';
 import {
   FormGroupControls,
@@ -85,7 +87,7 @@ export class AppService
     private spectraPlotsService: SpectraPlotsService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -879,13 +881,10 @@ export class AppService
       vs30: value.vs30?.toString(),
     };
 
-    this.router
-      .navigate([devApps().hazard.dynamicCompare.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      devApps().hazard.dynamicCompare.routerLink,
+      new HttpParams().appendAll({...query}).toString()
+    );
   }
 }
 
diff --git a/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
index 15e16e6637fed1ceaa1050b7c7811237a5026086..1d6c721e84b5b1c9e00f4fbfcff0a13c4fefc0c3 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   GmmAppQueryImt,
   gmmUtils,
@@ -68,7 +70,7 @@ export class AppService
     private nshmpService: NshmpService,
     private spinnerService: SpinnerService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -527,12 +529,9 @@ export class AppService
       zTor: value.zTor?.toString(),
     };
 
-    this.router
-      .navigate([apps().gmm.distance.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().gmm.distance.routerLink,
+      new HttpParams().appendAll({...query}).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
index 3f25429b0379083d9e4c012d50d5fdb2cb2684cb..f1b2fcc87cb0e0b6db488d83e06d0bafa7664cd1 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   GmmAppQueryImt,
   gmmUtils,
@@ -76,7 +78,7 @@ export class AppService
     private nshmpService: NshmpService,
     private spinnerService: SpinnerService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -561,13 +563,10 @@ export class AppService
       zTor: value.zTor?.toString(),
     };
 
-    this.router
-      .navigate([apps().gmm.magnitude.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().gmm.magnitude.routerLink,
+      new HttpParams().appendAll({...query}).toString()
+    );
   }
 
   /**
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
index 869346cefaacbaf885331049db93f6e537fd028a..8ccd925cc4bfb4a2fe6d4369cfdbd1860fec5be6 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
@@ -1,3 +1,5 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {
   AbstractControl,
@@ -5,7 +7,7 @@ import {
   FormControl,
   Validators,
 } from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   GmmAppQuery,
   gmmUtils,
@@ -95,7 +97,7 @@ export class AppService
     private nshmpService: NshmpService,
     private spinnerService: SpinnerService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -837,13 +839,10 @@ export class AppService
       zTor: value.zTor?.toString(),
     };
 
-    this.router
-      .navigate([apps().gmm.spectra.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().gmm.spectra.routerLink,
+      new HttpParams().appendAll({...query}).toString()
+    );
   }
 
   /**
diff --git a/projects/nshmp-apps/src/app/hazard/disagg/services/app.service.ts b/projects/nshmp-apps/src/app/hazard/disagg/services/app.service.ts
index 3658b3e6ddd431854d36a906583842ac3532d02b..551e055c98fdb1ea182df9b2a4877fea80c63bdc 100644
--- a/projects/nshmp-apps/src/app/hazard/disagg/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/hazard/disagg/services/app.service.ts
@@ -1,4 +1,5 @@
-import {HttpClient} from '@angular/common/http';
+import {Location as LocationService} from '@angular/common';
+import {HttpClient, HttpParams} from '@angular/common/http';
 import {
   computed,
   Inject,
@@ -8,7 +9,7 @@ import {
   signal,
 } from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   DisaggControlForm,
   DisaggTarget,
@@ -83,8 +84,8 @@ export class AppService
     private nshmpService: NshmpService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router,
     private http: HttpClient,
+    private location: LocationService,
     @Inject(LOCALE_ID) private localId: string
   ) {
     super();
@@ -755,15 +756,10 @@ export class AppService
   }
 
   private updateUrl(): void {
-    const value = this.formGroup.getRawValue();
-
-    this.router
-      .navigate([apps().hazard.disagg.routerLink], {
-        queryParams: {
-          ...value,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().hazard.disagg.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 
   private updateUsageUrl() {
diff --git a/projects/nshmp-apps/src/app/hazard/dynamic/services/app.service.ts b/projects/nshmp-apps/src/app/hazard/dynamic/services/app.service.ts
index 02276f6306cbb03b410379eba9f8884cabfa6374..d5e280b2854e205eb3cb4d1bbbf9096989de76a8 100644
--- a/projects/nshmp-apps/src/app/hazard/dynamic/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/hazard/dynamic/services/app.service.ts
@@ -1,3 +1,5 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {
   AbstractControl,
@@ -5,7 +7,7 @@ import {
   FormGroup,
   Validators,
 } from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   DynamicHazardControlForm,
   HazardPlots,
@@ -80,7 +82,7 @@ export class AppService
     private nshmpService: NshmpService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -703,15 +705,10 @@ export class AppService
   }
 
   private updateUrl(): void {
-    const values = this.formGroup.getRawValue();
-
-    this.router
-      .navigate([apps().hazard.dynamic.routerLink], {
-        queryParams: {
-          ...values,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().hazard.dynamic.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 
   private updateUsageUrl() {
diff --git a/projects/nshmp-apps/src/app/hazard/static/services/app.service.ts b/projects/nshmp-apps/src/app/hazard/static/services/app.service.ts
index de874e6c75d625abe98ad46bb85ed609a07e2d84..8ad4b174a3b0a8f2313a66850b710b32035c972e 100644
--- a/projects/nshmp-apps/src/app/hazard/static/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/hazard/static/services/app.service.ts
@@ -1,3 +1,5 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {
   AbstractControl,
@@ -5,7 +7,7 @@ import {
   FormGroup,
   Validators,
 } from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   HazardAppQuery,
   HazardControlForm,
@@ -85,7 +87,7 @@ export class AppService
     private nshmpService: NshmpService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -816,15 +818,10 @@ export class AppService
   }
 
   private updateUrl(): void {
-    const values = this.formGroup.getRawValue();
-
-    this.router
-      .navigate([apps().hazard.static.routerLink], {
-        queryParams: {
-          ...values,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().hazard.static.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 
   private updateUsageUrl() {
diff --git a/projects/nshmp-apps/src/app/internal/aws/check-haz-jobs/services/app.service.ts b/projects/nshmp-apps/src/app/internal/aws/check-haz-jobs/services/app.service.ts
index b7777715c06beb97d67441c702b34bae690fa5a9..6353510b4f5f5e2838d82b4bb3c2a5c3b013db4e 100644
--- a/projects/nshmp-apps/src/app/internal/aws/check-haz-jobs/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/internal/aws/check-haz-jobs/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   AwsService,
   JobHistoryRequestData,
@@ -48,7 +50,7 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
     private nshmpService: NshmpService,
     private awsService: AwsService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     this.addValidators();
 
@@ -241,12 +243,9 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
       id: this.formGroup.getRawValue().id,
     };
 
-    this.router
-      .navigate([internalApps().aws.checkHazJobs.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      internalApps().aws.checkHazJobs.routerLink,
+      new HttpParams().appendAll(query).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/internal/aws/haz-job-history/services/app.service.ts b/projects/nshmp-apps/src/app/internal/aws/haz-job-history/services/app.service.ts
index 7971407954ace37ac44265221a3234f468a889a1..df579cc4d77bcb336f0ae5e69b8d7a4ad941acbd 100644
--- a/projects/nshmp-apps/src/app/internal/aws/haz-job-history/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/internal/aws/haz-job-history/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {AwsService} from '@ghsc/nshmp-lib-ng/aws';
 import {NshmpService, nshmpUtils} from '@ghsc/nshmp-lib-ng/nshmp';
 import {DynamoDBItem} from '@ghsc/nshmp-utils-ts/libs/aws/run-nshmp-haz';
@@ -33,7 +35,7 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
     private nshmpService: NshmpService,
     private awsService: AwsService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     this.addValidators();
     this.formGroup.valueChanges.subscribe(() => this.updateUrl());
@@ -169,12 +171,9 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
       id: this.formGroup.getRawValue().id,
     };
 
-    this.router
-      .navigate([internalApps().aws.hazJobHistory.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      internalApps().aws.hazJobHistory.routerLink,
+      new HttpParams().appendAll(query).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/components/job-submitted/job-submitted.component.ts b/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/components/job-submitted/job-submitted.component.ts
index ddc0532a752d169de15770a658ce66936983e8de..e93371632bd2881811c1aa0a8afe9204b388b2cf 100644
--- a/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/components/job-submitted/job-submitted.component.ts
+++ b/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/components/job-submitted/job-submitted.component.ts
@@ -1,5 +1,5 @@
 import {CdkScrollable} from '@angular/cdk/scrolling';
-import {AsyncPipe, Location} from '@angular/common';
+import {Location} from '@angular/common';
 import {Component} from '@angular/core';
 import {MatButton} from '@angular/material/button';
 import {MatCardModule} from '@angular/material/card';
@@ -28,7 +28,6 @@ import {AppService} from '../../services/app.service';
     MatDialogActions,
     MatButton,
     MatDialogClose,
-    AsyncPipe,
     YamlPipe,
     MatCardModule,
     MatExpansionModule,
diff --git a/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/services/app.service.ts b/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/services/app.service.ts
index 404fbf14a096c11a0da90c93f4a7b12aa3a51f3b..08eac8789c5dae172e34fa66f4db5fe06db8ab3c 100644
--- a/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/internal/aws/submit-haz-jobs/services/app.service.ts
@@ -420,7 +420,6 @@ export class AppService implements AppServiceModel<AppState, RunNshmpHazForm> {
     controls.email.addValidators([
       control => Validators.required(control),
       control => Validators.email(control),
-      Validators.pattern(/@usgs.gov$/),
     ]);
 
     controls.modelGitUrl.addValidators([
diff --git a/projects/nshmp-apps/src/app/internal/aws/terminate-haz-jobs/services/app.service.ts b/projects/nshmp-apps/src/app/internal/aws/terminate-haz-jobs/services/app.service.ts
index 8b5b4b56adb616605af73de0c6042617e1beaeec..0ad70cbcdcc1ef5e7008248c57be6edb97274092 100644
--- a/projects/nshmp-apps/src/app/internal/aws/terminate-haz-jobs/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/internal/aws/terminate-haz-jobs/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   AwsService,
   IdForm,
@@ -33,7 +35,7 @@ export class AppService implements AppServiceModel<AppState, IdForm> {
     private nshmpService: NshmpService,
     private awsService: AwsService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     this.addValidators();
     this.formGroup.valueChanges.subscribe(() => this.updateUrl());
@@ -154,12 +156,9 @@ export class AppService implements AppServiceModel<AppState, IdForm> {
       id: this.formGroup.getRawValue().id,
     };
 
-    this.router
-      .navigate([internalApps().aws.terminateHazJobs.routerLink], {
-        queryParams: {
-          ...query,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      internalApps().aws.terminateHazJobs.routerLink,
+      new HttpParams().appendAll(query).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/ncm/geophysical-profiles/services/app.service.ts b/projects/nshmp-apps/src/app/ncm/geophysical-profiles/services/app.service.ts
index cd895db09ad8f8211983734bc043e387392f812c..adc3948c23171e454e8d6fbf3b4285c0e23ece4d 100644
--- a/projects/nshmp-apps/src/app/ncm/geophysical-profiles/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/ncm/geophysical-profiles/services/app.service.ts
@@ -1,7 +1,8 @@
+import {Location as LocationService} from '@angular/common';
 import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {FormBuilder, Validators} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {
   FormGroupControls,
   NshmpService,
@@ -68,7 +69,7 @@ export class AppService
     private spinnerService: SpinnerService,
     private nshmpService: NshmpService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
 
@@ -546,15 +547,16 @@ export class AppService
       .map(control => control.getRawValue())
       .map(value => `${value.latitude},${value.longitude}`);
 
-    this.router
-      .navigate([apps().ncm.geophysicalProfiles.routerLink], {
-        queryParams: {
+    this.location.replaceState(
+      apps().ncm.geophysicalProfiles.routerLink,
+      new HttpParams()
+        .appendAll({
           depthInc: values.depthInc,
           depthMax: values.depthMax,
           depthMin: values.depthMin,
           location,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+        })
+        .toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/source/mfd/services/app.service.ts b/projects/nshmp-apps/src/app/source/mfd/services/app.service.ts
index 9d95d18d7b185d6ac98bd8f0233f6c11aca51cd3..5a25b8a13feb4f0e184c1b78a5560a3598b98645 100644
--- a/projects/nshmp-apps/src/app/source/mfd/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/source/mfd/services/app.service.ts
@@ -1,3 +1,5 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {
   AbstractControl,
@@ -5,7 +7,7 @@ import {
   FormGroup,
   Validators,
 } from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {HazardService, hazardUtils} from '@ghsc/nshmp-lib-ng/hazard';
 import {
   FormGroupControls,
@@ -109,7 +111,7 @@ export class AppService
     private nshmpService: NshmpService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.formGroup.controls.mfdType.disable();
@@ -904,13 +906,10 @@ export class AppService
       weightedMfds: values.weightedMfds.toString(),
     };
 
-    this.router
-      .navigate([apps().source.mfd.routerLink], {
-        queryParams: {
-          ...queryParams,
-        },
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().source.mfd.routerLink,
+      new HttpParams().appendAll({...queryParams}).toString()
+    );
   }
 
   private updateUsageUrl() {
diff --git a/projects/nshmp-apps/src/app/source/model-maps/services/app.service.ts b/projects/nshmp-apps/src/app/source/model-maps/services/app.service.ts
index 4b8e84e30953bea76f9080ad6b6ed7ee1e4c6fd2..1ea217d2f968f8dd11364b0787129a789c5dcf8f 100644
--- a/projects/nshmp-apps/src/app/source/model-maps/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/source/model-maps/services/app.service.ts
@@ -1,4 +1,5 @@
-import {HttpClient} from '@angular/common/http';
+import {Location as LocationService} from '@angular/common';
+import {HttpClient, HttpParams} from '@angular/common/http';
 import {computed, Injectable, NgZone, Signal, signal} from '@angular/core';
 import {
   AbstractControl,
@@ -6,7 +7,7 @@ import {
   FormControl,
   Validators,
 } from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {HazardService} from '@ghsc/nshmp-lib-ng/hazard';
 import {mapUtils} from '@ghsc/nshmp-lib-ng/map';
 import {
@@ -132,7 +133,7 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
     private http: HttpClient,
     private zone: NgZone,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     this.addValidators();
   }
@@ -1289,10 +1290,9 @@ export class AppService implements AppServiceModel<AppState, ControlForm> {
   }
 
   private updateUrl(): void {
-    this.router
-      .navigate([apps().source.data.routerLink], {
-        queryParams: this.formGroup.getRawValue(),
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().source.data.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 }
diff --git a/projects/nshmp-apps/src/app/source/rates/services/app.service.ts b/projects/nshmp-apps/src/app/source/rates/services/app.service.ts
index a90a60d0a1362dbb37c6fa7f2a6260c396f4b0de..edd7eaea300058f7fe76c28853d89f62af864d8c 100644
--- a/projects/nshmp-apps/src/app/source/rates/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/source/rates/services/app.service.ts
@@ -1,6 +1,8 @@
+import {Location as LocationService} from '@angular/common';
+import {HttpParams} from '@angular/common/http';
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {FormBuilder} from '@angular/forms';
-import {ActivatedRoute, Router} from '@angular/router';
+import {ActivatedRoute} from '@angular/router';
 import {HazardService, hazardUtils} from '@ghsc/nshmp-lib-ng/hazard';
 import {
   NshmpService,
@@ -59,7 +61,7 @@ export class AppService
     private spinnerService: SpinnerService,
     private hazardService: HazardService,
     private route: ActivatedRoute,
-    private router: Router
+    private location: LocationService
   ) {
     super();
     this.addValidators();
@@ -460,11 +462,10 @@ export class AppService
    * Update to URL query parameters.
    */
   private updateUrl(): void {
-    this.router
-      .navigate([apps().source.rateAndProbability.routerLink], {
-        queryParams: this.formGroup.getRawValue(),
-      })
-      .catch((error: Error) => this.nshmpService.throwError$(error));
+    this.location.replaceState(
+      apps().source.rateAndProbability.routerLink,
+      new HttpParams().appendAll(this.formGroup.getRawValue()).toString()
+    );
   }
 
   private updateUsageUrl(): void {