Release Notes for tinacms@3.14.0

Table of Contents
- [Minor Changes](#minor-changes)
- [Patch Changes](#patch-changes)

Minor Changes

  • #7229 2a70b77 Thanks @wicksipedia! - <TinaMarkdown> and <StaticTinaMarkdown> accept null and undefined for content. Both components already rendered nothing for these values, and the prop types now match. You can pass an optional rich-text field to them without a guard.

Patch Changes

  • #7539 901975f Thanks @wicksipedia! - Cycle the loading copy through a bank of llama-themed messages in a random order, with a short fade between them. The admin loading page, the sidebar loading placeholder, and the TinaCMS wrapper all share the same message list.

  • #7551 2bbbaaf Thanks @joshbermanssw! - URL-encode the pagination cursor in the media list request, so folders whose cursor contains a reserved character load every page instead of repeating the first one.

  • #7529 c5407b7 Thanks @copilot-swe-agent! - Replace generic "Please wait" loading copy with more on-brand messaging in the admin loading page, sidebar loading placeholder, and TinaCMS wrapper.

  • #7538 a658075 Thanks @kulesy! - Use absolute URLs for the README images so they render on the npm package page.

  • #7520 60db64b Thanks @kulesy! - Revert the final-form family to v4 so edits inside nested panels survive navigating back

    react-final-form 7.0.1 resets a field to its initial value whenever it mounts at a path that has no registered field. The sidebar unmounts the parent field set every time you open a group, an object-list item or a block, so on the way back the parent field remounted and was reset, throwing away every unsaved edit made inside the panel. Reported in 3.12.1 as "I have to save each list item before backing out".

    Back to final-form 4.20.10, final-form-arrays ^3.1.0 and react-final-form ^6.5.9 until the upstream fix (final-form/react-final-form#1096) ships.

  • #7522 b57dbf4 Thanks @wicksipedia! - The admin preview route now resolves its path against the admin's own origin. When the resolved value points elsewhere the preview stays on the site root, raises a warning, and replaces the rejected address in history so neither the address bar nor the back button keeps pointing at the other site.

    The origin trusted for the admin-to-preview message channel is now the admin's own origin rather than one derived from the preview URL, so a URL cannot nominate the origin it is then trusted from.

    The active-field lookup also guards against a preview whose document it cannot read (a cross-origin or sandboxed frame), where it previously threw and unmounted the admin.

  • Updated dependencies [df35183]:

    • @tinacms/mdx@2.2.3
    • @tinacms/search@1.2.25
View on GitHub

Last Edited: September 14, 2026