Register

Release 14.357

Version 14 Testing

March 20, 2026

Foundry Virtual Tabletop - Version 14 - Testing 2 Release Notes

Foundry VTT Version 14 User Testing 2 as shown with the legendary PF2E Abomination Vaults adventure module, adapted for D&D 5E
Foundry VTT Version 14 User Testing 2, as shown with the legendary PF2E Abomination Vaults adventure module (adapted for D&D 5E)!

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 #history in favor of TokenFindMovementPathOptions#constrainOptions. (13992)

New Features

Applications and User Interface

  • In the Token Configuration dialog, Dimensions (Grid Spaces) Width ☐ Height ☐ Depth ☐ was relabeled to Size (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 core debounce helper 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#move options and to the movement instructions of Scene#moveTokens. (13738)
  • Added TokenConstrainMovementPathOptions#maxCost and #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#placeRegions and certain related index and count arguments were renamed to shapeIndex and shapeCount for clarity. (13988)
  • Added support so that RegionLayer#placeRegion can now be called while the Tokens layer is active. It no longer causes the currently controlled set of tokens to be released. (13989)
  • Added allowEmpty option (default: false) to RegionLayer#placeRegion. If trues, the function returns an empty region instead of null if 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 to null if the user cancels. (13935)

Dice and Cards

  • Roll.replaceFormulaData now makes use of custom value.toString if one exists for a value of type object. (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#_prepareTimeBasedDuration passing a deprecated option to CalendarData format methods. (13959)
  • Simplified ActiveEffect#isSuppressed by removing an unnecessary check. (13963)
  • Fixed a bug where Documents with an invalid type could not be deleted. (13914)
  • Fixed a bug where Combatant#turnNumber was 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 deleteAll operation 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 renderChild caused it to be closed if the parent was ever closed, even when not inside a detached window. (13972)

The Game Canvas

  • TokenDocument#getTestPoints now correctly returns test points in an elliptical arrangement for elliptical tokens in gridless grids. (13830)
  • Fixed a bug where TokenDocument#move always 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#getTokenDocument could throw an unhandled exception when there was no active scene and certain other conditions were met. (13974)
  • Fixed a bug where TokenDocument#_prepareBars didn'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)