Skip to content

fix(decky): plugin fails to render on SteamOS 3.7.22 (Steam React internals changed) #32

Description

@lobinuxsoft

Problem

CapyDeploy v1.2.0 fails to render in the Quick Access Menu on SteamOS 3.7.22 with Decky Loader v3.2.3. The plugin loads (backend Python emits CapyDeploy plugin loaded) but the frontend silently inserts Decky's <TheError/> fallback instead of <CapyDeployPanel/>. Without a titleView, the fallback panel is also invisible in the sidebar.

Root cause

src/patches/contextMenuPatch.tsx:323-333getLibraryContextMenu() calls fakeRenderComponent with the result of a findModuleByExport query whose sibling filter requires both createElement AND navigator: literals in the export's .toString().

Steam updated its internal React build and stripped the literal React.createElement (now uses jsx/jsxs runtime). The .find() returns undefined, fakeRenderComponent(undefined) throws TypeError: fun is not a function, the definePlugin callback aborts, and Decky's plugin-loader catch-block pushes the TheError fallback shape {name, version, content: <TheError/>, icon: <FaExclamationCircle/>, loadType}.

Empirical evidence (from CDP probe on the Steam Deck)

TypeError: fun is not a function
    at Module.fakeRenderComponent (chunk-BdVM2jqd.js:245:17)
    at getLibraryContextMenu (CapyDeploy/dist/index.js:1262:35)

decky-steamgriddb (the original source of this pattern, per the comment on line 3) uses a simpler selector with only navigator: and continues to work on the same SteamOS version.

Fix

Drop the createElement filter. Bonus: migrate title: <div/> to titleView: <div/> to align with Decky's official Plugin interface (v3.2.x — title is not in the type, only titleView).

Affected

  • SteamOS 3.7.22, Decky Loader v3.2.3
  • decky-capydeploy v1.2.0

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