Table of Contents

To get automatically notified about SDK changes, you can subscribe to change tracking issue on GitHub.


  • New
    • Added DeleteDomainCookiesRegex to web views for deleting domain cookies matching specific regex.
    • Added OnGameStartupCancelled application event which is called when an extension cancels game startup.


  • New
    • Added overload to GetGameMatchesFilter function for acronym match support.


  • New
    • Added overload to ExpandGameVariables function for expanding {EmulatorDir} variable.


  • New
    • Added GetGameMatchesFilter and GetFilteredGames methods to IGameDatabase
    • Toolbox utility can now verify addon and installer manifests.


  • New
    • Exposed filtering options for install size and recent activity fields


  • New
    • Built-in emulator profiles exposed in Emulation API.
    • Added an option to switch progress bar mode from inside ActivateGlobalProgress dialog function while progress dialog is already opened.
    • Metadata plugins can provide data for new InstallSize field.


  • New

    • Support for plugins to provide search results in new global search view.
    • Filter presets (and associated functionality) completely exposed in the SDK.
    • Added option for plugins to interrupt game startup by enabling CancelStartup property on OnGameStartingEventArgs event.
    • Added StartedProcessId property to OnGameStartedEventArgs, containing process ID of started game (if startup source sets it).
    • Added ManuallyStopped property to OnGameStoppedEventArgs, indicating whether game tracking was manually stopped by a user.
    • Exposed UI thread dispatcher in main view API. Read more about thread safety here.
    • Standard web view now has access to hosting window object via WindowHost property.
    • Added IsGlobalSearchRequest to Get*MenuItemsArgs, to distinguish between menu requests and new global search view requests.
    • Added AddConvertersSupport method for plugins to supply themes with custom value converters.
  • Fixed

    • Cases where some UI related events (for example for game selections) were not being called at all or too many times.


  • Fixed
    • Creating OffscreenWebView with custom user agent fails
    • Crash when adding sidebar items
    • OnGameStopped stopped event is called too early


  • New
    • Added selected ROM file and source game action to game starting events.
    • Exposed selected Desktop view mode in UI API.
    • Added option to select multiple games.
    • Exposed list of currently filtered games.
    • Exposed completion status settings.
    • Added option to set user agent for specific web view instance.
    • New model changes related to added option to override built-in emulator arguments.
    • You can now use F12 on web view windows to open Chromium dev tools.


  • New
    • IsMusicMuted property exposed in settings API.


  • Breaking Changes

    • Many breaking changes to the entire SDK. All extensions and themes have to updated to work with Playnite 9. See Playnite 9 migration guide for more details.
    • Removed IronPython support.
    • Extensions no longer log into main playnite.log log file, but instead log into separate extensions.log file.
    • Playnite 9 changes how library files are stored on disk. This is not breaking change to the SDK, but some existing extensions modify library files directly (which was never supported) and those will not work anymore.
  • New

    • PowerShell extensions are now implemented as proper PowerShell modules.
    • Playnite now includes built-in add-on browser that can be used to install/update extension. You need to publish your extension to add-on repository for it to work.
    • Ability to inject elements into Sidebar, Top panel and any custom theme that supports specific extension element explicitly.
    • Ability to dynamically inject play, install and uninstall actions.
    • You can now load extensions from custom directories via For developers settings menu.
    • Added Trace severity log messages. These are not written into log files unless enabled in For developers settings menu.
    • Import exclusions can be controlled via the SDK.
    • Themes can now add custom mouse cursor and sound files.


  • New
    • Ability to change progress text when using ActivateGlobalProgress
    • CurrentExtensionInstallPath and CurrentExtensionDataPath global variables for script extensions



  • Breaking Changes:

    • Playnite will no longer load plugins that reference non-SDK Playnite assemblies. See this page for more information.
    • Playnite will no longer install extensions and themes that don't have proper version specified. The version string must a valid .NET version string!
  • Now obsolete:

    • These changes do not break compatibility in current version (mentioned methods are still available in SDK), but they will be made breaking in future major Playnite updates.
    • Added Id to extension and theme manifests. This field is currently not mandatory for existing extensions (Playnite 8 will load installed extensions without an ID, but will not install new ones without an ID), but should be provided for better extension installation and update support. Toolbox will not pack new extensions unless Id is present.
    • The way custom menu items are implemented (for main menu and game menu) has been completely changed (the old system still works temporarily). See related documentation page for more information.
    • NavigationChanged from IWebView is now obsolete, use new LoadingChanged instead.
  • New


  • Breaking Changes:

    • Toolbox utility has been reworked and accepts different arguments then previously.
  • New

    • Library plugins can now support extra capabilities.
    • Added ImportGame methods to more easily add new games to the library.
    • Added OpenPluginSettings method to open view with extension settings (also accessible via OpenSettingsView method inherited from Plugin class).
    • Added StartGame.
    • Added UriHandler for registering of custom URI method actions.
    • Added option settings when creating offscreen web view (currently only option to disable JavaScript execution).
    • Added OnGameSelected, OnApplicationStopped and OnLibraryUpdated events.
    • Added Features game field and appropriate support for it in metadata plugins.
    • Toolbox utility can now generate plugins and scripts.
    • Toolbox utility can pack plugins and scripts into .pext file that can be used for easier distribution and installation.


  • New


  • Removed reference to LiteDB package. You can remove it from your plugin project if it's present.


  • Breaking Changes:

    • Extension plugins are no longer created by inheriting plugin interface, but rather extending Plugin and LibraryPlugin abstract classes.
    • IGameDatabase interface is completely changed and every object collection (Games, Genres, Tags etc.) is now accessible via appropriate IItemCollection property.
    • Game changed dramatically. Fields like genres, tags and others are no longer part of the model itself but just ID pointers to appropriate database objects.
  • New

    • Extended several API with new methods.


  • Breaking Changes:
    • Removed and added new APIs and API members.
    • Game files are no longer stored in single database file. All game and media files are now accessible in their raw form even without user of database API.


  • Breaking Changes:

    • In order to unify terminology used in Playnite's UI and that in SDK, some classes and class members were renamed.
    • Extensions (both plugins and scripts) have to provide extension manifest otherwise they won't be loaded.
      • Various information about extension (author, version etc.) must be now stored in manifest file.
    • Both plugins and scripts have to be stored in the same folder called Extensions (rather then in separate Plugins or Scripts folders).
    • Signature for default C# plugins has changed and they now have to implement IGenericPlugin interface to be loaded.
  • New Plugin types. There are now two types of plugins that can be implemented:

    • Generic Plugin: Same as the old plugins.
    • Library Plugin: Used to add new library providers responsible for automatic game import from various sources.
      • All existing supported library importers (Steam, GOG etc.) are now distributed as library plugins.
  • New APIs:

  • New Methods

    • GetPluginUserDataPath: Gets path dedicated for plugins to store user data.
    • GetPluginConfiguration: Gets plugin configuration if available.
    • LoadPluginSettings: Loads plugin settings.
    • SavePluginSettings: Saves plugin settings.
    • ExpandGameVariables: Expands dynamic game variables in specified game action.
    • CreateLogger: Creates new instance of Playnite logger with name of calling class.


  • Breaking Change: Scripts and Plugins must be place in subfolders rather then directly inside of Scripts or Plugins folders.
  • New: OnGameStarting event that will execute before game is started. See events for use from scripts.
  • New: ShowErrorMessage method in IDialogsFactory