diff --git a/package.json b/package.json
index 44a198e5233769b57026bad311e3e94784889999..0171ddd2eda65be0e3af5c8214759f2fd0f2b788 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
     "version": "37.5.0",
     "description": "Matrix Client-Server SDK for Javascript",
     "engines": {
-        "node": ">=20.0.0"
+        "node": ">=22.0.0"
     },
     "scripts": {
         "prepack": "yarn build",
diff --git a/spec/integ/crypto/verification.spec.ts b/spec/integ/crypto/verification.spec.ts
index a2e5c946afb191c015c5d949aa717799af538244..53e49e1d00570ba1bed5a62b7bd286795c6e3433 100644
--- a/spec/integ/crypto/verification.spec.ts
+++ b/spec/integ/crypto/verification.spec.ts
@@ -1604,7 +1604,7 @@ function sha256(commitmentStr: string): string {
     return encodeUnpaddedBase64(createHash("sha256").update(commitmentStr, "utf8").digest());
 }
 
-function encodeUnpaddedBase64(uint8Array: ArrayBuffer | Uint8Array): string {
+function encodeUnpaddedBase64(uint8Array: ArrayLike<number>): string {
     return Buffer.from(uint8Array).toString("base64").replace(/=+$/g, "");
 }
 
@@ -1638,7 +1638,7 @@ function buildReadyMessage(
 }
 
 /** build an m.key.verification.start to-device message suitable for the m.reciprocate.v1 flow, originating from the dummy device */
-function buildReciprocateStartMessage(transactionId: string, sharedSecret: ArrayBuffer) {
+function buildReciprocateStartMessage(transactionId: string, sharedSecret: ArrayLike<number>) {
     return {
         type: "m.key.verification.start",
         content: {
diff --git a/src/matrixrtc/EncryptionManager.ts b/src/matrixrtc/EncryptionManager.ts
index 0b0fe9cb92910ce25e337c6a5e864c904b84695e..ccfb1e7a3789a4197c10dff79ba70b63d32ab1a2 100644
--- a/src/matrixrtc/EncryptionManager.ts
+++ b/src/matrixrtc/EncryptionManager.ts
@@ -89,7 +89,7 @@ export class EncryptionManager implements IEncryptionManager {
         private transport: IKeyTransport,
         private statistics: Statistics,
         private onEncryptionKeysChanged: (
-            keyBin: Uint8Array<ArrayBufferLike>,
+            keyBin: Uint8Array,
             encryptionKeyIndex: number,
             participantId: string,
         ) => void,
diff --git a/src/matrixrtc/MatrixRTCSession.ts b/src/matrixrtc/MatrixRTCSession.ts
index d20773d2d759198ed7e6b6c1f3babdb9c9172af1..d4ad66254c39a36cc47cd39bf21811b1652bcdeb 100644
--- a/src/matrixrtc/MatrixRTCSession.ts
+++ b/src/matrixrtc/MatrixRTCSession.ts
@@ -417,7 +417,7 @@ export class MatrixRTCSession extends TypedEventEmitter<
                 () => this.memberships,
                 transport,
                 this.statistics,
-                (keyBin: Uint8Array<ArrayBufferLike>, encryptionKeyIndex: number, participantId: string) => {
+                (keyBin: Uint8Array, encryptionKeyIndex: number, participantId: string) => {
                     this.emit(MatrixRTCSessionEvent.EncryptionKeyChanged, keyBin, encryptionKeyIndex, participantId);
                 },
                 this.logger,
diff --git a/tsconfig.json b/tsconfig.json
index 6b99f40fa91b3407660d32ed791d4b45f1355412..72aed9a3438d7fd573110bb46b2eae1eb19bccd8 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -9,7 +9,8 @@
         "noEmit": true,
         "declaration": true,
         "strict": true,
-        "allowImportingTsExtensions": true
+        "allowImportingTsExtensions": true,
+        "lib": ["es2024"]
     },
     "include": ["./src/**/*.ts", "./spec/**/*.ts"]
 }