diff --git a/lib/manager/ansible-galaxy/index.ts b/lib/manager/ansible-galaxy/index.ts
index 912d1c9518e1642fd40c12228cf184b02f389f11..844df06481efadec61246c4f8d7fcff78ac48464 100644
--- a/lib/manager/ansible-galaxy/index.ts
+++ b/lib/manager/ansible-galaxy/index.ts
@@ -2,8 +2,6 @@ import extractPackageFile from './extract';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)requirements\\.ya?ml$'],
 };
diff --git a/lib/manager/buildkite/index.ts b/lib/manager/buildkite/index.ts
index f5e32ab955273f7bf1d1a928d899a5e093cdc9c2..b11a9d6f821516b34d0407927628c39699398043 100644
--- a/lib/manager/buildkite/index.ts
+++ b/lib/manager/buildkite/index.ts
@@ -2,8 +2,6 @@ import { extractPackageFile } from './extract';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['buildkite\\.ya?ml', '\\.buildkite/.+\\.ya?ml$'],
   commitMessageTopic: 'buildkite plugin {{depName}}',
diff --git a/lib/manager/cdnurl/index.ts b/lib/manager/cdnurl/index.ts
index db62cd697474307ec9dad974b3d5efc1c8719062..edf2106e6533e37d13ad502c1273d8ed572ffd17 100644
--- a/lib/manager/cdnurl/index.ts
+++ b/lib/manager/cdnurl/index.ts
@@ -3,8 +3,6 @@ import { extractPackageFile } from './extract';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: [],
   versioning: semverVersioning.id,
diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index 9ef2e8e488e51c96eaaadc8c949ebd895cbc3bf0..88aa5d8415af24f646c1f08df809085afb392e22 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -75,7 +75,6 @@ export interface NpmLockFiles {
 export interface PackageFile<T = Record<string, any>>
   extends NpmLockFiles,
     ManagerData<T> {
-  autoReplace?: boolean;
   hasYarnWorkspaces?: boolean;
   internalPackages?: string[];
   compatibility?: Record<string, string>;
@@ -126,11 +125,6 @@ export interface Package<T> extends ManagerData<T> {
   prettyDepType?: any;
 }
 
-export interface AutoReplaceData {
-  replaceString: string;
-  depIndex?: number;
-}
-
 export interface LookupUpdate {
   blockedByPin?: boolean;
   branchName?: string;
@@ -174,7 +168,8 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> {
   toVersion?: string;
   updates?: LookupUpdate[];
   versionLine?: number;
-  autoReplaceData?: AutoReplaceData;
+  replaceString?: string;
+  depIndex?: number;
 }
 
 export interface Upgrade<T = Record<string, any>>
@@ -225,7 +220,6 @@ export interface UpdateDependencyConfig {
 
 export interface ManagerApi {
   defaultConfig: object;
-  autoReplace?: boolean;
   language?: string;
   supportsLockFileMaintenance?: boolean;
 
diff --git a/lib/manager/composer/index.ts b/lib/manager/composer/index.ts
index 5ef43c317858e847c441041d9fb961a95c1e267f..68451b7c53ce6093ad4dd8f97ed704bba5f7f4dd 100644
--- a/lib/manager/composer/index.ts
+++ b/lib/manager/composer/index.ts
@@ -6,7 +6,6 @@ import * as composerVersioning from '../../versioning/composer';
 
 const language = LANGUAGE_PHP;
 export const supportsLockFileMaintenance = true;
-export const autoReplace = true;
 
 export { extractPackageFile, updateArtifacts, language, getRangeStrategy };
 
diff --git a/lib/manager/deps-edn/index.ts b/lib/manager/deps-edn/index.ts
index 5f9ee54da32199e76903326103bf42c875450ea1..25df4094495b6c4f812c4d797dda15c87c0d30a7 100644
--- a/lib/manager/deps-edn/index.ts
+++ b/lib/manager/deps-edn/index.ts
@@ -3,8 +3,6 @@ import { extractPackageFile } from './extract';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)deps\\.edn$'],
   versioning: mavenVersioning.id,
diff --git a/lib/manager/gitlabci-include/index.ts b/lib/manager/gitlabci-include/index.ts
index fd9741711b9aef830fdbea0b33eb7542355c03fa..5b104316c6cce7fd8e703e42d406af9acb156ff6 100644
--- a/lib/manager/gitlabci-include/index.ts
+++ b/lib/manager/gitlabci-include/index.ts
@@ -2,8 +2,6 @@ import { extractPackageFile } from './extract';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['^\\.gitlab-ci\\.yml$'],
 };
diff --git a/lib/manager/html/__snapshots__/extract.spec.ts.snap b/lib/manager/html/__snapshots__/extract.spec.ts.snap
index 019f09b047ebdba302bc489b9a804524843f5c35..5554308518a8125f520613ec8ec9c4d2e25f92d0 100644
--- a/lib/manager/html/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/html/__snapshots__/extract.spec.ts.snap
@@ -4,102 +4,82 @@ exports[`manager/html/extract extractPackageFile 1`] = `
 Object {
   "deps": Array [
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.6.1/prop-types.min.js\\">",
-      },
       "currentValue": "15.6.1",
       "datasource": "cdnjs",
       "depName": "prop-types",
       "lookupName": "prop-types/prop-types.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.6.1/prop-types.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react/16.3.2/umd/react.production.min.js\\">",
-      },
       "currentValue": "16.3.2",
       "datasource": "cdnjs",
       "depName": "react",
       "lookupName": "react/umd/react.production.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react/16.3.2/umd/react.production.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.2/umd/react-dom.production.min.js\\">",
-      },
       "currentValue": "16.3.2",
       "datasource": "cdnjs",
       "depName": "react-dom",
       "lookupName": "react-dom/umd/react-dom.production.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.2/umd/react-dom.production.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-transition-group/2.2.1/react-transition-group.min.js\\">",
-      },
       "currentValue": "2.2.1",
       "datasource": "cdnjs",
       "depName": "react-transition-group",
       "lookupName": "react-transition-group/react-transition-group.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-transition-group/2.2.1/react-transition-group.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js\\">",
-      },
       "currentValue": "1.14.3",
       "datasource": "cdnjs",
       "depName": "popper.js",
       "lookupName": "popper.js/umd/popper.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script type=\\"text/javascript\\"
-            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-popper/0.10.4/umd/react-popper.min.js\\">",
-      },
       "currentValue": "0.10.4",
       "datasource": "cdnjs",
       "depName": "react-popper",
       "lookupName": "react-popper/umd/react-popper.min.js",
+      "replaceString": "<script type=\\"text/javascript\\"
+            src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-popper/0.10.4/umd/react-popper.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js\\">",
-      },
       "currentValue": "7.1.0",
       "datasource": "cdnjs",
       "depName": "reactstrap",
       "lookupName": "reactstrap/reactstrap.min.js",
+      "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script src=\\" https://cdnjs.cloudflare.com/ajax/libs/react-router/4.3.1/react-router.min.js\\">",
-      },
       "currentValue": "4.3.1",
       "datasource": "cdnjs",
       "depName": "react-router",
       "lookupName": "react-router/react-router.min.js",
+      "replaceString": "<script src=\\" https://cdnjs.cloudflare.com/ajax/libs/react-router/4.3.1/react-router.min.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-markdown/4.0.6/react-markdown.js\\">",
-      },
       "currentValue": "4.0.6",
       "datasource": "cdnjs",
       "depName": "react-markdown",
       "lookupName": "react-markdown/react-markdown.js",
+      "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/react-markdown/4.0.6/react-markdown.js\\">",
     },
     Object {
-      "autoReplaceData": Object {
-        "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js\\"
-            integrity=\\"sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=\\" crossorigin=\\"anonymous\\">",
-      },
       "currentDigest": "sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=",
       "currentValue": "0.18.0",
       "datasource": "cdnjs",
       "depName": "axios",
       "lookupName": "axios/axios.min.js",
+      "replaceString": "<script src=\\"https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js\\"
+            integrity=\\"sha256-mpnrJ5DpEZZkwkE1ZgkEQQJW/46CSEh/STrZKOB/qoM=\\" crossorigin=\\"anonymous\\">",
     },
   ],
 }
diff --git a/lib/manager/html/extract.ts b/lib/manager/html/extract.ts
index d9ec262dd27c5ed66a7fda0d6f760c134d64cdb2..6a5c89189875123c03e19f039ce5d81b012bcfa9 100644
--- a/lib/manager/html/extract.ts
+++ b/lib/manager/html/extract.ts
@@ -17,6 +17,7 @@ export function extractDep(tag: string): PackageDependency | null {
     depName,
     lookupName: `${depName}/${asset}`,
     currentValue,
+    replaceString: tag,
   };
   const integrityMatch = integrityRegex.exec(tag);
   if (integrityMatch) {
@@ -37,12 +38,7 @@ export function extractPackageFile(content: string): PackageFile {
     match = regex.exec(rest);
     const dep = extractDep(replaceString);
     if (dep) {
-      deps.push({
-        ...dep,
-        autoReplaceData: {
-          replaceString,
-        },
-      });
+      deps.push(dep);
     }
   }
   if (!deps.length) {
diff --git a/lib/manager/html/index.ts b/lib/manager/html/index.ts
index 058367de683737aa19560b0bdf2f23ff21e15e29..5b05144ecd41034cbf509ae76648dc581ddb7949 100644
--- a/lib/manager/html/index.ts
+++ b/lib/manager/html/index.ts
@@ -3,8 +3,6 @@ import * as semverVersioning from '../../versioning/semver';
 
 export { extractPackageFile };
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['\\.html?$'],
   versioning: semverVersioning.id,
diff --git a/lib/manager/index.spec.ts b/lib/manager/index.spec.ts
index 06fb46d22724ef5ada790bd319e7f330d4dd7422..f8cbb1229d0a3e106804475f909ff57286df0ec0 100644
--- a/lib/manager/index.spec.ts
+++ b/lib/manager/index.spec.ts
@@ -24,9 +24,6 @@ describe('manager', () => {
       if (!module.defaultConfig) {
         return false;
       }
-      if (!module.updateDependency && !module.autoReplace) {
-        return false;
-      }
       if (!module.extractPackageFile && !module.extractAllPackageFiles) {
         return false;
       }
diff --git a/lib/manager/kustomize/index.ts b/lib/manager/kustomize/index.ts
index ce5bdde2f02366fd82c355698b184f7f85ca540c..c76d0f9977968c1c48792937162ccf3ec59eeb00 100644
--- a/lib/manager/kustomize/index.ts
+++ b/lib/manager/kustomize/index.ts
@@ -1,7 +1,5 @@
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)kustomization\\.yaml'],
 };
diff --git a/lib/manager/leiningen/index.ts b/lib/manager/leiningen/index.ts
index b5e2f90033bc4ce96084e9d7920d5fa49a4e06c1..f501592d2cfe6ccda2001515cd1d05dd01a8d149 100644
--- a/lib/manager/leiningen/index.ts
+++ b/lib/manager/leiningen/index.ts
@@ -2,8 +2,6 @@ import * as mavenVersioning from '../../versioning/maven';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)project\\.clj$'],
   versioning: mavenVersioning.id,
diff --git a/lib/manager/nodenv/index.ts b/lib/manager/nodenv/index.ts
index 80a723945f2ec596d227ddbdd9f1810822adef4e..f1298b8370557a778060a8751054af2002e1ff42 100644
--- a/lib/manager/nodenv/index.ts
+++ b/lib/manager/nodenv/index.ts
@@ -3,8 +3,6 @@ import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const language = LANGUAGE_NODE;
 
 export const defaultConfig = {
diff --git a/lib/manager/nuget/index.ts b/lib/manager/nuget/index.ts
index 7dc18d87a8ac16ca3511c1e211d317aabb350418..f42cb6035220dcfd808005bef33f405f86c026f4 100644
--- a/lib/manager/nuget/index.ts
+++ b/lib/manager/nuget/index.ts
@@ -2,8 +2,6 @@ import { LANGUAGE_DOT_NET } from '../../constants/languages';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const language = LANGUAGE_DOT_NET;
 
 export const defaultConfig = {
diff --git a/lib/manager/nvm/index.ts b/lib/manager/nvm/index.ts
index 39baa77b422e21fce9b7b28446c46a4f5bcb82f4..5780252f18c7da5d42f731487a046efef0a76a5c 100644
--- a/lib/manager/nvm/index.ts
+++ b/lib/manager/nvm/index.ts
@@ -3,8 +3,6 @@ import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const language = LANGUAGE_NODE;
 
 export const defaultConfig = {
diff --git a/lib/manager/pip_requirements/index.ts b/lib/manager/pip_requirements/index.ts
index 5c9b72905095f50109b29fc3431bbc09e2716708..3b321a2fc92ff20714f4524711238150c69af460 100644
--- a/lib/manager/pip_requirements/index.ts
+++ b/lib/manager/pip_requirements/index.ts
@@ -5,8 +5,6 @@ export { getRangeStrategy } from './range';
 
 export const language = LANGUAGE_PYTHON;
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)([\\w-]*)requirements.(txt|pip)$'],
 };
diff --git a/lib/manager/pip_setup/index.ts b/lib/manager/pip_setup/index.ts
index 854761c722224c2d1000a4770b2490f86b339741..30d0b4489fa889a86f4433a2034688f95b36223b 100644
--- a/lib/manager/pip_setup/index.ts
+++ b/lib/manager/pip_setup/index.ts
@@ -4,8 +4,6 @@ export { extractPackageFile } from './extract';
 
 export const language = LANGUAGE_PYTHON;
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)setup.py$'],
 };
diff --git a/lib/manager/pub/index.ts b/lib/manager/pub/index.ts
index 245129a5d6ea8dc2922c8c9d5fb96de8dbd40849..dcdceecd7fd3a9d009aeb2dc60d3965fa949bc99 100644
--- a/lib/manager/pub/index.ts
+++ b/lib/manager/pub/index.ts
@@ -2,8 +2,6 @@ import * as npmVersioning from '../../versioning/npm';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)pubspec\\.ya?ml$'],
   versioning: npmVersioning.id,
diff --git a/lib/manager/regex/__snapshots__/index.spec.ts.snap b/lib/manager/regex/__snapshots__/index.spec.ts.snap
index 5aa0872b4c45a74bc7ff6cd1dee670eb89f7828d..90ed65cf6ca0e0165f088ab3c338f1895af3e91b 100644
--- a/lib/manager/regex/__snapshots__/index.spec.ts.snap
+++ b/lib/manager/regex/__snapshots__/index.spec.ts.snap
@@ -4,91 +4,67 @@ exports[`manager/regex/index extracts multiple dependencies 1`] = `
 Object {
   "deps": Array [
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 0,
-        "replaceString": "ENV GRADLE_VERSION=6.2 # gradle-version/gradle&versioning=maven
-",
-      },
       "currentValue": "6.2",
       "datasource": "gradle-version",
       "depName": "gradle",
+      "replaceString": "ENV GRADLE_VERSION=6.2 # gradle-version/gradle&versioning=maven
+",
       "versioning": "maven",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 1,
-        "replaceString": "ENV NODE_VERSION=10.19.0 # github-tags/nodejs/node&versioning=node
-",
-      },
       "currentValue": "10.19.0",
       "datasource": "github-tags",
       "depName": "nodejs/node",
+      "replaceString": "ENV NODE_VERSION=10.19.0 # github-tags/nodejs/node&versioning=node
+",
       "versioning": "node",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 2,
-        "replaceString": "ENV COMPOSER_VERSION=1.9.3 # github-releases/composer/composer
-",
-      },
       "currentValue": "1.9.3",
       "datasource": "github-releases",
       "depName": "composer/composer",
+      "replaceString": "ENV COMPOSER_VERSION=1.9.3 # github-releases/composer/composer
+",
       "versioning": "semver",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 3,
-        "replaceString": "ENV COCOAPODS_VERSION=1.9.0 # rubygems/cocoapods&versioning=ruby
-",
-      },
       "currentValue": "1.9.0",
       "datasource": "rubygems",
       "depName": "cocoapods",
+      "replaceString": "ENV COCOAPODS_VERSION=1.9.0 # rubygems/cocoapods&versioning=ruby
+",
       "versioning": "ruby",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 4,
-        "replaceString": "ENV DOCKER_VERSION=19.03.1 # github-releases/docker/docker-ce&versioning=docker
-",
-      },
       "currentValue": "19.03.1",
       "datasource": "github-releases",
       "depName": "docker/docker-ce",
+      "replaceString": "ENV DOCKER_VERSION=19.03.1 # github-releases/docker/docker-ce&versioning=docker
+",
       "versioning": "docker",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 5,
-        "replaceString": "ENV POETRY_VERSION=1.0.0 # github-releases/python-poetry/poetry
-",
-      },
       "currentValue": "1.0.0",
       "datasource": "github-releases",
       "depName": "python-poetry/poetry",
+      "replaceString": "ENV POETRY_VERSION=1.0.0 # github-releases/python-poetry/poetry
+",
       "versioning": "semver",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 6,
-        "replaceString": "ENV NPM_VERSION=6.10.2 # npm/npm
-",
-      },
       "currentValue": "6.10.2",
       "datasource": "npm",
       "depName": "npm",
+      "replaceString": "ENV NPM_VERSION=6.10.2 # npm/npm
+",
       "versioning": "semver",
     },
     Object {
-      "autoReplaceData": Object {
-        "depIndex": 7,
-        "replaceString": "ENV YARN_VERSION=1.19.1 # npm/yarn
-",
-      },
       "currentValue": "1.19.1",
       "datasource": "npm",
       "depName": "yarn",
+      "replaceString": "ENV YARN_VERSION=1.19.1 # npm/yarn
+",
       "versioning": "semver",
     },
   ],
diff --git a/lib/manager/regex/index.ts b/lib/manager/regex/index.ts
index 93dfd2265a53b59a555c4bd5e0a662e6293d1f5c..3c0cff43bcd2f549108b0ad66601dcf19d40e715 100644
--- a/lib/manager/regex/index.ts
+++ b/lib/manager/regex/index.ts
@@ -3,8 +3,6 @@ import { CustomExtractConfig, PackageFile, Result } from '../common';
 import { regEx } from '../../util/regex';
 import { logger } from '../../logger';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   pinDigests: false,
 };
@@ -17,7 +15,6 @@ export function extractPackageFile(
   const regexMatch = regEx(config.matchStrings[0], 'g');
   const deps = [];
   let matchResult;
-  let depIndex = 0;
   do {
     matchResult = regexMatch.exec(content);
     if (matchResult) {
@@ -47,13 +44,9 @@ export function extractPackageFile(
           dep[field] = groups[field];
         }
       }
-      dep.autoReplaceData = {
-        depIndex,
-        replaceString: `${matchResult[0]}`,
-      };
+      dep.replaceString = `${matchResult[0]}`;
       deps.push(dep);
     }
-    depIndex += 1;
   } while (matchResult);
   if (deps.length) {
     return { deps, matchStrings: config.matchStrings };
diff --git a/lib/manager/ruby-version/index.ts b/lib/manager/ruby-version/index.ts
index 17619c7d6461874e89ca1e6fbd1edb30cf5817f5..8f9b439c4df1465b34cf54916cf3469a843f51ac 100644
--- a/lib/manager/ruby-version/index.ts
+++ b/lib/manager/ruby-version/index.ts
@@ -3,7 +3,6 @@ import * as rubyVersioning from '../../versioning/ruby';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
 export const language = LANGUAGE_RUBY;
 
 export const defaultConfig = {
diff --git a/lib/manager/sbt/index.ts b/lib/manager/sbt/index.ts
index 424d3cecf45e04415cc767eeecdbb65d0bf05c02..e587990399cc5a5d818fb5aa9594e24714896d29 100644
--- a/lib/manager/sbt/index.ts
+++ b/lib/manager/sbt/index.ts
@@ -2,8 +2,6 @@ import * as ivyVersioning from '../../versioning/ivy';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['\\.sbt$', 'project/[^/]*.scala$'],
   versioning: ivyVersioning.id,
diff --git a/lib/manager/swift/index.ts b/lib/manager/swift/index.ts
index b94f2f434b286d28272d18e29a9e61b800ff7ad4..e9102b4cf28e42203b91f7608b9d22b33c64f5a7 100644
--- a/lib/manager/swift/index.ts
+++ b/lib/manager/swift/index.ts
@@ -2,8 +2,6 @@ import * as swiftVersioning from '../../versioning/swift';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   fileMatch: ['(^|/)Package\\.swift'],
   versioning: swiftVersioning.id,
diff --git a/lib/manager/terraform/index.ts b/lib/manager/terraform/index.ts
index 1fc4cbb4a22eb01e689b6358fe44d06663978c3b..7e21d3abf6f49beb7d649333287f8ddbd04d4c26 100644
--- a/lib/manager/terraform/index.ts
+++ b/lib/manager/terraform/index.ts
@@ -2,8 +2,6 @@ import * as hashicorpVersioning from '../../versioning/hashicorp';
 
 export { extractPackageFile } from './extract';
 
-export const autoReplace = true;
-
 export const defaultConfig = {
   commitMessageTopic:
     'Terraform {{managerData.terraformDependencyType}} {{depNameShort}}',
diff --git a/lib/workers/branch/auto-replace.spec.ts b/lib/workers/branch/auto-replace.spec.ts
index c0c5941adff33885ea59debc6bd271e0cc3ef1cd..ba7b8ffcbdaef2f1cb2a56670d9ca53e35237f30 100644
--- a/lib/workers/branch/auto-replace.spec.ts
+++ b/lib/workers/branch/auto-replace.spec.ts
@@ -47,9 +47,7 @@ describe('workers/branch/auto-replace', () => {
       upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js';
       upgrade.currentValue = '7.1.0';
       upgrade.newValue = '7.1.1';
-      upgrade.autoReplaceData = {
-        depIndex: 0,
-      };
+      upgrade.depIndex = 0;
       const res = await doAutoReplace(upgrade, src, parentBranch);
       expect(res).toMatchSnapshot();
     });
@@ -62,10 +60,8 @@ describe('workers/branch/auto-replace', () => {
       upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js';
       upgrade.currentValue = '7.1.0';
       upgrade.newValue = '7.1.1';
-      upgrade.autoReplaceData = {
-        depIndex: 0,
-        replaceString: script,
-      };
+      upgrade.depIndex = 0;
+      upgrade.replaceString = script;
       parentBranch = 'something';
       const srcAlreadyUpdated = src.replace('7.1.0', '7.1.1');
       const res = await doAutoReplace(upgrade, srcAlreadyUpdated, parentBranch);
@@ -80,10 +76,8 @@ describe('workers/branch/auto-replace', () => {
       upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js';
       upgrade.currentValue = '7.1.0';
       upgrade.newValue = '7.1.1';
-      upgrade.autoReplaceData = {
-        depIndex: 0,
-        replaceString: script,
-      };
+      upgrade.depIndex = 0;
+      upgrade.replaceString = script;
       const res = await doAutoReplace(upgrade, 'wrong source', parentBranch);
       expect(res).toEqual('wrong source');
     });
@@ -99,10 +93,8 @@ describe('workers/branch/auto-replace', () => {
         'sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx';
       upgrade.newValue = '0.11.1';
       upgrade.newDigest = 'sha256-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-      upgrade.autoReplaceData = {
-        depIndex: 0,
-        replaceString: script,
-      };
+      upgrade.depIndex = 0;
+      upgrade.replaceString = script;
       const res = await doAutoReplace(upgrade, src, parentBranch);
       expect(res).toMatchSnapshot();
     });
diff --git a/lib/workers/branch/auto-replace.ts b/lib/workers/branch/auto-replace.ts
index a0f4b18d343a069cc3475670f53797559a63bc2c..3db55742f60c0b723a038227597f2263ff283a61 100644
--- a/lib/workers/branch/auto-replace.ts
+++ b/lib/workers/branch/auto-replace.ts
@@ -8,13 +8,7 @@ export async function confirmIfDepUpdated(
   upgrade,
   newContent: string
 ): Promise<boolean> {
-  const {
-    manager,
-    packageFile,
-    newValue,
-    newDigest,
-    autoReplaceData,
-  } = upgrade;
+  const { manager, packageFile, newValue, newDigest, depIndex } = upgrade;
   const extractPackageFile = get(manager, 'extractPackageFile');
   let newUpgrade;
   try {
@@ -23,7 +17,7 @@ export async function confirmIfDepUpdated(
       packageFile,
       upgrade
     );
-    newUpgrade = newExtract.deps[autoReplaceData.depIndex];
+    newUpgrade = newExtract.deps[depIndex];
   } catch (err) /* istanbul ignore next */ {
     logger.debug('Failed to parse newContent');
   }
@@ -77,15 +71,8 @@ export async function doAutoReplace(
     logger.debug('Branch dep is already updated');
     return existingContent;
   }
-  const {
-    depName,
-    currentValue,
-    newValue,
-    currentDigest,
-    newDigest,
-    autoReplaceData,
-  } = upgrade;
-  const replaceString = autoReplaceData?.replaceString || currentValue;
+  const { depName, currentValue, newValue, currentDigest, newDigest } = upgrade;
+  const replaceString = upgrade.replaceString || currentValue;
   logger.trace({ depName, replaceString }, 'autoReplace replaceString');
   let searchIndex = existingContent.indexOf(replaceString);
   if (searchIndex === -1) {
diff --git a/lib/workers/branch/get-updated.spec.ts b/lib/workers/branch/get-updated.spec.ts
index b7b958a4108c8830542011199060766316367edf..a1cc12e821cdbafb0d11183b191960e0c24153d2 100644
--- a/lib/workers/branch/get-updated.spec.ts
+++ b/lib/workers/branch/get-updated.spec.ts
@@ -28,25 +28,25 @@ describe('workers/branch/get-updated', () => {
       platform.getFile.mockResolvedValueOnce('existing content');
     });
     it('handles autoreplace base updated', async () => {
-      config.upgrades.push({ manager: 'html', autoReplace: true });
+      config.upgrades.push({ manager: 'html' });
       autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file');
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
     it('handles autoreplace branch no update', async () => {
-      config.upgrades.push({ manager: 'html', autoReplace: true });
+      config.upgrades.push({ manager: 'html' });
       autoReplace.doAutoReplace.mockResolvedValueOnce('existing content');
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
     it('handles autoreplace failure', async () => {
-      config.upgrades.push({ manager: 'html', autoReplace: true });
+      config.upgrades.push({ manager: 'html' });
       autoReplace.doAutoReplace.mockResolvedValueOnce(null);
       await expect(getUpdatedPackageFiles(config)).rejects.toThrow();
     });
     it('handles autoreplace branch needs update', async () => {
       config.parentBranch = 'some branch';
-      config.upgrades.push({ manager: 'html', autoReplace: true });
+      config.upgrades.push({ manager: 'html' });
       autoReplace.doAutoReplace.mockResolvedValueOnce(null);
       autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file');
       const res = await getUpdatedPackageFiles(config);
@@ -86,9 +86,6 @@ describe('workers/branch/get-updated', () => {
           },
         },
       ]);
-      config.upgrades.forEach((upgrade) => {
-        upgrade.autoReplace = true; // eslint-disable-line no-param-reassign
-      });
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
@@ -140,9 +137,6 @@ describe('workers/branch/get-updated', () => {
           },
         },
       ]);
-      config.upgrades.forEach((upgrade) => {
-        upgrade.autoReplace = true; // eslint-disable-line no-param-reassign
-      });
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts
index dcd65dcc7854dd44d1ed6d136b68500a6b5c86b5..51390eba93d981d4bacc11adce1210c5d0035838 100644
--- a/lib/workers/branch/get-updated.ts
+++ b/lib/workers/branch/get-updated.ts
@@ -26,7 +26,7 @@ export async function getUpdatedPackageFiles(
   const packageFileUpdatedDeps: Record<string, string[]> = {};
   const lockFileMaintenanceFiles = [];
   for (const upgrade of config.upgrades) {
-    const { autoReplace, manager, packageFile, depName } = upgrade;
+    const { manager, packageFile, depName } = upgrade;
     packageFileManagers[packageFile] = manager;
     packageFileUpdatedDeps[packageFile] =
       packageFileUpdatedDeps[packageFile] || [];
@@ -45,8 +45,8 @@ export async function getUpdatedPackageFiles(
           parentBranch: undefined,
         });
       }
-      if (autoReplace) {
-        logger.debug('autoReplace');
+      const updateDependency = get(manager, 'updateDependency');
+      if (!updateDependency) {
         const res = await doAutoReplace(upgrade, existingContent, parentBranch);
         if (res) {
           if (res === existingContent) {
@@ -65,7 +65,6 @@ export async function getUpdatedPackageFiles(
         logger.error('Could not autoReplace');
         throw new Error(WORKER_FILE_UPDATE_FAILED);
       }
-      const updateDependency = get(manager, 'updateDependency');
       const newContent = await updateDependency({
         fileContent: existingContent,
         upgrade,
diff --git a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap
index a22dac8a35a45796ce6277ef61212b7ccbcd852e..50b14424a321c017ed99606278e6218ee13d4544 100644
--- a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap
+++ b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap
@@ -26,18 +26,13 @@ Array [
 exports[`workers/repository/extract/manager-files getManagerPackageFiles() returns files with extractPackageFile 1`] = `
 Array [
   Object {
-    "autoReplace": true,
     "deps": Array [
       Object {
-        "autoReplaceData": Object {
-          "depIndex": 0,
-        },
+        "depIndex": 0,
       },
       Object {
-        "autoReplaceData": Object {
-          "depIndex": 1,
-          "replaceString": "abc",
-        },
+        "depIndex": 1,
+        "replaceString": "abc",
       },
     ],
     "manager": "html",
diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts
index b6bca450b239e3b641c54787f9ae224a379872d1..ee3420fe2da234dceb60ad4c5531d5891625373c 100644
--- a/lib/workers/repository/extract/manager-files.spec.ts
+++ b/lib/workers/repository/extract/manager-files.spec.ts
@@ -39,7 +39,7 @@ describe('workers/repository/extract/manager-files', () => {
       fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']);
       platform.getFile.mockResolvedValue('some content');
       html.extractPackageFile = jest.fn(() => ({
-        deps: [{}, { autoReplaceData: { replaceString: 'abc' } }],
+        deps: [{}, { replaceString: 'abc' }],
       })) as never;
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toMatchSnapshot();
diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts
index be7910c5c966687bea29a46844365495081e1df3..c9544472f358acbb08a151599f78328d7a9b60c5 100644
--- a/lib/workers/repository/extract/manager-files.ts
+++ b/lib/workers/repository/extract/manager-files.ts
@@ -49,15 +49,8 @@ export async function getManagerPackageFiles(config): Promise<PackageFile[]> {
         config
       );
       if (res) {
-        if (get(manager, 'autoReplace')) {
-          res.autoReplace = true;
-          for (let index = 0; index < res.deps.length; index += 1) {
-            // auto-populate the depIndex value
-            res.deps[index].autoReplaceData = {
-              ...res.deps[index].autoReplaceData,
-              depIndex: index,
-            };
-          }
+        for (let index = 0; index < res.deps.length; index += 1) {
+          res.deps[index].depIndex = index;
         }
         packageFiles.push({
           packageFile,