<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sdk on Nick Liu - Software Engineer</title>
    <link>/tags/sdk/</link>
    <description>Recent content in Sdk on Nick Liu - Software Engineer</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>nickboy@users.noreply.github.com (Nick Liu)</managingEditor>
    <webMaster>nickboy@users.noreply.github.com (Nick Liu)</webMaster>
    <copyright>2026 Nick Liu</copyright>
    <lastBuildDate>Sun, 10 May 2026 22:48:37 -0700</lastBuildDate><atom:link href="/tags/sdk/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Two Stream Deck SDK quirks that cost me a weekend</title>
      <link>/posts/streamdeck-sdk-quirks/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <author>nickboy@users.noreply.github.com (Nick Liu)</author>
      <guid>/posts/streamdeck-sdk-quirks/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  &#xA;Two undocumented behaviours in the Elgato Stream Deck SDK ate most of a weekend: a per-key title-alignment cache that silently ignores manifest updates, and a `willAppear` event that doesn&#39;t always re-fire after a plugin restart. The fixes are short. Finding them was not.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;(Skip this paragraph if you&amp;rsquo;ve shipped a Stream Deck plugin before. The Stream Deck is Elgato&amp;rsquo;s USB grid of programmable LCD keys — common on streamer desks for scene switching. A &amp;ldquo;plugin&amp;rdquo; is a small program — TypeScript, in my case — that runs as a child process of Elgato&amp;rsquo;s Stream Deck app, registers one or more &lt;em&gt;actions&lt;/em&gt; the user can drag onto keys, and reacts to events like &amp;ldquo;key pressed&amp;rdquo; or &amp;ldquo;key visible.&amp;rdquo; The SDK is &lt;code&gt;@elgato/streamdeck&lt;/code&gt; from npm. A &lt;em&gt;manifest&lt;/em&gt; is a &lt;code&gt;manifest.json&lt;/code&gt; next to the plugin that declares its actions, supported devices, default icons, and per-state defaults like title alignment.)&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
