diff --git a/.eslintrc.js b/.eslintrc.js
index 486da69d3cc6725edb9bd205c10d2337c392e07a..190ad0dec7ba8c162089b8666f49c8d2a778df01 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -37,6 +37,7 @@ module.exports = {
 
     // other rules
     'consistent-return': 'error',
+    eqeqeq: 'error',
     'no-console': 'error',
     'no-negated-condition': 'error',
     'no-param-reassign': 'error',
diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index 6b548e4f665b53d8eaa4f5b530f0a9ef917c47ba..ddad631b66a5078de50099f51ff29964c54073c2 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -316,11 +316,11 @@ export function migrateConfig(
         migratedConfig.automergeType = 'branch';
       } else if (key === 'automergeMinor') {
         migratedConfig.minor = migratedConfig.minor || {};
-        migratedConfig.minor.automerge = val == true;
+        migratedConfig.minor.automerge = !!val;
         delete migratedConfig[key];
       } else if (key === 'automergeMajor') {
         migratedConfig.major = migratedConfig.major || {};
-        migratedConfig.major.automerge = val == true;
+        migratedConfig.major.automerge = !!val;
         delete migratedConfig[key];
       } else if (key === 'multipleMajorPrs') {
         delete migratedConfig.multipleMajorPrs;
@@ -336,7 +336,7 @@ export function migrateConfig(
         migratedConfig.separateMinorPatch = val;
       } else if (key === 'automergePatch') {
         migratedConfig.patch = migratedConfig.patch || {};
-        migratedConfig.patch.automerge = val == true;
+        migratedConfig.patch.automerge = !!val;
         delete migratedConfig[key];
       } else if (key === 'ignoreNodeModules') {
         delete migratedConfig.ignoreNodeModules;
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 7ca765b547fed4886c5ad0a5247239724637fe7a..fb99cc6f3d02fbf35f69597476c381b359fa8324 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -228,7 +228,7 @@ export async function validateConfig(
             message: `${currentPath}: ${errorMessage}`,
           });
         }
-      } else if (val != null) {
+      } else if (val !== null) {
         const type = optionTypes[key];
         if (type === 'boolean') {
           if (val !== true && val !== false) {
diff --git a/lib/datasource/galaxy-collection/index.ts b/lib/datasource/galaxy-collection/index.ts
index 8b57b2063eec68950e9152385665fcf6538720d7..74c333c95191464d92ed8e97aa5e11a5adc571c5 100644
--- a/lib/datasource/galaxy-collection/index.ts
+++ b/lib/datasource/galaxy-collection/index.ts
@@ -109,7 +109,7 @@ export class GalaxyCollectionDatasource extends Datasource {
       { concurrency: 5 } // allow 5 requests at maximum in parallel
     );
     // filter failed versions
-    const filteredReleases = enrichedReleases.filter((value) => value != null);
+    const filteredReleases = enrichedReleases.filter(Boolean);
     // extract base information which are only provided on the release from the newest release
     const result: ReleaseResult = {
       releases: filteredReleases,
diff --git a/lib/logger/utils.ts b/lib/logger/utils.ts
index 03604ac2a03f483804350e93d7e990bef277840e..a06363e7d17e9d9fbfc0b13bb9de7cbbbef365fa 100644
--- a/lib/logger/utils.ts
+++ b/lib/logger/utils.ts
@@ -114,7 +114,7 @@ export function sanitizeValue(_value: unknown, seen = new WeakMap()): any {
 
   const valueType = typeof value;
 
-  if (value != null && valueType !== 'function' && valueType === 'object') {
+  if (value && valueType !== 'function' && valueType === 'object') {
     if (value instanceof Date) {
       return value;
     }
diff --git a/lib/manager/ansible-galaxy/collections.ts b/lib/manager/ansible-galaxy/collections.ts
index 8bf6f2bdebc63fb357cacacd8f7f90ce475f5500..43888baf49a9b4754226ed07c7ad6715f10a7291 100644
--- a/lib/manager/ansible-galaxy/collections.ts
+++ b/lib/manager/ansible-galaxy/collections.ts
@@ -120,7 +120,7 @@ function finalize(dependency: PackageDependency): boolean {
       return true;
   }
 
-  if (dependency.currentValue == null && dep.skipReason == null) {
+  if (!dependency.currentValue && !dep.skipReason) {
     dep.skipReason = SkipReason.NoVersion;
   }
   return true;
diff --git a/lib/manager/ansible-galaxy/extract.spec.ts b/lib/manager/ansible-galaxy/extract.spec.ts
index 960e6f8ea3cb258828972a6b54bad9c52d9aba0e..1e2b80d0a62666e58f9599f86149e6f42f350036 100644
--- a/lib/manager/ansible-galaxy/extract.spec.ts
+++ b/lib/manager/ansible-galaxy/extract.spec.ts
@@ -35,9 +35,7 @@ describe('manager/ansible-galaxy/extract', () => {
       const res = extractPackageFile(collections1, 'requirements.yml');
       expect(res.deps).toMatchSnapshot();
       expect(res.deps).toHaveLength(13);
-      expect(res.deps.filter((value) => value.skipReason != null)).toHaveLength(
-        6
-      );
+      expect(res.deps.filter((value) => value.skipReason)).toHaveLength(6);
     });
     it('check collection style requirements file in reverse order and missing empty line', () => {
       const res = extractPackageFile(collections2, 'requirements.yml');
diff --git a/lib/manager/ansible-galaxy/roles.ts b/lib/manager/ansible-galaxy/roles.ts
index f47da5a9059998cfcd1495716bbf3320f4df3881..23aa4398147351e3e89e89ee733795cc8527c40d 100644
--- a/lib/manager/ansible-galaxy/roles.ts
+++ b/lib/manager/ansible-galaxy/roles.ts
@@ -94,7 +94,7 @@ export function extractRoles(lines: string[]): PackageDependency[] {
       };
       do {
         const localdep = interpretLine(lineMatch, lineNumber, dep);
-        if (localdep == null) {
+        if (!localdep) {
           break;
         }
         const line = lines[lineNumber + 1];
diff --git a/lib/manager/argocd/extract.ts b/lib/manager/argocd/extract.ts
index ae5d1dd730d36b3c129a0b4ffc6d944f044aaad0..9561f7c5061b5a6450de38252f9c43bb42c15e77 100644
--- a/lib/manager/argocd/extract.ts
+++ b/lib/manager/argocd/extract.ts
@@ -12,7 +12,7 @@ function createDependency(
   const source = definition.spec?.source;
 
   if (
-    source == null ||
+    !source ||
     !is.nonEmptyString(source.repoURL) ||
     !is.nonEmptyString(source.targetRevision)
   ) {
diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts
index 3dda4a837c9f89bca827a3100e285634f54e951a..ca14ee8325a28f8397a2cad72cc29eaccf8efd0b 100644
--- a/lib/manager/gradle-wrapper/artifacts.ts
+++ b/lib/manager/gradle-wrapper/artifacts.ts
@@ -126,7 +126,7 @@ export async function updateArtifacts({
           addIfUpdated(status, fileProjectPath)
         )
       )
-    ).filter((e) => e != null);
+    ).filter(Boolean);
     logger.debug(
       { files: updateArtifactsResult.map((r) => r.file.name) },
       `Returning updated gradle-wrapper files`
diff --git a/lib/manager/gradle/deep/__testutil__/gradle.ts b/lib/manager/gradle/deep/__testutil__/gradle.ts
index 444accb9a872d1466f6e4b3644d10e7aee56698b..41568651fb2635765a1180aee95d6e57db2a6237 100644
--- a/lib/manager/gradle/deep/__testutil__/gradle.ts
+++ b/lib/manager/gradle/deep/__testutil__/gradle.ts
@@ -28,7 +28,7 @@ ${javaVersionOutput}`);
 let cachedJavaVersion: number | null = null;
 
 function determineJavaVersion(): number {
-  if (cachedJavaVersion == null) {
+  if (!cachedJavaVersion) {
     let javaVersionCommand: SpawnSyncReturns<string>;
     let error: Error;
     try {
diff --git a/lib/manager/regex/index.ts b/lib/manager/regex/index.ts
index beb11affa4ce36f6fdd942162a8198c5a2e9536b..a5a327051ae10919eb99095d764535dc5a2ad7c6 100644
--- a/lib/manager/regex/index.ts
+++ b/lib/manager/regex/index.ts
@@ -150,7 +150,7 @@ function handleRecursive(
     regEx(matchString, 'g')
   );
   // abort if we have no matchString anymore
-  if (regexes[index] == null) {
+  if (!regexes[index]) {
     return [];
   }
   return regexMatchAll(regexes[index], content).flatMap((match) => {
diff --git a/lib/manager/terraform/lockfile/index.ts b/lib/manager/terraform/lockfile/index.ts
index 4fe381265a7f1199ec91bf41259ec84fab439322..c1a34a6d4ad5fef93ffb8caff1b6ac798d46bf3c 100644
--- a/lib/manager/terraform/lockfile/index.ts
+++ b/lib/manager/terraform/lockfile/index.ts
@@ -110,10 +110,7 @@ export async function updateArtifacts({
       }
     }
     // if no updates have been found or there are failed hashes abort
-    if (
-      updates.length === 0 ||
-      updates.some((value) => value.newHashes == null)
-    ) {
+    if (updates.length === 0 || updates.some((value) => !value.newHashes)) {
       return null;
     }
 
diff --git a/lib/manager/terraform/resources.ts b/lib/manager/terraform/resources.ts
index 7b441b5911eedaa428a70d294368fa8e1f180a7c..46bdf1abc3d0cbd634e976f365d5fdcf8e750645 100644
--- a/lib/manager/terraform/resources.ts
+++ b/lib/manager/terraform/resources.ts
@@ -94,7 +94,7 @@ export function analyseTerraformResource(
       break;
 
     case TerraformResourceTypes.helm_release:
-      if (dep.managerData.chart == null) {
+      if (!dep.managerData.chart) {
         dep.skipReason = SkipReason.InvalidName;
       } else if (checkIfStringIsPath(dep.managerData.chart)) {
         dep.skipReason = SkipReason.LocalChart;
diff --git a/lib/util/index.ts b/lib/util/index.ts
index a8a142dbebef8017488ca5561c5466db9406d64c..dcd33b5ceda2d71e28a97ab17b8d36637bc5768e 100644
--- a/lib/util/index.ts
+++ b/lib/util/index.ts
@@ -1,5 +1,5 @@
 export function sampleSize(array: string[], n: number): string[] {
-  const length = array == null ? 0 : array.length;
+  const length = array ? array.length : 0;
   if (!length || n < 1) {
     return [];
   }
diff --git a/lib/workers/repository/onboarding/branch/check.ts b/lib/workers/repository/onboarding/branch/check.ts
index c48f445c349291311d3a71f48ba896f22f800749..c609e41b4d7c3ab717bfeee37742d9355df11ee2 100644
--- a/lib/workers/repository/onboarding/branch/check.ts
+++ b/lib/workers/repository/onboarding/branch/check.ts
@@ -121,5 +121,4 @@ export const isOnboarded = async (config: RenovateConfig): Promise<boolean> => {
 
 export const onboardingPrExists = async (
   config: RenovateConfig
-): Promise<boolean> =>
-  (await platform.getBranchPr(config.onboardingBranch)) != null;
+): Promise<boolean> => !!(await platform.getBranchPr(config.onboardingBranch));