diff --git a/internal/experiment.go b/internal/experiment.go
index 60f4961..1627317 100644
--- a/internal/experiment.go
+++ b/internal/experiment.go
@@ -10,23 +10,21 @@
 )
 
 const (
-	ExperimentAutocomplete  = "autocomplete"
-	ExperimentFrontendFetch = "frontend-fetch"
-	ExperimentSidenav       = "sidenav"
-	ExperimentUnitPage      = "unit-page"
-	ExperimentUseUnits      = "use-units"
-	ExperimentUsePathInfo   = "use-path-info"
+	ExperimentAutocomplete = "autocomplete"
+	ExperimentSidenav      = "sidenav"
+	ExperimentUnitPage     = "unit-page"
+	ExperimentUseUnits     = "use-units"
+	ExperimentUsePathInfo  = "use-path-info"
 )
 
 // Experiments represents all of the active experiments in the codebase and
 // a description of each experiment.
 var Experiments = map[string]string{
-	ExperimentAutocomplete:  "Enable autocomplete with search.",
-	ExperimentFrontendFetch: "Enable ability to fetch a package that doesn't exist on pkg.go.dev.",
-	ExperimentSidenav:       "Display documentation index on the left sidenav.",
-	ExperimentUnitPage:      "Enable the redesigned details page.",
-	ExperimentUseUnits:      "Read from paths, documentation, readmes, and package_imports tables.",
-	ExperimentUsePathInfo:   "Check the paths table if a path exists, as opposed to the packages or modules table.",
+	ExperimentAutocomplete: "Enable autocomplete with search.",
+	ExperimentSidenav:      "Display documentation index on the left sidenav.",
+	ExperimentUnitPage:     "Enable the redesigned details page.",
+	ExperimentUseUnits:     "Read from paths, documentation, readmes, and package_imports tables.",
+	ExperimentUsePathInfo:  "Check the paths table if a path exists, as opposed to the packages or modules table.",
 }
 
 // Experiment holds data associated with an experimental feature for frontend
diff --git a/internal/frontend/details.go b/internal/frontend/details.go
index bdbe0d0..9d444d9 100644
--- a/internal/frontend/details.go
+++ b/internal/frontend/details.go
@@ -386,12 +386,9 @@
 	}
 }
 
-// pathFoundAtLatestError returns an error page when the fullPath exists, but
+// legacyPathFoundAtLatestError returns an error page when the fullPath exists, but
 // the version that is requested does not.
-func pathFoundAtLatestError(ctx context.Context, pathType, fullPath, requestedVersion string) error {
-	if isActiveFrontendFetch(ctx) {
-		return pathNotFoundError(fullPath, requestedVersion)
-	}
+func legacyPathFoundAtLatestError(pathType, fullPath, requestedVersion string) error {
 	return &serverError{
 		status: http.StatusNotFound,
 		epage: &errorPage{
diff --git a/internal/frontend/fetch.go b/internal/frontend/fetch.go
index 18f1ba0..c48b3a1 100644
--- a/internal/frontend/fetch.go
+++ b/internal/frontend/fetch.go
@@ -21,7 +21,6 @@
 	"golang.org/x/mod/module"
 	"golang.org/x/pkgsite/internal"
 	"golang.org/x/pkgsite/internal/derrors"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/fetch"
 	"golang.org/x/pkgsite/internal/log"
 	"golang.org/x/pkgsite/internal/postgres"
@@ -525,10 +524,6 @@
 	return http.StatusOK, nil
 }
 
-func isActiveFrontendFetch(ctx context.Context) bool {
-	return experiment.IsActive(ctx, internal.ExperimentFrontendFetch)
-}
-
 func recordFrontendFetchMetric(ctx context.Context, status int, latency time.Duration) {
 	l := float64(latency) / float64(time.Millisecond)
 
diff --git a/internal/frontend/legacy_module.go b/internal/frontend/legacy_module.go
index 9a281a6..89aa03f 100644
--- a/internal/frontend/legacy_module.go
+++ b/internal/frontend/legacy_module.go
@@ -41,7 +41,7 @@
 	if requestedVersion != internal.LatestVersion {
 		_, err = ds.LegacyGetModuleInfo(ctx, modulePath, internal.LatestVersion)
 		if err == nil {
-			return pathFoundAtLatestError(ctx, "module", modulePath, displayVersion(requestedVersion, modulePath))
+			return legacyPathFoundAtLatestError("module", modulePath, displayVersion(requestedVersion, modulePath))
 		}
 		if !errors.Is(err, derrors.NotFound) {
 			log.Errorf(ctx, "error checking for latest module: %v", err)
diff --git a/internal/frontend/legacy_package.go b/internal/frontend/legacy_package.go
index fa5fb37..aab14b1 100644
--- a/internal/frontend/legacy_package.go
+++ b/internal/frontend/legacy_package.go
@@ -57,7 +57,7 @@
 	}
 	_, err = ds.LegacyGetPackage(ctx, pkgPath, modulePath, internal.LatestVersion)
 	if err == nil {
-		return pathFoundAtLatestError(ctx, "package", pkgPath, requestedVersion)
+		return legacyPathFoundAtLatestError("package", pkgPath, requestedVersion)
 	}
 	if !errors.Is(err, derrors.NotFound) {
 		// Unlike the error handling for LegacyGetDirectory above, we don't serve an
