diff --git a/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap b/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap
index 0388f42d24794eed4707ea60dd379ced46fed8f7..53bd016a64ee3ccd8d0f56a762bcc5239760aa7a 100644
--- a/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap
+++ b/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap
@@ -19,6 +19,7 @@ Array [
       "cwd": "/tmp/github/some/repo",
       "encoding": "utf-8",
       "env": Object {
+        "HELM_EXPERIMENTAL_OCI": "1",
         "HOME": "/home/user",
         "HTTPS_PROXY": "https://example.com",
         "HTTP_PROXY": "http://example.com",
@@ -53,6 +54,7 @@ Array [
       "cwd": "/tmp/github/some/repo",
       "encoding": "utf-8",
       "env": Object {
+        "HELM_EXPERIMENTAL_OCI": "1",
         "HOME": "/home/user",
         "HTTPS_PROXY": "https://example.com",
         "HTTP_PROXY": "http://example.com",
@@ -87,6 +89,7 @@ Array [
       "cwd": "/tmp/github/some/repo",
       "encoding": "utf-8",
       "env": Object {
+        "HELM_EXPERIMENTAL_OCI": "1",
         "HOME": "/home/user",
         "HTTPS_PROXY": "https://example.com",
         "HTTP_PROXY": "http://example.com",
@@ -128,11 +131,12 @@ Array [
     },
   },
   Object {
-    "cmd": "docker run --rm --name=renovate_helm --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/helm bash -l -c \\"helm dependency update ''\\"",
+    "cmd": "docker run --rm --name=renovate_helm --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -e HELM_EXPERIMENTAL_OCI -w \\"/tmp/github/some/repo\\" renovate/helm bash -l -c \\"helm dependency update ''\\"",
     "options": Object {
       "cwd": "/tmp/github/some/repo",
       "encoding": "utf-8",
       "env": Object {
+        "HELM_EXPERIMENTAL_OCI": "1",
         "HOME": "/home/user",
         "HTTPS_PROXY": "https://example.com",
         "HTTP_PROXY": "http://example.com",
diff --git a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
index 4c79e1380e1175559944dcb26a20677dd69d02b7..547524fa8d8e9d0b2d7340e94c365fb88354893d 100644
--- a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
@@ -1,5 +1,28 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`manager/helmv3/extract extractPackageFile() extract correctly oci references 1`] = `
+Object {
+  "datasource": "helm",
+  "deps": Array [
+    Object {
+      "currentValue": "0.1.0",
+      "datasource": "docker",
+      "depName": "library",
+      "lookupName": "ghcr.io/ankitabhopatkar13/library",
+      "registryUrls": Array [],
+    },
+    Object {
+      "currentValue": "0.8.1",
+      "depName": "postgresql",
+      "registryUrls": Array [
+        "https://charts.helm.sh/stable",
+      ],
+    },
+  ],
+  "packageFileVersion": "0.1.0",
+}
+`;
+
 exports[`manager/helmv3/extract extractPackageFile() parses simple Chart.yaml correctly 1`] = `
 Object {
   "datasource": "helm",
diff --git a/lib/manager/helmv3/artifacts.ts b/lib/manager/helmv3/artifacts.ts
index 1903724d8497f5a527091650f5c31bae6f74b563..3414afa6c3d102c315e109c43e54f063c8ef31a3 100644
--- a/lib/manager/helmv3/artifacts.ts
+++ b/lib/manager/helmv3/artifacts.ts
@@ -17,6 +17,9 @@ async function helmUpdate(manifestPath: string): Promise<void> {
     docker: {
       image: 'helm',
     },
+    extraEnv: {
+      HELM_EXPERIMENTAL_OCI: '1',
+    },
   };
   await exec(cmd, execOptions);
 }
diff --git a/lib/manager/helmv3/extract.spec.ts b/lib/manager/helmv3/extract.spec.ts
index e9710fd4ec58008564a53418e6138aebf9002e0c..3aa609097db193d5079c999c7053951be45366cc 100644
--- a/lib/manager/helmv3/extract.spec.ts
+++ b/lib/manager/helmv3/extract.spec.ts
@@ -1,4 +1,5 @@
 import { fs } from '../../../test/util';
+import * as datasourceDocker from '../../datasource/docker';
 import { extractPackageFile } from './extract';
 
 jest.mock('../../util/fs');
@@ -66,6 +67,44 @@ describe('manager/helmv3/extract', () => {
         ],
       });
     });
+
+    it('extract correctly oci references', async () => {
+      const content = `
+      apiVersion: v2
+      name: app2
+      description: A Helm chart for Kubernetes
+      type: application
+      version: 0.1.0
+      appVersion: "1.16.0"
+      dependencies:
+      - name: library
+        version: 0.1.0
+        repository: oci://ghcr.io/ankitabhopatkar13/library
+        import-values:
+          - defaults
+      - name: postgresql
+        version: 0.8.1
+        repository: https://charts.helm.sh/stable
+        condition: postgresql.enabled
+      `;
+      const fileName = 'Chart.yaml';
+      const result = await extractPackageFile(content, fileName, {
+        aliases: {
+          stable: 'https://charts.helm.sh/stable',
+        },
+      });
+      expect(result).toMatchSnapshot({
+        deps: [
+          {
+            depName: 'library',
+            datasource: datasourceDocker.id,
+            currentValue: '0.1.0',
+          },
+          { depName: 'postgresql', currentValue: '0.8.1' },
+        ],
+      });
+    });
+
     it('resolves aliased registry urls', async () => {
       const content = `
       apiVersion: v2
diff --git a/lib/manager/helmv3/extract.ts b/lib/manager/helmv3/extract.ts
index d589d3403c260bc0562f3c87080b37f4ed227acb..bc0266ca3b12bb6c7fce6b3f6f25bf2a469a9234 100644
--- a/lib/manager/helmv3/extract.ts
+++ b/lib/manager/helmv3/extract.ts
@@ -1,5 +1,6 @@
 import is from '@sindresorhus/is';
 import { load } from 'js-yaml';
+import * as datasourceDocker from '../../datasource/docker';
 import { HelmDatasource } from '../../datasource/helm';
 import { logger } from '../../logger';
 import { SkipReason } from '../../types';
@@ -75,8 +76,16 @@ export async function extractPackageFile(
       } else {
         try {
           const url = new URL(dep.repository);
-          if (url.protocol === 'file:') {
-            res.skipReason = SkipReason.LocalDependency;
+          switch (url.protocol) {
+            case 'oci:':
+              res.datasource = datasourceDocker.id;
+              res.lookupName = dep.repository.replace('oci://', '');
+              res.registryUrls = [];
+              break;
+            case 'file:':
+              res.skipReason = SkipReason.LocalDependency;
+              break;
+            default:
           }
         } catch (err) {
           logger.debug({ err }, 'Error parsing url');