tag:github.com,2008:https://github.com/SteamRE/SteamKit/releasesRelease notes from SteamKit2026-01-14T22:22:38Ztag:github.com,2008:Repository/10376425/3.4.02026-01-14T22:27:50Z3.4.0<ul>
<li>Added <code>UserCountryCode</code> to <code>LoggedOnCallback</code>.</li>
<li>Added privacy-related enums.</li>
<li>Moved <code>Utils.AdlerHash</code> to <code>DepotChunk.AdlerHash</code> which is an unrolled version for better performance.</li>
<li>Removed LINQ allocations from <code>KeyValue</code> indexer.</li>
<li>Updated <code>EGamingDeviceType</code> enum.</li>
<li>Fixed <code>GameID.GetHashCode</code>.</li>
<li>Fixed <code>LinkTarget</code> not being decrypted in <code>DepotManifest</code>.</li>
<li>Updated Steam enums and protobufs.</li>
<li>Updated dependencies.</li>
</ul>
<p>BREAKING CHANGES</p>
<ul>
<li>SteamKit now targets .NET 10.</li>
<li>Removed deprecated Facebook fields from <code>AccountInfoCallback</code>.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.3.12025-08-21T10:10:10Z3.3.1<ul>
<li>Deprecated <code>IsSteamDeck</code> and added <code>GamingDeviceType</code> to <code>LogOnDetails</code></li>
<li>Updated Steam protobufs.</li>
<li>Updated dependencies.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.3.02025-06-09T09:35:33Z3.3.0<ul>
<li><code>Configuration.HttpClientFactory</code> will now be used for websocket CM connections.
<ul>
<li>Added <code>HttpClientPurpose</code> enum to allow returning different HTTP clients for different purposes.</li>
</ul>
</li>
<li>Post client disconnection callback before cancelling async jobs.
<ul>
<li>Related to the <code>AsyncJob</code> change in the previous release.</li>
</ul>
</li>
<li>Added some Deadlock protobufs.</li>
<li>Updated Steam protocol version.</li>
<li>Updated Steam protobufs.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.2.02025-05-09T19:21:33Z3.2.0<ul>
<li><code>AsyncJob</code> will now instantly fail if not connected to Steam.
<ul>
<li><strong>This is technically a breaking change if you relied on this behaviour.</strong></li>
</ul>
</li>
<li>Added support for zstd compressed depot chunks.
<ul>
<li>Added a dependency on <code>ZstdSharp.Port</code>.</li>
</ul>
</li>
<li>Added an <code>GetAuthTicketForWebApi</code></li>
<li>Added an argument to pass extra args to <code>WebAPI.CallProtobufAsync<TResponse, TRequest>()</code></li>
<li>Updated Steam protobufs.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.1.02025-04-21T11:08:55Z3.1.0<ul>
<li>Added <code>SteamApps.PICSGetPrivateBeta</code>.</li>
<li>Fixed <code>PersonaStateCallback.StatusFlags</code></li>
<li>Fixed parsing old v4 depot manifests.</li>
<li><code>DepotChunk.Process</code> now validates the magic bytes of the compression.</li>
<li>Updated Steam EMsg.</li>
<li>Updated dependencies.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.0.22025-02-03T01:56:48Z3.0.2<ul>
<li>Fixed handling on tasks to reduce chance of deadlocking sync-over-async consumers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2768806375" data-permission-text="Title is private" data-url="https://github.com/SteamRE/SteamKit/issues/1488" data-hovercard-type="pull_request" data-hovercard-url="/SteamRE/SteamKit/pull/1488/hovercard" href="https://github.com/SteamRE/SteamKit/pull/1488">#1488</a>)</li>
<li>Fixed a crash due to library resolution errors when running under .NET 9.0.1 on macOS. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2826080054" data-permission-text="Title is private" data-url="https://github.com/SteamRE/SteamKit/issues/1501" data-hovercard-type="pull_request" data-hovercard-url="/SteamRE/SteamKit/pull/1501/hovercard" href="https://github.com/SteamRE/SteamKit/pull/1501">#1501</a>)</li>
<li>Updated Steam protobufs.</li>
<li>Updated dependencies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2799462709" data-permission-text="Title is private" data-url="https://github.com/SteamRE/SteamKit/issues/1493" data-hovercard-type="pull_request" data-hovercard-url="/SteamRE/SteamKit/pull/1493/hovercard" href="https://github.com/SteamRE/SteamKit/pull/1493">#1493</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2813211195" data-permission-text="Title is private" data-url="https://github.com/SteamRE/SteamKit/issues/1500" data-hovercard-type="pull_request" data-hovercard-url="/SteamRE/SteamKit/pull/1500/hovercard" href="https://github.com/SteamRE/SteamKit/pull/1500">#1500</a>)</li>
</ul>yaakov-htag:github.com,2008:Repository/10376425/3.0.12024-12-29T10:11:20Z3.0.1<ul>
<li>Added protected <code>PostResponseMsg</code> and <code>PostNotificationMsg</code> to <code>UnifiedService</code> to allow using user-provided services.</li>
<li>Added <code>DetectLancacheServerAsync</code> and <code>UseLancacheServer</code> to <code>CDN.Client</code> to allow downloading via LanCache servers.</li>
<li>Updated Steam protobufs.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.0.02024-11-07T11:15:37Z3.0.0<ul>
<li>Added a dependency on <code>System.IO.Hashing</code>.</li>
<li>Added <code>SteamKit2.WebUI.Internal</code> protobufs.</li>
<li>Added <code>ChatMode</code>, <code>UIMode</code>, and <code>IsSteamDeck</code> to <code>LogOnDetails</code>.</li>
<li>Added <code>DepotManifest.Serialize</code>.</li>
<li>Added <code>SteamClient.WaitForCallbackAsync</code> and <code>CallbackManager.RunWaitCallbackAsync</code>.</li>
<li>Added <code>cdnAuthToken</code> parameter to <code>CDN.Client</code> method for country specific servers that still require it.</li>
<li>Added <code>SteamAuthTicket</code> handler.</li>
<li>Added <code>WebAPI.AsyncInterface.CallAsync</code> overload that does not require specifying <code>HttpMethod.Get</code>.</li>
<li>Added WebSocket as a default enabled protocol, switched to using GetCMListForConnect API.</li>
<li>Added support for parsing binary keyvalues that have an alternate end byte.</li>
<li><code>SmartCMServerList</code> will now attempt to refresh itself over the WebAPI if it was last refreshed over 7 days ago.</li>
<li>Updated Steam enums and protobufs.</li>
<li>Various performance and memory optimizations.</li>
<li>Linux machines will now fetch MAC address for the machine id.</li>
</ul>
<p>BREAKING CHANGES</p>
<ul>
<li>SteamKit now targets .NET 8.</li>
<li><code>SteamUnifiedMessages</code> are now reflection-free with a new API.
<ul>
<li>See updated <code>013_UnifiedMessages</code> sample for new usage.</li>
<li>Requests are now generated functions like so: <code>UnifiedMessages.CreateService<Player>().GetGameBadgeLevels( req );</code></li>
<li>If you subscribed to <code>ServiceMethodResponse</code>, use <code>CallbackManager.SubscribeServiceResponse</code> instead.</li>
<li>If you subscribed to <code>ServiceMethodNotification</code>, <code>CallbackManager.SubscribeServiceNotification</code> instead.</li>
<li>Response messages are now typed under <code>Body</code> property, calling <code>GetDeserializedResponse</code> was removed.</li>
<li>For incoming messages to be processed and decoded, the service must be registered with <code>CreateService</code> first,<br>
which is done for you by using the new subscribe functions on the callback manager.</li>
</ul>
</li>
<li><code>SteamClient</code> callback queue is now backed by <code>BufferBlock</code>:
<ul>
<li><code>FreeLastCallback</code> and <code>GetAllCallbacks</code> have been removed.</li>
<li>Calling <code>GetCallback</code> and <code>WaitForCallback</code> now always dequeues a callback, there is no more peek and "freeLast".</li>
<li><code>CallbackManager.RunCallbacks</code> now returns bool indicating whether a callback was handled.</li>
</ul>
</li>
<li><code>DepotManifest.ChunkData.Checksum</code> is now a <code>uint</code> instead of <code>byte[4]</code>.</li>
<li><code>DepotManifest.SaveToFile</code> now returns void.</li>
<li><code>CDN.Client.DownloadDepotChunkAsync</code> now requires a mandatory destination buffer.
<ul>
<li>Returns the number of written bytes to the destination.</li>
<li>You can rent a buffer like <code>ArrayPool<byte>.Shared.Rent((int)chunk.UncompressedLength)</code></li>
<li><code>DepotChunk</code> is now a static class that only contains a <code>Process</code> method.</li>
</ul>
</li>
<li>Moved <code>SteamApps.GetCDNAuthToken</code> to <code>SteamContent.GetCDNAuthToken</code> due to a Steam change.</li>
<li><code>IServerListProvider</code> has a new property <code>LastServerListRefresh</code> which should return an UTC DateTime<br>
last time the server list was refreshed.</li>
<li>Removed obsolete methods and enum values.</li>
<li>Removed Artifact and Underlords generated protobufs.</li>
<li>Removed <code>SteamTrading</code> handler.</li>
<li>Removed <code>RSACrypto</code> class.</li>
<li>Removed all methods from <code>CryptoHelper</code> except for <code>SymmetricDecrypt</code>.</li>
<li>Removed <code>ICallbackMsg</code> interface, simply use <code>CallbackMsg</code> instead.</li>
<li>Removed <code>CMListCallback</code> as it was removed by Steam.</li>
</ul>
<p><a href="https://github.com/SteamRE/SteamKit/commit/9af0fd884855d7da67c24b64a7a0bf1bbfd32c35">See this for a full diff of the public API</a></p>xPawtag:github.com,2008:Repository/10376425/3.0.0-Beta.52024-11-03T17:25:10Z3.0.0-Beta.5<ul>
<li><code>SmartCMServerList</code> will now attempt to refresh itself over the WebAPI if it was last refreshed over 7 days ago.</li>
</ul>
<p>BREAKING CHANGES</p>
<ul>
<li><code>SteamUnifiedMessages</code> are now reflection-free with a new API.
<ul>
<li>See updated <code>013_UnifiedMessages</code> sample for new usage.</li>
<li>Requests are now generated functions like so: <code>UnifiedMessages.CreateService<Player>().GetGameBadgeLevels( req );</code></li>
<li>If you subscribed to <code>ServiceMethodResponse</code>, use <code>CallbackManager.SubscribeServiceResponse</code> instead.</li>
<li>If you subscribed to <code>ServiceMethodNotification</code>, <code>CallbackManager.SubscribeServiceNotification</code> instead.</li>
<li>Response messages are now typed under <code>Body</code> property, calling <code>GetDeserializedResponse</code> was removed.</li>
<li>For incoming messages to be processed and decoded, the service must be registered with <code>CreateService</code> first,<br>
which is done for you by using the new subscribe functions on the callback manager.</li>
</ul>
</li>
<li><code>IServerListProvider</code> has a new property <code>LastServerListRefresh</code> which should return an UTC DateTime<br>
last time the server list was refreshed.</li>
<li>Removed <code>ICallbackMsg</code> interface, simply use <code>CallbackMsg</code> instead.</li>
<li>Removed <code>CMListCallback</code> as it was removed by Steam.</li>
</ul>xPawtag:github.com,2008:Repository/10376425/3.0.0-Beta.42024-10-13T08:24:37Z3.0.0-Beta.4<ul>
<li>Added <code>SteamAuthTicket</code> handler.</li>
<li>Added <code>WebAPI.AsyncInterface.CallAsync</code> overload that does not require specifying <code>HttpMethod.Get</code>.</li>
<li>Added support for parsing binary keyvalues that have an alternate end byte.</li>
<li>Linux machines will now fetch MAC address for the machine id.</li>
</ul>
<p>BREAKING CHANGES</p>
<ul>
<li>Moved <code>SteamApps.GetCDNAuthToken</code> to <code>SteamContent.GetCDNAuthToken</code> due to a Steam change.</li>
</ul>xPaw