diff --git a/.eslintignore b/.eslintignore
index d9c2233c9d784085598b00d48593355adf9e2b56..93de4b10dfee9ebf31933d514ae3cb66e034ad32 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,4 @@
+/coverage/
 /coverage-javascript/
 /public/
 /tmp/
diff --git a/.eslintrc b/.eslintrc
index 788a88487d8c8aa66bf56845f4a85500192807e0..b80dcec9d1d3265bfbd33e51780bb1fec792b91b 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,15 +1,14 @@
 {
   "env": {
+    "jquery": true,
     "browser": true,
     "es6": true
   },
-  "extends": "airbnb",
+  "extends": "airbnb-base",
   "globals": {
-    "$": false,
     "_": false,
     "gl": false,
-    "gon": false,
-    "jQuery": false
+    "gon": false
   },
   "plugins": [
     "filenames"
diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js
index 812d5cde685b4e39ba80b6b23bbd116f66fed6a6..f334f35594da739e2fc476fd1d931b6c6657eb4e 100644
--- a/app/assets/javascripts/labels_select.js
+++ b/app/assets/javascripts/labels_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, no-unused-vars, one-var-declaration-per-line, prefer-template, no-new, consistent-return, object-shorthand, comma-dangle, no-shadow, no-param-reassign, brace-style, vars-on-top, quotes, no-lonely-if, no-else-return, no-undef, semi, dot-notation, no-empty, no-return-assign, camelcase, prefer-spread, padded-blocks, max-len */
+/* eslint-disable no-useless-return, func-names, space-before-function-paren, wrap-iife, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, no-unused-vars, one-var-declaration-per-line, prefer-template, no-new, consistent-return, object-shorthand, comma-dangle, no-shadow, no-param-reassign, brace-style, vars-on-top, quotes, no-lonely-if, no-else-return, no-undef, semi, dot-notation, no-empty, no-return-assign, camelcase, prefer-spread, padded-blocks, max-len */
 (function() {
   this.LabelsSelect = (function() {
     function LabelsSelect() {
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 47e7b6f831b2c13c5c39cf55fdd7b201a4e46550..0ca0e2555951efe44b9c87c006a3f0cd98220de0 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, camelcase, no-unused-expressions, quotes, max-len, one-var, one-var-declaration-per-line, default-case, prefer-template, no-undef, consistent-return, no-alert, no-return-assign, no-param-reassign, prefer-arrow-callback, no-else-return, comma-dangle, no-new, brace-style, no-lonely-if, vars-on-top, no-unused-vars, semi, indent, no-sequences, no-shadow, newline-per-chained-call, no-useless-escape, radix, padded-blocks, max-len */
+/* eslint-disable no-restricted-properties, func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, no-use-before-define, camelcase, no-unused-expressions, quotes, max-len, one-var, one-var-declaration-per-line, default-case, prefer-template, no-undef, consistent-return, no-alert, no-return-assign, no-param-reassign, prefer-arrow-callback, no-else-return, comma-dangle, no-new, brace-style, no-lonely-if, vars-on-top, no-unused-vars, semi, indent, no-sequences, no-shadow, newline-per-chained-call, no-useless-escape, radix, padded-blocks, max-len */
 
 /*= require autosave */
 /*= require autosize */
diff --git a/changelogs/unreleased/remove-jsx-react-eslint-plugins.yml b/changelogs/unreleased/remove-jsx-react-eslint-plugins.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6e02998b3a87221193e00dbbd313c49ff0a2d88b
--- /dev/null
+++ b/changelogs/unreleased/remove-jsx-react-eslint-plugins.yml
@@ -0,0 +1,5 @@
+---
+title: Changed eslint airbnb config to the base airbnb config and corrected eslintrc
+  plugins and envs
+merge_request: 7470
+author: Luke "Jared" Bennett
diff --git a/package.json b/package.json
index 350e4cd80c9a740c01a6917a9d29524153c0ee0f..961989f80127298b1f7c61424c1eb193cdb12172 100644
--- a/package.json
+++ b/package.json
@@ -6,13 +6,11 @@
     "eslint-report": "npm run eslint -- --format html --output-file ./eslint-report.html"
   },
   "devDependencies": {
-    "eslint": "^3.1.1",
-    "eslint-config-airbnb": "^12.0.0",
+    "eslint": "^3.10.1",
+    "eslint-config-airbnb-base": "^10.0.1",
     "eslint-plugin-filenames": "^1.1.0",
-    "eslint-plugin-import": "^1.16.0",
-    "eslint-plugin-jasmine": "^1.8.1",
-    "eslint-plugin-jsx-a11y": "^2.2.3",
-    "eslint-plugin-react": "^6.4.1",
+    "eslint-plugin-import": "^2.2.0",
+    "eslint-plugin-jasmine": "^2.1.0",
     "istanbul": "^0.4.5"
   }
 }
diff --git a/spec/javascripts/build_spec.js.es6 b/spec/javascripts/build_spec.js.es6
index d694727880fe04bce0a1ca3fbeaab09e481be83c..3983cad4c137122cdaff5bd93b4aed2cbcfccbf5 100644
--- a/spec/javascripts/build_spec.js.es6
+++ b/spec/javascripts/build_spec.js.es6
@@ -109,7 +109,7 @@ describe('Build', () => {
         expect($.ajax.calls.count()).toBe(2);
         let [{ url, dataType, success, context }] = $.ajax.calls.argsFor(1);
         expect(url).toBe(
-          `${BUILD_URL}/trace.json?state=${encodeURIComponent(INITIAL_BUILD_TRACE_STATE)}`
+          `${BUILD_URL}/trace.json?state=${encodeURIComponent(INITIAL_BUILD_TRACE_STATE)}`,
         );
         expect(dataType).toBe('json');
         expect(success).toEqual(jasmine.any(Function));
diff --git a/spec/javascripts/environments/environment_actions_spec.js.es6 b/spec/javascripts/environments/environment_actions_spec.js.es6
index c9ac7a73fd0ae8da175ed97b6fda0a03deb21541..76e81233e89178663689f9a8f4ba527832471da4 100644
--- a/spec/javascripts/environments/environment_actions_spec.js.es6
+++ b/spec/javascripts/environments/environment_actions_spec.js.es6
@@ -28,10 +28,10 @@ describe('Actions Component', () => {
     });
 
     expect(
-      component.$el.querySelectorAll('.dropdown-menu li').length
+      component.$el.querySelectorAll('.dropdown-menu li').length,
     ).toEqual(actionsMock.length);
     expect(
-      component.$el.querySelector('.dropdown-menu li a').getAttribute('href')
+      component.$el.querySelector('.dropdown-menu li a').getAttribute('href'),
     ).toEqual(actionsMock[0].play_path);
   });
 });
diff --git a/spec/javascripts/environments/environment_item_spec.js.es6 b/spec/javascripts/environments/environment_item_spec.js.es6
index 3c15e3b771959857f55c0fdbb9c5bbcc4872e838..14e90a9dd1b9c6e716bdd78282e90b8f7b2a8269 100644
--- a/spec/javascripts/environments/environment_item_spec.js.es6
+++ b/spec/javascripts/environments/environment_item_spec.js.es6
@@ -141,18 +141,18 @@ describe('Environment item', () => {
     describe('With deployment', () => {
       it('should render deployment internal id', () => {
         expect(
-          component.$el.querySelector('.deployment-column span').textContent
+          component.$el.querySelector('.deployment-column span').textContent,
         ).toContain(environment.last_deployment.iid);
 
         expect(
-          component.$el.querySelector('.deployment-column span').textContent
+          component.$el.querySelector('.deployment-column span').textContent,
         ).toContain('#');
       });
 
       describe('With user information', () => {
         it('should render user avatar with link to profile', () => {
           expect(
-            component.$el.querySelector('.js-deploy-user-container').getAttribute('href')
+            component.$el.querySelector('.js-deploy-user-container').getAttribute('href'),
           ).toEqual(environment.last_deployment.user.web_url);
         });
       });
@@ -160,13 +160,13 @@ describe('Environment item', () => {
       describe('With build url', () => {
         it('Should link to build url provided', () => {
           expect(
-            component.$el.querySelector('.build-link').getAttribute('href')
+            component.$el.querySelector('.build-link').getAttribute('href'),
           ).toEqual(environment.last_deployment.deployable.build_path);
         });
 
         it('Should render deployable name and id', () => {
           expect(
-            component.$el.querySelector('.build-link').getAttribute('href')
+            component.$el.querySelector('.build-link').getAttribute('href'),
           ).toEqual(environment.last_deployment.deployable.build_path);
         });
       });
@@ -174,7 +174,7 @@ describe('Environment item', () => {
       describe('With commit information', () => {
         it('should render commit component', () => {
           expect(
-            component.$el.querySelector('.js-commit-component')
+            component.$el.querySelector('.js-commit-component'),
           ).toBeDefined();
         });
       });
@@ -183,7 +183,7 @@ describe('Environment item', () => {
     describe('With manual actions', () => {
       it('Should render actions component', () => {
         expect(
-          component.$el.querySelector('.js-manual-actions-container')
+          component.$el.querySelector('.js-manual-actions-container'),
         ).toBeDefined();
       });
     });
@@ -191,7 +191,7 @@ describe('Environment item', () => {
     describe('With external URL', () => {
       it('should render external url component', () => {
         expect(
-          component.$el.querySelector('.js-external-url-container')
+          component.$el.querySelector('.js-external-url-container'),
         ).toBeDefined();
       });
     });
@@ -199,7 +199,7 @@ describe('Environment item', () => {
     describe('With stop action', () => {
       it('Should render stop action component', () => {
         expect(
-          component.$el.querySelector('.js-stop-component-container')
+          component.$el.querySelector('.js-stop-component-container'),
         ).toBeDefined();
       });
     });
@@ -207,7 +207,7 @@ describe('Environment item', () => {
     describe('With retry action', () => {
       it('Should render rollback component', () => {
         expect(
-          component.$el.querySelector('.js-rollback-component-container')
+          component.$el.querySelector('.js-rollback-component-container'),
         ).toBeDefined();
       });
     });
diff --git a/spec/javascripts/environments/environments_store_spec.js.es6 b/spec/javascripts/environments/environments_store_spec.js.es6
index 9b0b3cb1c652862fbe4d1add2399120eadf0bbc5..17c00acf63e3959e9e3bfa86ce81dabcb362c131 100644
--- a/spec/javascripts/environments/environments_store_spec.js.es6
+++ b/spec/javascripts/environments/environments_store_spec.js.es6
@@ -5,11 +5,11 @@
 //= require ./mock_data
 
 (() => {
-  beforeEach(() => {
-    gl.environmentsList.EnvironmentsStore.create();
-  });
-
   describe('Store', () => {
+    beforeEach(() => {
+      gl.environmentsList.EnvironmentsStore.create();
+    });
+
     it('should start with a blank state', () => {
       expect(gl.environmentsList.EnvironmentsStore.state.environments.length).toBe(0);
       expect(gl.environmentsList.EnvironmentsStore.state.stoppedCounter).toBe(0);
diff --git a/spec/javascripts/smart_interval_spec.js.es6 b/spec/javascripts/smart_interval_spec.js.es6
index 651d1f0f97509c8a9b19628252630ec4fa63e052..ed6166a25a83b40324e62c81596cc2b39594ce81 100644
--- a/spec/javascripts/smart_interval_spec.js.es6
+++ b/spec/javascripts/smart_interval_spec.js.es6
@@ -37,7 +37,7 @@
           const intervalConfig = this.smartInterval.cfg;
           const iterationCount = 4;
           const maxIntervalAfterIterations = intervalConfig.startingInterval *
-            Math.pow(intervalConfig.incrementByFactorOf, (iterationCount - 1)); // 40
+            (intervalConfig.incrementByFactorOf ** (iterationCount - 1)); // 40
           const currentInterval = interval.getCurrentInterval();
 
           // Provide some flexibility for performance of testing environment
diff --git a/spec/javascripts/vue_common_components/commit_spec.js.es6 b/spec/javascripts/vue_common_components/commit_spec.js.es6
index 0e3b82967c119c94f100e204bde6a1eb5bc7c5ca..b1dbc8bd5faaa542851f09638da6b3aa6274fe0c 100644
--- a/spec/javascripts/vue_common_components/commit_spec.js.es6
+++ b/spec/javascripts/vue_common_components/commit_spec.js.es6
@@ -74,26 +74,26 @@ describe('Commit component', () => {
     describe('Given commit title and author props', () => {
       it('Should render a link to the author profile', () => {
         expect(
-          component.$el.querySelector('.commit-title .avatar-image-container').getAttribute('href')
+          component.$el.querySelector('.commit-title .avatar-image-container').getAttribute('href'),
         ).toEqual(props.author.web_url);
       });
 
       it('Should render the author avatar with title and alt attributes', () => {
         expect(
-          component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('title')
+          component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('title'),
         ).toContain(props.author.username);
         expect(
-          component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('alt')
+          component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('alt'),
         ).toContain(`${props.author.username}'s avatar`);
       });
     });
 
     it('should render the commit title', () => {
       expect(
-        component.$el.querySelector('a.commit-row-message').getAttribute('href')
+        component.$el.querySelector('a.commit-row-message').getAttribute('href'),
       ).toEqual(props.commit_url);
       expect(
-        component.$el.querySelector('a.commit-row-message').textContent
+        component.$el.querySelector('a.commit-row-message').textContent,
       ).toContain(props.title);
     });
   });
@@ -119,7 +119,7 @@ describe('Commit component', () => {
       });
 
       expect(
-        component.$el.querySelector('.commit-title span').textContent
+        component.$el.querySelector('.commit-title span').textContent,
       ).toContain('Cant find HEAD commit for this branch');
     });
   });