Environment
- Obsidian version: 1.12.7
- OS: macOS (M4 MacBook Pro)
- Plugin Update Tracker version: 1.7.0
- Vault: iCloud-synced
- Date first observed: 2026-05-17
Description
When Obsidian loads and the "Plugin Updates" panel is opened, the panel renders blank. The developer console shows a TypeError: Cannot read properties of null (reading 'replace') originating from Plugin Update Tracker. The error fires 4 times per session (two caught + two uncaught) with identical stack traces on each render/re-render attempt, so the panel never recovers.
Console errors
plugin:obsidian-plugin-update-tracker:13 TypeError: Cannot read properties of null (reading 'replace')
at CA (plugin:obsidian-plugin-update-tracker:830:99)
at gu (plugin:obsidian-plugin-update-tracker:828:62769)
at eval (plugin:obsidian-plugin-update-tracker:903:2407)
at Array.map (<anonymous>)
at eval (plugin:obsidian-plugin-update-tracker:903:2387)
at Array.map (<anonymous>)
at eval (plugin:obsidian-plugin-update-tracker:903:2345)
at Object.useMemo (plugin:obsidian-plugin-update-tracker:11:25891)
at L1.useMemo (plugin:obsidian-plugin-update-tracker:6:19050)
plugin:obsidian-plugin-update-tracker:11 Uncaught TypeError: Cannot read properties of null (reading 'replace')
[same stack as above]
Root cause (identified)
By calling the Lambda endpoint directly with my installed plugin list, I identified that obsidian-local-rest-api release 4.0.1 is returned with versionName: null (the GitHub release name field appears to have been left blank and the fallback to versionNumber is not happening server-side).
This null propagates into the render pipeline at:
notes: gu(S.notes, S.versionName, S.versionNumber, M.githubRepositoryUrl)
where gu calls CA(S.versionName), and CA calls .replace() on the null value.
There is also a second crash site that would be hit after fixing the first:
`${z.versionName}${z.isBetaVersion && !z.versionName.toLowerCase().includes("beta") ...}`
Suggested fix
Filter out releases with null versionName before they enter the render chain:
M.releaseNotes
.filter(S => S.versionName != null)
.map(S => ({...S, notes: gu(S.notes, S.versionName, ...)}))
A separate issue has been filed on coddingtonbear/obsidian-local-rest-api about the null versionName in their 4.0.1 release from the Lambda.
Note on other console noise
The same session also shows 404 errors from Smart Connections (Hugging Face ONNX models) and errors from other plugins — all unrelated, their stack traces do not go through Plugin Update Tracker.
Environment
Description
When Obsidian loads and the "Plugin Updates" panel is opened, the panel renders blank. The developer console shows a
TypeError: Cannot read properties of null (reading 'replace')originating from Plugin Update Tracker. The error fires 4 times per session (two caught + two uncaught) with identical stack traces on each render/re-render attempt, so the panel never recovers.Console errors
Root cause (identified)
By calling the Lambda endpoint directly with my installed plugin list, I identified that
obsidian-local-rest-apirelease4.0.1is returned withversionName: null(the GitHub release name field appears to have been left blank and the fallback toversionNumberis not happening server-side).This null propagates into the render pipeline at:
where
gucallsCA(S.versionName), andCAcalls.replace()on the null value.There is also a second crash site that would be hit after fixing the first:
`${z.versionName}${z.isBetaVersion && !z.versionName.toLowerCase().includes("beta") ...}`Suggested fix
Filter out releases with null
versionNamebefore they enter the render chain:A separate issue has been filed on
coddingtonbear/obsidian-local-rest-apiabout the nullversionNamein their 4.0.1 release from the Lambda.Note on other console noise
The same session also shows 404 errors from Smart Connections (Hugging Face ONNX models) and errors from other plugins — all unrelated, their stack traces do not go through Plugin Update Tracker.