diff --git a/lib/modules/datasource/datasource.ts b/lib/modules/datasource/datasource.ts
index fce559644110b4c652c2202b38e6a54615ad1a10..0e6c8c2c12deb876055639076087564951d15565 100644
--- a/lib/modules/datasource/datasource.ts
+++ b/lib/modules/datasource/datasource.ts
@@ -4,7 +4,10 @@ import type {
   DatasourceApi,
   DigestConfig,
   GetReleasesConfig,
+  PostprocessReleaseConfig,
+  PostprocessReleaseResult,
   RegistryStrategy,
+  Release,
   ReleaseResult,
   SourceUrlSupport,
 } from './types';
@@ -61,4 +64,12 @@ export abstract class Datasource implements DatasourceApi {
 
     throw err;
   }
+
+  // istanbul ignore next: no-op implementation, never called
+  postprocessRelease(
+    _config: PostprocessReleaseConfig,
+    release: Release,
+  ): Promise<PostprocessReleaseResult> {
+    return Promise.resolve(release);
+  }
 }
diff --git a/lib/modules/datasource/postprocess-release.spec.ts b/lib/modules/datasource/postprocess-release.spec.ts
index 2f3c014adeaa5696a607642ebe930510cdd68bee..3ec6de9abd8e99781d08d2cd935ba0b53294bacf 100644
--- a/lib/modules/datasource/postprocess-release.spec.ts
+++ b/lib/modules/datasource/postprocess-release.spec.ts
@@ -59,7 +59,7 @@ describe('modules/datasource/postprocess-release', () => {
 
   it('returns original release for datasource with missing `packageName` field', async () => {
     class SomeDatasource extends DummyDatasource {
-      postprocessRelease(
+      override postprocessRelease(
         _config: PostprocessReleaseConfig,
         release: Release,
       ): Promise<PostprocessReleaseResult> {
@@ -82,7 +82,7 @@ describe('modules/datasource/postprocess-release', () => {
     const releaseOrig: Release = { version: '1.2.3' };
 
     class SomeDatasource extends DummyDatasource {
-      postprocessRelease(
+      override postprocessRelease(
         _config: PostprocessReleaseConfig,
         release: Release,
       ): Promise<PostprocessReleaseResult> {
@@ -107,7 +107,7 @@ describe('modules/datasource/postprocess-release', () => {
     const releaseOrig: Release = { version: '1.2.3' };
 
     class SomeDatasource extends DummyDatasource {
-      postprocessRelease(
+      override postprocessRelease(
         _config: PostprocessReleaseConfig,
         _release: Release,
       ): Promise<PostprocessReleaseResult> {
@@ -128,7 +128,7 @@ describe('modules/datasource/postprocess-release', () => {
     const releaseOrig: Release = { version: '1.2.3' };
 
     class SomeDatasource extends DummyDatasource {
-      postprocessRelease(
+      override postprocessRelease(
         _config: PostprocessReleaseConfig,
         _release: Release,
       ): Promise<PostprocessReleaseResult> {
diff --git a/lib/modules/datasource/postprocess-release.ts b/lib/modules/datasource/postprocess-release.ts
index fe203752c1ef6e7c4bd4666bab8f11c231adce1f..ef4a34131fe46e1bc834365ffa87145002b944c2 100644
--- a/lib/modules/datasource/postprocess-release.ts
+++ b/lib/modules/datasource/postprocess-release.ts
@@ -4,6 +4,7 @@ import type {
   UpdateResult,
 } from '../../workers/repository/process/lookup/types';
 import { getDatasourceFor } from './common';
+import { Datasource } from './datasource';
 import type { Release } from './types';
 
 type Config = Partial<LookupUpdateConfig & UpdateResult>;
@@ -23,7 +24,10 @@ export async function postprocessRelease(
     return release;
   }
 
-  if (!ds.postprocessRelease) {
+  if (
+    ds.constructor.prototype.postprocessRelease ===
+    Datasource.prototype.postprocessRelease
+  ) {
     return release;
   }
 
diff --git a/lib/modules/datasource/types.ts b/lib/modules/datasource/types.ts
index 60b9832585060fe51f3acf810e024da810c34f17..d4e8ed0b3287e2cd1f15872a4874eebbb0005d69 100644
--- a/lib/modules/datasource/types.ts
+++ b/lib/modules/datasource/types.ts
@@ -160,7 +160,7 @@ export interface DatasourceApi extends ModuleApi {
    *
    * In other cases, the original `Release` parameter should be returned.
    */
-  postprocessRelease?(
+  postprocessRelease(
     config: PostprocessReleaseConfig,
     release: Release,
   ): Promise<PostprocessReleaseResult>;
diff --git a/lib/workers/repository/process/lookup/filter-checks.spec.ts b/lib/workers/repository/process/lookup/filter-checks.spec.ts
index fcdef36cb7ae9d5e87cac1f48ffb8554b4543b58..aa1f3d63fed6b686597707f0154376e23fe91ad9 100644
--- a/lib/workers/repository/process/lookup/filter-checks.spec.ts
+++ b/lib/workers/repository/process/lookup/filter-checks.spec.ts
@@ -91,7 +91,7 @@ describe('workers/repository/process/lookup/filter-checks', () => {
       config.internalChecksFilter = 'strict';
 
       class SomeDatasource extends DummyDatasource {
-        postprocessRelease(
+        override postprocessRelease(
           _: PostprocessReleaseConfig,
           release: Release,
         ): Promise<PostprocessReleaseResult> {