diff --git a/web/grpc/identity-service-client-proxy.js b/web/grpc/identity-service-client-proxy.js
--- a/web/grpc/identity-service-client-proxy.js
+++ b/web/grpc/identity-service-client-proxy.js
@@ -14,7 +14,6 @@
   UserDevicesOlmInboundKeys,
   UserDevicesOlmOutboundKeys,
 } from 'lib/types/identity-service-types.js';
-import { getConfig } from 'lib/utils/config.js';
 
 import {
   type CommSharedWorker,
@@ -35,7 +34,6 @@
       await sharedWorker.schedule({
         type: workerRequestMessageTypes.CREATE_IDENTITY_SERVICE_CLIENT,
         opaqueWasmPath: getOpaqueWasmPath(),
-        platformDetails: getConfig().platformDetails,
         authLayer,
       });
 
diff --git a/web/shared-worker/shared-worker-provider.js b/web/shared-worker/shared-worker-provider.js
--- a/web/shared-worker/shared-worker-provider.js
+++ b/web/shared-worker/shared-worker-provider.js
@@ -76,7 +76,8 @@
         });
       }
 
-      const codeVersion = getConfig().platformDetails.codeVersion ?? '';
+      const platformDetails = getConfig().platformDetails;
+      const codeVersion = platformDetails.codeVersion ?? '';
       const workerName = `comm-app-shared-worker-${codeVersion}`;
 
       this.worker = new SharedWorker(DATABASE_WORKER_PATH, workerName);
@@ -96,6 +97,7 @@
         invariant(this.workerProxy, 'Worker proxy should exist');
         await this.workerProxy.scheduleOnWorker({
           type: workerRequestMessageTypes.INIT,
+          platformDetails,
           webworkerModulesFilePath: `${origin}${baseURL}${WORKERS_MODULES_DIR_PATH}`,
           encryptionKey,
           commQueryExecutorFilename,
diff --git a/web/shared-worker/worker/identity-client.js b/web/shared-worker/worker/identity-client.js
--- a/web/shared-worker/worker/identity-client.js
+++ b/web/shared-worker/worker/identity-client.js
@@ -1,5 +1,7 @@
 // @flow
 
+import type { PlatformDetails } from 'lib/types/device-types.js';
+
 import {
   getNewDeviceKeyUpload,
   getExistingDeviceKeyUpload,
@@ -19,13 +21,14 @@
 async function processAppIdentityClientRequest(
   sqliteQueryExecutor: SQLiteQueryExecutor,
   dbModule: EmscriptenModule,
+  platformDetails: PlatformDetails,
   message: WorkerRequestMessage,
 ): Promise<?WorkerResponseMessage> {
   if (
     message.type === workerRequestMessageTypes.CREATE_IDENTITY_SERVICE_CLIENT
   ) {
     identityClient = new IdentityServiceClientWrapper(
-      message.platformDetails,
+      platformDetails,
       message.opaqueWasmPath,
       message.authLayer,
       async () => getNewDeviceKeyUpload(),
diff --git a/web/shared-worker/worker/shared-worker.js b/web/shared-worker/worker/shared-worker.js
--- a/web/shared-worker/worker/shared-worker.js
+++ b/web/shared-worker/worker/shared-worker.js
@@ -14,6 +14,8 @@
   getSQLiteQueryExecutor,
   setDBModule,
   setSQLiteQueryExecutor,
+  getPlatformDetails,
+  setPlatformDetails,
 } from './worker-database.js';
 import initBackupClientModule from '../../backup-client-wasm/wasm/backup-client-wasm.js';
 import {
@@ -175,6 +177,7 @@
 
   // database operations
   if (message.type === workerRequestMessageTypes.INIT) {
+    setPlatformDetails(message.platformDetails);
     const promises = [
       initDatabase(
         message.webworkerModulesFilePath,
@@ -255,9 +258,16 @@
   if (isOlmAPIRequest) {
     result = await processAppOlmApiRequest(message);
   } else if (isIdentityClientRequest) {
+    const platformDetails = getPlatformDetails();
+    if (!platformDetails) {
+      throw new Error(
+        'Platform details not set, unable to process identity client request',
+      );
+    }
     result = await processAppIdentityClientRequest(
       sqliteQueryExecutor,
       dbModule,
+      platformDetails,
       message,
     );
   } else if (
diff --git a/web/shared-worker/worker/worker-database.js b/web/shared-worker/worker/worker-database.js
--- a/web/shared-worker/worker/worker-database.js
+++ b/web/shared-worker/worker/worker-database.js
@@ -1,5 +1,7 @@
 // @flow
 
+import type { PlatformDetails } from 'lib/types/device-types.js';
+
 import type { EmscriptenModule } from '../types/module.js';
 import type { SQLiteQueryExecutor } from '../types/sqlite-query-executor.js';
 
@@ -23,9 +25,21 @@
   dbModule = newDBModule;
 }
 
+let platformDetails: ?PlatformDetails = null;
+
+function getPlatformDetails(): ?PlatformDetails {
+  return platformDetails;
+}
+
+function setPlatformDetails(newPlatformDetails: PlatformDetails) {
+  platformDetails = newPlatformDetails;
+}
+
 export {
   getSQLiteQueryExecutor,
   setSQLiteQueryExecutor,
   getDBModule,
   setDBModule,
+  getPlatformDetails,
+  setPlatformDetails,
 };
diff --git a/web/types/worker-types.js b/web/types/worker-types.js
--- a/web/types/worker-types.js
+++ b/web/types/worker-types.js
@@ -58,6 +58,7 @@
 
 export type InitWorkerRequestMessage = {
   +type: 1,
+  +platformDetails: PlatformDetails,
   +webworkerModulesFilePath: string,
   +commQueryExecutorFilename: ?string,
   +encryptionKey?: ?SubtleCrypto$JsonWebKey,
@@ -123,7 +124,6 @@
 export type CreateIdentityServiceClientRequestMessage = {
   +type: 13,
   +opaqueWasmPath: string,
-  +platformDetails: PlatformDetails,
   +authLayer: ?IdentityServiceAuthLayer,
 };