diff --git a/src/client/components/Task/RecentResult.js b/src/client/components/Task/RecentResult.js
new file mode 100644
index 00000000000..20ee811ecb7
--- /dev/null
+++ b/src/client/components/Task/RecentResult.js
@@ -0,0 +1,28 @@
+import { TASK__START } from '../../actions'
+import multiinstance from '../../utils/multiinstance'
+
+export default multiinstance({
+ name: 'Task/RecentResult',
+ actionPattern: /.*/,
+ idProp: 'name',
+ reducer: (state, { type, id, onSuccessDispatch, result }) => {
+ switch (type) {
+ case TASK__START:
+ return {
+ ...state,
+ [id]: {
+ ...state?.[id],
+ successActionType: onSuccessDispatch,
+ },
+ }
+ case state?.[id]?.successActionType:
+ return {
+ ...state,
+ [id]: { result },
+ }
+ default:
+ return state
+ }
+ },
+ component: ({ children, id, ...props }) => children(props[id]?.result),
+})
diff --git a/src/client/reducers.js b/src/client/reducers.js
index 3b85e2eb1fa..b5e53b489d0 100644
--- a/src/client/reducers.js
+++ b/src/client/reducers.js
@@ -190,6 +190,8 @@ import companyActivityReducerNoAs from './modules/Companies/CompanyActivity/redu
import { ResendExportWin } from './modules/ExportWins/Form/ResendExportWin'
+import RecentTaskResult from './components/Task/RecentResult'
+
export const reducers = {
tasks,
[FLASH_MESSAGE_ID]: flashMessageReducer,
@@ -211,6 +213,7 @@ export const reducers = {
...Form.reducerSpread,
...FieldAddAnother.reducerSpread,
...ResendExportWin.reducerSpread,
+ ...RecentTaskResult.reducerSpread,
[DNB_CHECK_ID]: dnbCheckReducer,
[INVESTMENT_OPPORTUNITIES_LIST_ID]: investmentOpportunitiesListReducer,
[INVESTMENT_OPPORTUNITIES_DETAILS_ID]: investmentOpportunitiesDetailsReducer,
diff --git a/test/component/cypress/specs/Task/RecentResult.cy.jsx b/test/component/cypress/specs/Task/RecentResult.cy.jsx
new file mode 100644
index 00000000000..6acbcd4fb6f
--- /dev/null
+++ b/test/component/cypress/specs/Task/RecentResult.cy.jsx
@@ -0,0 +1,108 @@
+/* eslint-disable prettier/prettier */
+import React from 'react'
+
+import RecentResult from "../../../../../src/client/components/Task/RecentResult"
+import Task from "../../../../../src/client/components/Task"
+
+describe('Task/RecentResult', () => {
+ it('Should provide most recent result of a given task', () => {
+ const TASK_CALLS = [
+ {
+ name: 'double',
+ id: 'aaa',
+ payload: 1,
+ expectedResult: 2,
+ },
+ {
+ name: 'double',
+ id: 'bbb',
+ payload: 3,
+ expectedResult: 6,
+ },
+ {
+ name: 'plusMillion',
+ id: 'aaa',
+ payload: 1,
+ expectedResult: 1_000_001,
+ },
+ {
+ name: 'double',
+ id: 'aaa',
+ payload: 10,
+ expectedResult: 20,
+ },
+ {
+ name: 'plusMillion',
+ id: 'bbb',
+ payload: 111,
+ expectedResult: 1_000_111,
+ },
+ {
+ name: 'double',
+ id: 'bbb',
+ payload: 444,
+ expectedResult: 888,
+ },
+ {
+ name: 'plusMillion',
+ id: 'aaa',
+ payload: 222,
+ expectedResult: 1_000_222,
+ },
+ ]
+
+ const TASKS = TASK_CALLS.reduce((a, {name, id}) => ({
+ ...a,
+ [`${name}-${id}`]: {name, id},
+ }), {})
+
+ cy.mountWithProvider(
+ <>
+