Skip to content

Plugin Updates panel blank — TypeError: Cannot read properties of null (reading 'replace') #170

Description

@soulhakr

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions