diff --git a/lib/index-basic.js b/lib/index-basic.js
index 857b4fc18aa..e445f45122d 100644
--- a/lib/index-basic.js
+++ b/lib/index-basic.js
@@ -15,12 +15,5 @@ Plotly.register([
     require('./pie')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-cartesian.js b/lib/index-cartesian.js
index 361911da404..50a1fcd09b7 100644
--- a/lib/index-cartesian.js
+++ b/lib/index-cartesian.js
@@ -24,12 +24,5 @@ Plotly.register([
     require('./violin')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-finance.js b/lib/index-finance.js
index 5a31855fd55..f6491a52d05 100644
--- a/lib/index-finance.js
+++ b/lib/index-finance.js
@@ -22,12 +22,5 @@ Plotly.register([
     require('./indicator')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-geo.js b/lib/index-geo.js
index 06f78aaa5e1..1a673119f57 100644
--- a/lib/index-geo.js
+++ b/lib/index-geo.js
@@ -15,12 +15,5 @@ Plotly.register([
     require('./choropleth')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-gl2d.js b/lib/index-gl2d.js
index a6d010cd910..20b75b60868 100644
--- a/lib/index-gl2d.js
+++ b/lib/index-gl2d.js
@@ -17,12 +17,5 @@ Plotly.register([
     require('./parcoords')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-gl3d.js b/lib/index-gl3d.js
index aa93e16da74..de23519bc76 100644
--- a/lib/index-gl3d.js
+++ b/lib/index-gl3d.js
@@ -20,12 +20,5 @@ Plotly.register([
     require('./streamtube')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-mapbox.js b/lib/index-mapbox.js
index aaf136ccaa1..ef337768dbb 100644
--- a/lib/index-mapbox.js
+++ b/lib/index-mapbox.js
@@ -16,12 +16,5 @@ Plotly.register([
     require('./densitymapbox')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index-strict.js b/lib/index-strict.js
index 6648652f7bb..24b5f21295b 100644
--- a/lib/index-strict.js
+++ b/lib/index-strict.js
@@ -56,17 +56,5 @@ Plotly.register([
     require('./barpolar')
 ]);
 
-// transforms
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
-// components
-Plotly.register([
-    require('./calendars')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/index.js b/lib/index.js
index 443fa207259..4cf645eecbe 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -71,26 +71,5 @@ Plotly.register([
     require('./barpolar')
 ]);
 
-// transforms
-//
-// Please note that all *transform* methods are executed before
-// all *calcTransform* methods - which could possibly lead to
-// unexpected results when applying multiple transforms of different types
-// to a given trace.
-//
-// For more info, see:
-// https://github.com/plotly/plotly.js/pull/978#pullrequestreview-2403353
-//
-Plotly.register([
-    require('./aggregate'),
-    require('./filter'),
-    require('./groupby'),
-    require('./sort')
-]);
-
-// components
-Plotly.register([
-    require('./calendars')
-]);
-
+require('./register_extra')(Plotly);
 module.exports = Plotly;
diff --git a/lib/register_extra.js b/lib/register_extra.js
new file mode 100644
index 00000000000..822125b419d
--- /dev/null
+++ b/lib/register_extra.js
@@ -0,0 +1,33 @@
+/**
+* Copyright 2012-2021, Plotly, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the MIT license found in the
+* LICENSE file in the root directory of this source tree.
+*/
+
+'use strict';
+
+module.exports = function registerExtra(Plotly) {
+    // transforms
+    //
+    // Please note that all *transform* methods are executed before
+    // all *calcTransform* methods - which could possibly lead to
+    // unexpected results when applying multiple transforms of different types
+    // to a given trace.
+    //
+    // For more info, see:
+    // https://github.com/plotly/plotly.js/pull/978#pullrequestreview-2403353
+    //
+    Plotly.register([
+        require('./aggregate'),
+        require('./filter'),
+        require('./groupby'),
+        require('./sort')
+    ]);
+
+    // components
+    Plotly.register([
+        require('./calendars')
+    ]);
+};