Releases: itchio/itch
v26.9.0
This release upgrades Electron from 25 to 40, overhauls sandboxing across Linux, macOS, and Windows, makes install planning non-blocking, and adds support for compressed HTML game files.
macOS 10.15 (Catalina) is no longer supported. macOS 12 (Monterey) or later is now required.
Electron
- Upgrade from Electron 25 to Electron 40 (#3382)
- Minimum supported macOS version is now 12 (Monterey)
- Linux now defaults to native Wayland in Wayland sessions
- Updated esbuild targets to Node 24 and Chrome 144 to match Electron 40
- Updated
openAsHiddenlogin item setting to only apply on Windows (removed from macOS in newer Electron)
Game Installation
- Refactored install planning to split install target listing (
Install.GetUploads) from per-upload planning (Install.PlanUpload). Due to how the app computes space requirements, it may take some time as our CDN warms up cold files. For this reason we made the size calculation happen asynchronously so you can queue an install immediately without having to wait for install size calculation to complete. - Added cancellation support for in-flight install planning requests when changing upload or closing the modal
- Fixed quadratic operation in collection and library sync that could cause the app to lock up when synchronizing large collections
- Added hard limits on collection sync (2000 items) and owned keys (5000) to prevent excessive resource consumption
Sandboxing
Linux
- Added new Bubblewrap sandbox backend with user-namespace isolation, a persistent per-game home directory, read-only system mounts, and GPU, audio, and display passthrough
- Added Flatpak-spawn sandbox backend for running sandboxed games when itch is installed as a Flatpak
- Updated Firejail backend with network disable support, an expanded blacklist covering sensitive paths (~/.ssh, ~/.gnupg, ~/.aws, browser data), and environment variable filtering consistent with the new backends
- Auto-detection selects the best available backend: Flatpak-spawn when inside Flatpak, otherwise Bubblewrap if available, with Firejail as fallback
macOS
- New balanced (strict, default) and legacy sandbox policy modes: legacy allows broader compatibility for problematic games
- Rosetta 2 support: x86 games can now run sandboxed on Apple Silicon Macs
Windows
- Fixed "access denied" error on first sandbox launch caused by ACL permission propagation delay
All Platforms
- Unified network disable control across all sandbox backends (Bubblewrap, Flatpak-spawn, Firejail, macOS, Windows)
- Per-cave sandbox override settings (sandbox type, network access, allowed environment variables)
- Per-cave extra command-line launch arguments
- New sandbox preferences under Security & privacy: sandbox type dropdown (
Auto,Bubblewrap,Firejail), "Disable network access in sandbox" toggle, and allowed environment variable names input - Strict environment variable allowlist: only display, audio, session, and itch.io-specific variables are passed through, with user-configurable additions via preferences
- Added warning about game save data when changing sandbox settings
HTML Games
- Handle compressed HTML game files (gzip, brotli, .unityweb) before transferring to client, since protocol URLs do not support content encoding (#3286)
- Don't try to open non-HTTP links (like
about:blank) in external browser (#3394)
Changelog Dialog
- Reintroduced the in-app changelog dialog
- Added release tabs for
itch,butler, anditch-setup
UI & Accessibility
- Added more semantic HTML and ARIA labels across controls (navigation buttons, game management actions, progress indicators, sidebar navigation)
- Game cover images now include alt text
- Updated cave version selection rows to semantic buttons
- Fixed tab list scrollbar rendering issues (#3384)
- Updated
react-tabsto v4.3.0 with bundled types and added global tab styles - Improved login form alignment and spacing
- Allow logs in log viewer to be copied and pasted (#3000)
Bug Fixes
- Fixed a possible bug with Windows game launching being broken by a Go runtime update
- Fixed macOS memory leak in file path resolution
- Fix log entries not showing up correctly in game crash dialog
- Fix TypeScript buffer type handling in memory streams
Other
- Changed app ID from
com.squirrel.itch.itchtoio.itch.itch - Disabled remote locale fetching (locales.itch.zone no longer exists)
- Use Node's built-in sourcemap support, removing
source-map-supportdependency - Reviewed the itch docs and modernized many pages. https://itch.io/docs/itch/
v26.8.0-canary
This release upgrades from Electron 33 to Electron 40, adds Linux sandboxing overhaul, and breaks apart install planning phase so that it doesn't block installing a game.
macOS 11 (Big Sur) is no longer supported. macOS 12 (Monterey) or later is now required.
Electron
- Upgrade from Electron 33 to Electron 40 (#3382)
- Minimum supported macOS version is now 12 (Monterey)
- Linux now defaults to native Wayland in Wayland sessions
- Updated esbuild targets to Node 24 and Chrome 144 to match Electron 40
Install
- Refactored install planning to split install target listing (
Install.GetUploads) from per-upload planning (Install.PlanUpload). Due to how the app computes space requirements, it may take some time as our CDN warms up cold files. For this reason we made the size calculation happen asynchronously so you can queue an install immediately without having to wait for install size calculation to complete. - Added cancellation support for in-flight install planning requests when changing upload or closing the modal
Linux Sandboxing
- Added new Bubblewrap sandbox backend with user-namespace isolation, a persistent per-game home directory, read-only system mounts, and GPU, audio, and display passthrough
- Added Flatpak-spawn sandbox backend for running sandboxed games when itch is installed as a Flatpak
- Updated Firejail backend with network disable support, an expanded blacklist covering sensitive paths (~/.ssh, ~/.gnupg, ~/.aws, browser data), and environment variable filtering consistent with the new backends
- Auto-detection selects the best available backend: Flatpak-spawn when inside Flatpak, otherwise Bubblewrap if available, with Firejail as fallback
- New sandbox preferences under Security & privacy: sandbox type dropdown (
Auto,Bubblewrap,Firejail), "Disable network access in sandbox" toggle, and allowed environment variable names input - Strict environment variable allowlist: only display, audio, session, and itch.io-specific variables are passed through, with user-configurable additions via preferences
Changelog Dialog
- Reintroduced the in-app changelog dialog
- Added release tabs for
itch,butler, anditch-setup
UI & Accessibility
- Added more semantic HTML and ARIA labels across controls (navigation buttons, game management actions, progress indicators, sidebar navigation)
- Game cover images now include alt text
- Updated cave version selection rows to semantic buttons
- Fixed tab list scrollbar rendering issues (#3384)
- Updated
react-tabsto v4.2.1 and added global tab styles - Improved login form alignment and spacing
Documentation
- Reviewed the itch docs and modernized many pages. https://itch.io/docs/itch/
v26.7.0-canary
This release upgrades from Electron 25 to Electron 33. macOS 10.15 (Catalina) is no longer supported macOS 11 (Big Sur) or later is now required.
This is release is made available as an intermediate for upcoming Electron to allow for us to bisect for any issues.
Electron
- Upgrade from Electron 25 to Electron 33 (#3382)
- esbuild target updated to Node 20 and Chrome 130 to match Electron 33
- Updated
openAsHiddenlogin item setting to only apply on Windows (removed from macOS in newer Electron)
Other
- Changed app ID from
com.squirrel.itch.itchtoio.itch.itch(itch setup has been updated to create shortcut for new app id) - Disabled remote locale fetching (locales.itch.zone is retired for now)
v26.6.0
This is the first stable release since v26.1.9 and includes all changes from v26.2.1-canary, v26.3.0-canary, v26.4.0-canary, and v26.5.0-canary releases.
Highlights
Native Apple Silicon support The app now runs natively on arm64 macOS (Apple Silicon). The auto-updater will automatically pull the correct version for your system. All supplemental binaries (butler, itch-setup) will also be replaced with their arm64 equivalents. The app should start faster, run faster, and have less impact on your battery since it no longer needs to run through Rosetta emulation.
New OAuth login The default login method is now an OAuth flow that opens your browser to complete authentication. This replaces the in-app username & password login as the default. Password login remains available as a fallback. We're making this change because password-based API login endpoints are frequent targets for credential stuffing attacks, and our previous captcha solution didn't work reliably in Electron.
Build System & Infrastructure
- Fully migrated CI/CD from GitLab CI to GitHub Actions, all builds are now built, signed, notarized, and deployed through GitHub Actions
- macOS builds are signed and notarized. Windows builds are code-signed via Azure Code Signing
- Migrated from Webpack to esbuild for faster builds and smaller bundles
- 32-bit binaries are fully retired
Electron & React
- Upgraded to Electron 25 (from Electron 22) (Note: We are prioritizing Electron updates going forward but we are doing checkpoint releases before the huge app refactor that will have to take place)
- Updated
@itchio/butlerdfixes theCannot read properties of undefined (reading 'pid')bug - Initial pass at modernizing frontend React components
Accessibility
- Clickable elements now use semantic HTML (
<button>,<a>) for keyboard navigation and screen reader support - Modal dialogs use the native
<dialog>element with proper focus trapping (#3292) - Icons have
role="img"andaria-labelattributes for screen readers - Remembered profiles use flexbox layout for correct tab order
UI Improvements
- Broth component in preferences is now expandable, showing executable path, version, directory, and source channel
- Playtime duration tooltips now show precise hours/minutes/seconds on hover
Bug Fixes
- Fix errors related to
/register,/random, and other system pages (#3009) - Fix context menus when clicking games (#2890)
- Fix clipboard operations in the URL bar and login form
- Fix error on SendFeedback page (#2951)
- Fix duplicated slash in path to user profile
- Fix protocol check for URL handling (#3236)
- Allow refreshing the app's UI again instead of opening in system browser
- Fix missing uninstall dialog title
- Set user agent fallback to avoid Cloudflare issues (#3369)
Other
- Updated localization strings (Farsi, Chinese Simplified, Indonesian, Italian, and others)
Thank you to @botamochi0x12 and @jls47 for their contributions!
Full Changelog: v26.1.9...v26.6.0
v26.5.0-canary
This is the first version of the app to officially support arm64 on macOS (aka Apple silicon)! The auto-updater will automatically pull the arm64 version for those on Apple silicon. No separate reinstallation necessary. All supplemental binaries (butler, itch-setup) will also automatically be replaced with their arm64 equivalent. New version of butler and itch-setup have also been deployed to coincide with this release. The app should now start faster, be faster, and have less impact on your battery since it no longer needs to run through emulation on modern macOS computers.
This version of the app also includes our new OAuth login flow. We plan to retire username & password login in the app in favor of an OAuth login that requires a browser to complete the login. Unfortunately API endpoints that allow someone to authenticate via a username & password are prime targets for credential stuffing attacks. Our previous solution to this was to add a captcha in the app, but it broke more often than not, as electron is not a regular browser.
The OAuth login is now the default screen. Username & password will remain available as a secondary option until we verify that people don't have any issues logging in.
Notes on arm64
Because the app is booted by itch-setup, we decided to remove the universal build of the electron app we published with the last canary version. itch-setup will pick the version of the app that is correct for your system, so it's not necessary to download an app that is 2x the size that runs on both intel and arm64. (We do provide universal builds on the kitch installation program though)
This update also completes our major refactor and migration of our CI system to GitHub Actions. All executables are now built, signed, notarized, and deployed through a GitHub actions workflow. We look forward to adding support for arm64 Windows and Linux in future updates now that we have completed the foundation.
With the new CI we are fully retiring all 32 bit binaries that we used to publish. Many of these were already not being updated anymore, but we'll be removing the download links entirely from broth.
Build System & CI
- macOS signing and notarization done on GitHub Actions via separate job (new
release/sign-macos.js) - Windows code signing via Azure Code Signing in CI
- Separate macOS x64 and arm64 builds (removed
@electron/universal, builds are no longer merged into a universal binary) - Tagged builds are published to itchio via butler through GitHub Actions
- Restored integration test workflow on GitHub Actions
- Removed GitLab CI references, fully migrated to GitHub Actions
- Use tarballs for artifact transfer to preserve symlinks and permissions
- Upgraded
@electron/packagerv18 to v19,@electron/notarizev2 to v3 - No longer installs external npm dependencies during packaging (dependencies are bundled by esbuild)
Login
- New OAuth login flow with PKCE as the default login method
- Password login still available as a fallback ("Log in with password" link)
- OAuth callback handled via
itch://oauth-callbackprotocol - Manual code paste fallback for when the browser redirect doesn't work
- New butlerd message:
Profile.LoginWithOAuthCode
React & Dependencies
- Upgrade React 16 to React 17
- Upgrade styled-components to 5.3.11
- Added typed Redux hooks (
useAppDispatch,useAppSelector) - Many class components converted to functional components with
React.memo - Replaced
react-container-dimensionswith built-inContainerDimensionscomponent usingResizeObserver - Removed
rimrafdependency (use nativefs.rm) - Removed
RandomSvgcomponent (unused) - Removed
recursive-copydev dependency
UI Improvements
- Broth component in preferences now expandable, showing executable path, version, directory, stage, source channel
- Playtime duration tooltips now show precise hours/minutes/seconds on hover
- Remembered profiles layout improvements
Accessibility
- We did a pass over all clickable button like elements to ensure that they use semantic HTML elements like
<button>to ensure that they can be navigated to and activated with a keyboard - Icons now have
role="img"andaria-labelfor screen readers - Search results use standard
scrollIntoView()for keyboard navigation instead of deprecatedscrollIntoViewIfNeeded() - Remembered profiles use flexbox layout instead of absolute positioning, improving tabbing order
Platform
- macOS: proper arm64 architecture detection for broth packages (no longer hardcoded to amd64)
- macOS: binary architecture validation — re-downloads amd64 binaries on arm64 Macs
- Broth package state now tracks download channel
Other
- Updated localization strings (Farsi, Chinese Simplified, Indonesian, Italian, and others)
v26.4.0-canary
NOTE: We are in the process of working out migration to our build system, builds on the GitHub release are not signed and notarized, and therefore are not uploaded to https://itchio.itch.io/kitch
Build System
- Add arm64 and universal builds to GitHub Actions
- Add @electron/universal for macOS universal binary support
- Clean build artifact names published to the GitHub release
v26.3.0-canary
Note: Due to modern Windows signing requirements we'll likely be migrating
the entire build system to GitHub actions. Right now we're doing builds in
parallel to work out the details. Currently no builds uploaded to GitHub
releases are signed or notarized but you're welcome to run them.
Build System
- Migrate from Webpack to esbuild
- Remove happypack dependency
- Migrate release scripts to ES modules
- Upgrade electron-packager to @electron/packager (v17 to v18)
- Set up GitHub Actions for building and deploying
- Update TypeScript to latest version
- Add production minification and metafile generation for bundle analysis
Electron
- Upgrade to Electron 25
- Update protocol registration method
Dependencies
- Migrate to @itchio/butlerd - Fixes the
Cannot read properties of undefined (reading 'pid')bug - Remove
urlmodule dependency in renderer (use browser builtins) - Remove
utilpackage dependency in renderer - General dependency cleanup
Accessibility
- Modal dialogs now use semantic
<dialog>element with focus trapping (#3292) - Buttons and links migrated to semantic HTML elements
- Remove "draggable" attribute from modal dialogs
Bug Fixes
- Allow refreshing the app's UI again, instead of opening it in your system browser
- Fix missing uninstall dialog title
- Fix button behavior and login form submit handling
- Include architecture in user agent string
Other
- Update screenshots
v26.2.1-canary
- Fix errors related to
/register,/randomand other system pages (#3009) - Fix context menus when clicking games (#2890)
- Fix clipboard operations in the url bar and login form
- Upgrade various dependencies to pick up security fixes
Thank you to @botamochi0x12 and @jls47 for their contributions!
v26.1.9
Please Note: This will be the last version of the app compatible with Windows 7 and 8.
This release upgrades a number of dependencies, especially Electron (to version 22), to resolve some lingering security issues. It also includes some performance and efficiency improvements.
The logic for game updates has changed. The app will check for updates any time you view a game page or run a game. You can check your full library for game updates at any time in the Preferences menu via the "Check for game updates" action.
Full Changelog: v25.6.2...v26.1.9
v26.1.5-canary
- Update translations. Several new languages!
- Check for game updates automatically when viewing an installed game's page
- Add option for manually triggering a full-library game update check
- Fix issue where some links on game pages weren't clickable
Full Changelog: v26.1.3-canary...v26.1.5-canary