diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
index 6aa88ce21..476671ce0 100644
--- a/js/js-resources.gresource.xml
+++ b/js/js-resources.gresource.xml
@@ -17,6 +17,7 @@
misc/fileUtils.js
misc/dateUtils.js
misc/dbusUtils.js
+ misc/dependencies.js
misc/gnomeSession.js
misc/history.js
misc/ibusManager.js
diff --git a/js/misc/dependencies.js b/js/misc/dependencies.js
new file mode 100644
index 000000000..92f893d60
--- /dev/null
+++ b/js/misc/dependencies.js
@@ -0,0 +1,33 @@
+imports.gi.versions.AccountsService = '1.0';
+imports.gi.versions.Atk = '1.0';
+imports.gi.versions.Atspi = '2.0';
+imports.gi.versions.Gcr = '4';
+imports.gi.versions.Gdk = '4.0';
+imports.gi.versions.Gdm = '1.0';
+imports.gi.versions.Geoclue = '2.0';
+imports.gi.versions.Gio = '2.0';
+imports.gi.versions.GDesktopEnums = '3.0';
+imports.gi.versions.GdkPixbuf = '2.0';
+imports.gi.versions.GnomeBluetooth = '3.0';
+imports.gi.versions.GnomeBG = '4.0';
+imports.gi.versions.GnomeDesktop = '4.0';
+imports.gi.versions.Graphene = '1.0';
+imports.gi.versions.GWeather = '4.0';
+imports.gi.versions.IBus = '1.0';
+imports.gi.versions.Malcontent = '0';
+imports.gi.versions.NM = '1.0';
+imports.gi.versions.NMA4 = '1.0';
+imports.gi.versions.Pango = '1.0';
+imports.gi.versions.Polkit = '1.0';
+imports.gi.versions.PolkitAgent = '1.0';
+imports.gi.versions.Rsvg = '2.0';
+imports.gi.versions.Soup = '3.0';
+imports.gi.versions.TelepathyGLib = '0.12';
+imports.gi.versions.TelepathyLogger = '0.2';
+imports.gi.versions.UPowerGlib = '1.0';
+
+const Config = imports.misc.config;
+
+imports.gi.versions.Meta = Config.LIBMUTTER_API_VERSION;
+imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
+imports.gi.versions.Cogl = Config.LIBMUTTER_API_VERSION;
diff --git a/js/ui/environment.js b/js/ui/environment.js
index aee0f8ae5..7e873495e 100644
--- a/js/ui/environment.js
+++ b/js/ui/environment.js
@@ -1,37 +1,8 @@
-// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported init */
-const Config = imports.misc.config;
+// Load all required dependencies with the correct versions
+imports.misc.dependencies; // eslint-disable-line no-unused-expressions
-imports.gi.versions.AccountsService = '1.0';
-imports.gi.versions.Atk = '1.0';
-imports.gi.versions.Atspi = '2.0';
-imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
-imports.gi.versions.Cogl = Config.LIBMUTTER_API_VERSION;
-imports.gi.versions.Gcr = '4';
-imports.gi.versions.Gdk = '4.0';
-imports.gi.versions.Gdm = '1.0';
-imports.gi.versions.Geoclue = '2.0';
-imports.gi.versions.Gio = '2.0';
-imports.gi.versions.GDesktopEnums = '3.0';
-imports.gi.versions.GdkPixbuf = '2.0';
-imports.gi.versions.GnomeBluetooth = '3.0';
-imports.gi.versions.GnomeBG = '4.0';
-imports.gi.versions.GnomeDesktop = '4.0';
-imports.gi.versions.Graphene = '1.0';
-imports.gi.versions.GWeather = '4.0';
-imports.gi.versions.IBus = '1.0';
-imports.gi.versions.Malcontent = '0';
-imports.gi.versions.NM = '1.0';
-imports.gi.versions.NMA4 = '1.0';
-imports.gi.versions.Pango = '1.0';
-imports.gi.versions.Polkit = '1.0';
-imports.gi.versions.PolkitAgent = '1.0';
-imports.gi.versions.Rsvg = '2.0';
-imports.gi.versions.Soup = '3.0';
-imports.gi.versions.TelepathyGLib = '0.12';
-imports.gi.versions.TelepathyLogger = '0.2';
-imports.gi.versions.UPowerGlib = '1.0';
const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;