From d9463eb030537099c6bcecd4041fa8edcdc09c0a Mon Sep 17 00:00:00 2001 From: rory Date: Fri, 21 Aug 2026 23:07:52 -0700 Subject: [PATCH 1/2] fix: stringify thrown errors in logAlert Raw Error interpolation becomes [object Object] in some runtimes. Use message/String so merge and subscriber failures stay readable. --- lib/Onyx.ts | 2 +- lib/OnyxConnectionManager.ts | 2 +- lib/OnyxUtils.ts | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/Onyx.ts b/lib/Onyx.ts index 4356ec36d..211a9d49b 100644 --- a/lib/Onyx.ts +++ b/lib/Onyx.ts @@ -301,7 +301,7 @@ function merge(key: TKey, changes: OnyxMergeInput): OnyxUtils.sendActionToDevTools(OnyxUtils.METHOD.MERGE, key, changes, mergedValue); }); } catch (error) { - Logger.logAlert(`An error occurred while applying merge for key: ${key}, Error: ${error}`); + Logger.logAlert(`An error occurred while applying merge for key: ${key}, Error: ${error instanceof Error ? error.message : String(error)}`); return Promise.resolve(); } }); diff --git a/lib/OnyxConnectionManager.ts b/lib/OnyxConnectionManager.ts index 1eae1cdc5..ddf7ff00f 100644 --- a/lib/OnyxConnectionManager.ts +++ b/lib/OnyxConnectionManager.ts @@ -138,7 +138,7 @@ class OnyxConnectionManager { (callback as DefaultConnectCallback)(connection.cachedCallbackValue, connection.cachedCallbackKey as OnyxKey); } } catch (error) { - Logger.logAlert(`[ConnectionManager] Subscriber callback threw an error for key '${connection.onyxKey}': ${error}`); + Logger.logAlert(`[ConnectionManager] Subscriber callback threw an error for key '${connection.onyxKey}': ${String(error)}`); } } } diff --git a/lib/OnyxUtils.ts b/lib/OnyxUtils.ts index c4ac63f61..997db7efd 100644 --- a/lib/OnyxUtils.ts +++ b/lib/OnyxUtils.ts @@ -62,6 +62,10 @@ function resetDiskPressureLogThrottle(): void { lastDiskPressureLogTime = 0; } +function formatCaughtError(error: unknown): string { + return error instanceof Error ? error.message : String(error); +} + type OnyxMethod = ValueOf; /** Result of `prepareKeyValuePairsForStorage`: pairs to write and keys whose `null` value marks them for removal. */ @@ -598,7 +602,7 @@ function keysChanged( lastConnectionCallbackData.set(subscriber.subscriptionID, {value: cachedCollection, matchedKey: subscriber.key}); subscriber.callback(cachedCollection, subscriber.key); } catch (error) { - Logger.logAlert(`[OnyxUtils.keysChanged] Subscriber callback threw an error for key '${collectionKey}': ${error}`); + Logger.logAlert(`[OnyxUtils.keysChanged] Subscriber callback threw an error for key '${collectionKey}': ${formatCaughtError(error)}`); } } @@ -621,7 +625,7 @@ function keysChanged( matchedKey: subscriber.key, }); } catch (error) { - Logger.logAlert(`[OnyxUtils.keysChanged] Subscriber callback threw an error for key '${collectionKey}': ${error}`); + Logger.logAlert(`[OnyxUtils.keysChanged] Subscriber callback threw an error for key '${collectionKey}': ${formatCaughtError(error)}`); } } } @@ -694,7 +698,7 @@ function keyChanged(key: TKey, value: OnyxValue, can }); continue; } catch (error) { - Logger.logAlert(`[OnyxUtils.keyChanged] Subscriber callback threw an error for key '${key}': ${error}`); + Logger.logAlert(`[OnyxUtils.keyChanged] Subscriber callback threw an error for key '${key}': ${formatCaughtError(error)}`); } continue; From 0a47b4ab308424c1b5681e7161da40dbdd9b7b5c Mon Sep 17 00:00:00 2001 From: rory Date: Fri, 21 Aug 2026 23:29:46 -0700 Subject: [PATCH 2/2] fix: keep error name in formatCaughtError error.message is empty for new TypeError() and drops TypeError / custom names. toString() matches the old interpolation. --- lib/Onyx.ts | 2 +- lib/OnyxUtils.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Onyx.ts b/lib/Onyx.ts index 211a9d49b..29a1d20ab 100644 --- a/lib/Onyx.ts +++ b/lib/Onyx.ts @@ -301,7 +301,7 @@ function merge(key: TKey, changes: OnyxMergeInput): OnyxUtils.sendActionToDevTools(OnyxUtils.METHOD.MERGE, key, changes, mergedValue); }); } catch (error) { - Logger.logAlert(`An error occurred while applying merge for key: ${key}, Error: ${error instanceof Error ? error.message : String(error)}`); + Logger.logAlert(`An error occurred while applying merge for key: ${key}, Error: ${error instanceof Error ? error.toString() : String(error)}`); return Promise.resolve(); } }); diff --git a/lib/OnyxUtils.ts b/lib/OnyxUtils.ts index 997db7efd..519a1d8dc 100644 --- a/lib/OnyxUtils.ts +++ b/lib/OnyxUtils.ts @@ -63,7 +63,7 @@ function resetDiskPressureLogThrottle(): void { } function formatCaughtError(error: unknown): string { - return error instanceof Error ? error.message : String(error); + return error instanceof Error ? error.toString() : String(error); } type OnyxMethod = ValueOf;