diff --git a/internal/experiment.go b/internal/experiment.go
index 8a221e7..f36f6ac 100644
--- a/internal/experiment.go
+++ b/internal/experiment.go
@@ -6,31 +6,27 @@
 package internal
 
 const (
-	ExperimentDeprecatedDoc             = "deprecated-doc"
-	ExperimentEnableStdFrontendFetch    = "enable-std-frontend-fetch"
-	ExperimentNewUnitLayout             = "new-unit-layout"
-	ExperimentSearchGrouping            = "search-grouping"
-	ExperimentSearchIncrementally       = "search-incrementally"
-	ExperimentSkipInsertSymbols         = "skip-insert-symbols"
-	ExperimentStyleGuide                = "styleguide"
-	ExperimentSymbolHistoryMainPage     = "symbol-history-main-page"
-	ExperimentSymbolHistoryVersionsPage = "symbol-history-versions-page"
-	ExperimentSymbolSearch              = "symbol-search"
+	ExperimentDeprecatedDoc          = "deprecated-doc"
+	ExperimentEnableStdFrontendFetch = "enable-std-frontend-fetch"
+	ExperimentNewUnitLayout          = "new-unit-layout"
+	ExperimentSearchGrouping         = "search-grouping"
+	ExperimentSearchIncrementally    = "search-incrementally"
+	ExperimentSkipInsertSymbols      = "skip-insert-symbols"
+	ExperimentStyleGuide             = "styleguide"
+	ExperimentSymbolSearch           = "symbol-search"
 )
 
 // Experiments represents all of the active experiments in the codebase and
 // a description of each experiment.
 var Experiments = map[string]string{
-	ExperimentDeprecatedDoc:             "Treat deprecated symbols specially in documentation.",
-	ExperimentEnableStdFrontendFetch:    "Enable frontend fetching for module std.",
-	ExperimentNewUnitLayout:             "Enable the new layout on the unit page.",
-	ExperimentSearchGrouping:            "Group search results.",
-	ExperimentSearchIncrementally:       "Use incremental query for search results.",
-	ExperimentSkipInsertSymbols:         "Don't insert data into symbols tables.",
-	ExperimentStyleGuide:                "Enable the styleguide.",
-	ExperimentSymbolHistoryMainPage:     "Show package API history on the main unit page.",
-	ExperimentSymbolHistoryVersionsPage: "Show package API history on the versions page.",
-	ExperimentSymbolSearch:              "Enable searching for symbols.",
+	ExperimentDeprecatedDoc:          "Treat deprecated symbols specially in documentation.",
+	ExperimentEnableStdFrontendFetch: "Enable frontend fetching for module std.",
+	ExperimentNewUnitLayout:          "Enable the new layout on the unit page.",
+	ExperimentSearchGrouping:         "Group search results.",
+	ExperimentSearchIncrementally:    "Use incremental query for search results.",
+	ExperimentSkipInsertSymbols:      "Don't insert data into symbols tables.",
+	ExperimentStyleGuide:             "Enable the styleguide.",
+	ExperimentSymbolSearch:           "Enable searching for symbols.",
 }
 
 // Experiment holds data associated with an experimental feature for frontend
diff --git a/internal/frontend/server_test.go b/internal/frontend/server_test.go
index 2c61084..c02f9f5 100644
--- a/internal/frontend/server_test.go
+++ b/internal/frontend/server_test.go
@@ -1198,16 +1198,6 @@
 			},
 		},
 		{
-			name: "symbol history experiments",
-			testCasesFunc: func() []serverTestCase {
-				return append(serverTestCases(), linksTestCases...)
-			},
-			experiments: []string{
-				internal.ExperimentSymbolHistoryMainPage,
-				internal.ExperimentSymbolHistoryVersionsPage,
-			},
-		},
-		{
 			name: "search grouping",
 			testCasesFunc: func() []serverTestCase {
 				return append(serverTestCases(), searchGroupingTestCases...)
diff --git a/internal/frontend/versions.go b/internal/frontend/versions.go
index a84d182..bd11c07 100644
--- a/internal/frontend/versions.go
+++ b/internal/frontend/versions.go
@@ -14,7 +14,6 @@
 
 	"golang.org/x/mod/semver"
 	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/log"
 	"golang.org/x/pkgsite/internal/postgres"
 	"golang.org/x/pkgsite/internal/stdlib"
@@ -93,9 +92,7 @@
 	}
 
 	sh := internal.NewSymbolHistory()
-	if !um.IsCommand() &&
-		(um.ModulePath == stdlib.ModulePath ||
-			experiment.IsActive(ctx, internal.ExperimentSymbolHistoryVersionsPage)) {
+	if !um.IsCommand() {
 		sh, err = db.GetSymbolHistory(ctx, um.Path, um.ModulePath)
 		if err != nil {
 			return nil, err
diff --git a/internal/frontend/versions_test.go b/internal/frontend/versions_test.go
index 0e05cb7..7358900 100644
--- a/internal/frontend/versions_test.go
+++ b/internal/frontend/versions_test.go
@@ -10,7 +10,6 @@
 
 	"github.com/google/go-cmp/cmp"
 	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/postgres"
 	"golang.org/x/pkgsite/internal/stdlib"
 	"golang.org/x/pkgsite/internal/testing/sample"
@@ -162,7 +161,6 @@
 	} {
 		t.Run(tc.name, func(t *testing.T) {
 			ctx, cancel := context.WithTimeout(context.Background(), testTimeout*2)
-			ctx = experiment.NewContext(ctx, internal.ExperimentSymbolHistoryVersionsPage)
 			defer cancel()
 			defer postgres.ResetTestDB(testDB, t)
 
diff --git a/internal/godoc/render_test.go b/internal/godoc/render_test.go
index d61f490..d2405e7 100644
--- a/internal/godoc/render_test.go
+++ b/internal/godoc/render_test.go
@@ -13,8 +13,6 @@
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/safehtml/template"
 	"golang.org/x/net/html"
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/godoc/dochtml"
 	"golang.org/x/pkgsite/internal/source"
 	"golang.org/x/pkgsite/internal/testing/htmlcheck"
@@ -88,8 +86,7 @@
 
 func TestRenderParts_SinceVersion(t *testing.T) {
 	dochtml.LoadTemplates(templateSource)
-	ctx := experiment.NewContext(context.Background(),
-		internal.ExperimentSymbolHistoryMainPage)
+	ctx := context.Background()
 	si := source.NewGitHubInfo("a.com/M", "", "abcde")
 	mi := &ModuleInfo{
 		ModulePath:      "a.com/M",
diff --git a/internal/postgres/unit.go b/internal/postgres/unit.go
index ee5fa1b..45b75ce 100644
--- a/internal/postgres/unit.go
+++ b/internal/postgres/unit.go
@@ -16,7 +16,6 @@
 	"golang.org/x/pkgsite/internal"
 	"golang.org/x/pkgsite/internal/database"
 	"golang.org/x/pkgsite/internal/derrors"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/middleware"
 	"golang.org/x/pkgsite/internal/stdlib"
 	"golang.org/x/pkgsite/internal/version"
@@ -539,17 +538,9 @@
 	u.UnitMeta = *um
 
 	if um.IsPackage() && !um.IsCommand() && doc.Source != nil {
-		if um.ModulePath == stdlib.ModulePath {
-			u.SymbolHistory, err = GetSymbolHistoryForBuildContext(ctx, db.db, pathID, um.ModulePath, bcMatched)
-			if err != nil {
-				return nil, err
-			}
-		}
-		if experiment.IsActive(ctx, internal.ExperimentSymbolHistoryMainPage) {
-			u.SymbolHistory, err = GetSymbolHistoryForBuildContext(ctx, db.db, pathID, um.ModulePath, bcMatched)
-			if err != nil {
-				return nil, err
-			}
+		u.SymbolHistory, err = GetSymbolHistoryForBuildContext(ctx, db.db, pathID, um.ModulePath, bcMatched)
+		if err != nil {
+			return nil, err
 		}
 	}
 	return &u, nil
diff --git a/internal/testing/integration/frontend_main_test.go b/internal/testing/integration/frontend_main_test.go
index a234166..009fc2b 100644
--- a/internal/testing/integration/frontend_main_test.go
+++ b/internal/testing/integration/frontend_main_test.go
@@ -12,8 +12,6 @@
 	"testing"
 
 	"golang.org/x/net/html"
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/postgres"
 	"golang.org/x/pkgsite/internal/testing/htmlcheck"
 )
@@ -26,9 +24,8 @@
 func TestFrontendMainPage(t *testing.T) {
 	defer postgres.ResetTestDB(testDB, t)
 
-	processVersions(
-		experiment.NewContext(context.Background(), internal.ExperimentSymbolHistoryMainPage),
-		t, testModules)
+	ctx := context.Background()
+	processVersions(ctx, t, testModules)
 
 	const modulePath = "example.com/symbols"
 	for _, test := range []struct {
@@ -91,7 +88,7 @@
 	} {
 		t.Run(test.name, func(t *testing.T) {
 			urlPath := fmt.Sprintf("/%s", test.pkgPath)
-			body := getFrontendPage(t, urlPath, internal.ExperimentSymbolHistoryMainPage)
+			body := getFrontendPage(t, urlPath)
 			doc, err := html.Parse(strings.NewReader(body))
 			if err != nil {
 				t.Fatal(err)
diff --git a/internal/testing/integration/frontend_symbol_test.go b/internal/testing/integration/frontend_symbol_test.go
index 93d6a86..aa5f0b6 100644
--- a/internal/testing/integration/frontend_symbol_test.go
+++ b/internal/testing/integration/frontend_symbol_test.go
@@ -10,8 +10,6 @@
 	"fmt"
 	"testing"
 
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/frontend"
 	"golang.org/x/pkgsite/internal/postgres"
 	"golang.org/x/pkgsite/internal/symbol"
@@ -19,9 +17,9 @@
 
 func TestSymbols(t *testing.T) {
 	defer postgres.ResetTestDB(testDB, t)
-	processVersions(
-		experiment.NewContext(context.Background(), internal.ExperimentSymbolHistoryVersionsPage),
-		t, testModules)
+
+	ctx := context.Background()
+	processVersions(ctx, t, testModules)
 
 	for _, test := range []struct {
 		name, pkgPath, modulePath string
@@ -50,7 +48,7 @@
 
 			// Get frontend data.
 			urlPath := fmt.Sprintf("/%s?tab=versions&m=json", test.pkgPath)
-			body := getFrontendPage(t, urlPath, internal.ExperimentSymbolHistoryVersionsPage)
+			body := getFrontendPage(t, urlPath)
 			var vd frontend.VersionsDetails
 			if err := json.Unmarshal([]byte(body), &vd); err != nil {
 				t.Fatalf("json.Unmarshal: %v\n %s", err, body)
diff --git a/internal/testing/integration/frontend_versions_test.go b/internal/testing/integration/frontend_versions_test.go
index 5a37687..7f71b62 100644
--- a/internal/testing/integration/frontend_versions_test.go
+++ b/internal/testing/integration/frontend_versions_test.go
@@ -12,17 +12,14 @@
 
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/frontend"
 	"golang.org/x/pkgsite/internal/postgres"
 )
 
 func TestFrontendVersionsPage(t *testing.T) {
 	defer postgres.ResetTestDB(testDB, t)
-	processVersions(
-		experiment.NewContext(context.Background(), internal.ExperimentSymbolHistoryVersionsPage),
-		t, testModules)
+	ctx := context.Background()
+	processVersions(ctx, t, testModules)
 
 	const modulePath = "example.com/symbols"
 	for _, test := range []struct {
@@ -37,7 +34,7 @@
 	} {
 		t.Run(test.name, func(t *testing.T) {
 			urlPath := fmt.Sprintf("/%s?tab=versions&m=json", test.pkgPath)
-			body := getFrontendPage(t, urlPath, internal.ExperimentSymbolHistoryVersionsPage)
+			body := getFrontendPage(t, urlPath)
 			var got frontend.VersionsDetails
 			if err := json.Unmarshal([]byte(body), &got); err != nil {
 				t.Fatalf("json.Unmarshal: %v", err)
diff --git a/internal/worker/refetch_test.go b/internal/worker/refetch_test.go
index ff7dc6b..0309aa8 100644
--- a/internal/worker/refetch_test.go
+++ b/internal/worker/refetch_test.go
@@ -117,6 +117,7 @@
 				Licenses:          sample.LicenseMetadata(),
 			},
 		},
+		SymbolHistory: map[string]string{"Bar": "v1.0.0"},
 	}
 	got, err := testDB.GetUnitMeta(ctx, pkgBar, internal.UnknownModulePath, version)
 	if err != nil {
diff --git a/tests/api/config.yaml b/tests/api/config.yaml
deleted file mode 100644
index 856b9db..0000000
--- a/tests/api/config.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-experiments:
-- Name: symbol-history-main-page
-  Rollout: 100
-- Name: symbol-history-versions-page
-  Rollout: 100
diff --git a/tests/api/run.sh b/tests/api/run.sh
index c86b0d4..352d48f 100755
--- a/tests/api/run.sh
+++ b/tests/api/run.sh
@@ -13,7 +13,6 @@
   trap docker_error ERR
 
   export GO_DISCOVERY_DATABASE_NAME=discovery_api_test
-  export GO_DISCOVERY_CONFIG_DYNAMIC=tests/api/config.yaml
   export GO_DISCOVERY_SEED_DB_FILE=tests/api/seed.txt
   dockercompose build && dockercompose run seeddb && dockercompose run api
 
diff --git a/tests/e2e/config.yaml b/tests/e2e/config.yaml
index 85b5066..2222e23 100644
--- a/tests/e2e/config.yaml
+++ b/tests/e2e/config.yaml
@@ -3,7 +3,3 @@
     rollout: 100
   - name: new-unit-layout
     rollout: 100
-  - name: symbol-history-main-page
-    rollout: 100
-  - name: symbol-history-versions-page
-    rollout: 100
