March 20, 2026
Foundry Virtual Tabletop - Version 14 - Testing 2 Release Notes
Hello again and happy Friday, Foundry friends! We are happy to announce that Foundry Virtual Tabletop Version 14 User Testing 2 (Build 357) is now ready for your perusal! This is the second release of the User Testing phase, and we would like to encourage any curious and experienced Foundry VTT users to install it and check it out.
As always in the User Testing phase, for this release we focused on refinement, bugfixes, and stability. All of your feedback has been invaluable thus far, and we look forward to hearing more!
WARNING: This is a Testing update intended for experimenting with the new features in V14, not for running actual campaign sessions.
If you're checking out V14 for the first time, a summary of all the most important changes made so far in V14.
How to test out the V14 User Testing 2 release
The best way to check out non-Stable builds of Foundry VTT is to use separate Foundry VTT installations, and a different User Data folder, and no modules enabled. For Windows users, you can easily do this by downloading and installing the V14 Windows Portable Build. As always, be sure to backup all your important worlds first!
To test V14, you will also need to use a compatible game system such as our own Crucible system. The latest publicly released version of D&D 5E, 5.2.5, is not compatible with V14. However, you can test V14 by installing version 5.3 with this Manifest URL: https://github.com/foundryvtt/dnd5e/releases/download/release-5.3.0/system.json.
If you are planning on testing V14 using a Node.js dedicated server, please be aware that V13 and V14 require mutually exclusive versions of Node.js. V13 is not compatible with Node.js 24, and V14 requires it.
V14 User Testing 2 Update Highlights
Testing builds are primarily focused on bugfixes and API improvements, and this release features plenty of both! We are only planning to have one more User Testing release before Stable, and so we intentionally avoided making sweeping new features or changes wherever possible.
With that said, we'd like to call your attention to some notable areas of improvement:
The new "high-level planned movement" API
Earlier in Foundry V14, we introduced a "low-level" planned movement API. This was (and still is) a powerful tool that helps to plot out potential movement paths before actually moving the token.
However, in its first iteration, we found that developers who wanted to use this API had to do some signficant legwork to connect all these individual tools together to form a unified process. This was especially when the planned movement had to adhere to certain rules. The new API addditions abstract the manipulation of these more granular tools to a higher level that is much easier to work with.
Bug fixes a' plenty and API embetterments
By the power of their combined bootheels, the dev team squashed over 30 miscellaneous bugs in about a week. The critters vanquished ranged from a pesky issue with SSL certificates to various Levels-related edge cases. They also improved the API when the opportunity arose, taking care to keep impacts as minimal as possible.
Breaking Changes
The Game Canvas
- Deprecated
TokenFindMovementPathOptions#ignoreWalls,#ignoreCost, and#historyin favor ofTokenFindMovementPathOptions#constrainOptions. (13992)
New Features
Applications and User Interface
- In the Token Configuration dialog,
Dimensions (Grid Spaces) Width ☐ Height ☐ Depth ☐was relabeled toSize (Grid Spaces) X ☐ Y ☐ Z ☐. (13973)
The Game Canvas
- Refined how hovering the mouse cursor over an obscuring image/video in the map hides it, revealing areas below it. This is particularly important for multi-Level scenes. Surfaces at or above the viewed Level's top elevation now always occlude when hovered by the cursor. Hover-fading behavior has been removed from textures on higher Levels and from tiles with the Surface occlusion mode. (13984)
API Improvements
Documents and Data
- Added
cancel()support to the coredebouncehelper to make cleanup and teardown workflows easier when using debounced functions. (13971)
The Game Canvas
- Improved the Token movement API by adding support for passing explicit movement IDs to
TokenMovement#moveoptions and to the movement instructions ofScene#moveTokens. (13738) - Added
TokenConstrainMovementPathOptions#maxCostand#maxDistance. (13968) - Added the center point of tokens as an additional test point. This change helps to prevent an issue where larger tokens were becoming visible later than might be expected. (13970)
- Added support for recording subpath information in movement history. (13985)
- Added
RegionLayer#placeRegionsand certain relatedindexandcountarguments were renamed toshapeIndexandshapeCountfor clarity. (13988) - Added support so that
RegionLayer#placeRegioncan now be called while the Tokens layer is active. It no longer causes the currently controlled set of tokens to be released. (13989) - Added
allowEmptyoption (default: false) toRegionLayer#placeRegion. Iftrues, the function returns an empty region instead ofnullif all shapes are skipped. (13990) - Added a new high-level planned movement API (
token.planMovement(options)) to easily encapsulate the full interactive movement planning workflow. This function resolves to a planned movement object when the user confirms a destination or tonullif the user cancels. (13935)
Dice and Cards
Roll.replaceFormulaDatanow makes use of customvalue.toStringif one exists for avalueof typeobject. (13966)
Bug Fixes
Architecture and Infrastructure
- Fixed a bug where the Electron application failed to launch when SSL certificates were configured. (13954)
Documents and Data
- Prevented a deprecation warning caused by
ActiveEffect#_prepareTimeBasedDurationpassing a deprecated option toCalendarDataformat methods. (13959) - Simplified
ActiveEffect#isSuppressedby removing an unnecessary check. (13963) - Fixed a bug where Documents with an invalid
typecould not be deleted. (13914) - Fixed a bug where
Combatant#turnNumberwas sometimes not set at start of combat. (13979) - Compendiums that contain only Active Effects are no longer missing their banner images. (13859)
- Prevented invoking the
deleteAlloperation with a non-empty array of IDs. (13908)
Applications and User Interface
- Fixed a regression where Scene control layers without tools were once again crashing or failing to render. (13814)
- Fixed a bug where the styling from custom themes (including light mode) was not applied to Custom elements. (13955)
- Resolved an issue where the autocomplete functionality in filters and formulas did not handle accented characters properly. (13958)
- Fixed a bug where GMs were unable to read the true content of non-roll messages that were sent with the Blind message mode. (13902)
- Fixed a bug where attempting to toggle the message mode from the Chat Log tab failed if the chat input was focused. (13883)
- Fixed a bug where attempting to detach a window with an active ProseMirror editor threw an error. (13952)
- Fixed a bug where rendering a child app via
renderChildcaused it to be closed if the parent was ever closed, even when not inside a detached window. (13972)
The Game Canvas
TokenDocument#getTestPointsnow correctly returns test points in an elliptical arrangement for elliptical tokens in gridless grids. (13830)- Fixed a bug where
TokenDocument#movealways returned false for planned movement. (13947) - Fixed a bug where the "Create Shapes from Controlled Walls" button in the Region Configuration dialog failed with an error. (13948)
- Fixed a bug where initial token vision was broken for Scenes with a padding percentage of
0. (13874) - Fixed a bug where a planned movement could get stuck indefinitely in the pending state after the first checkpoint. (13951)
- Fixed a bug where panning to token occurred instantly instead of playing the usual animation. (13967)
- Prevented an error that was thrown when deleting the currently viewed Level. (13957)
- Prevented an error where
Actor#getTokenDocumentcould throw an unhandled exception when there was no active scene and certain other conditions were met. (13974) - Fixed a bug where
TokenDocument#_prepareBarsdidn't clear old data when it ran without data re-initialization. (13978) - Fixed a bug where fog exploration level was not properly migrated from legacy data. (13993)
Localization and Accessibility
- When an in-app update of the installed version of Foundry VTT is not possible, the (disabled) Update button's tooltip explanation is now correct. (13800)