Skip to content

Bump tinacms from 3.6.3 to 3.8.0#166

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/tinacms-3.7.6
Closed

Bump tinacms from 3.6.3 to 3.8.0#166
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/tinacms-3.7.6

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 8, 2026

Bumps tinacms from 3.6.3 to 3.8.0.

Release notes

Sourced from tinacms's releases.

tinacms@3.8.0

Minor Changes

  • #6771 95758a0 Thanks @​wicksipedia! - ✨ Visual editing for Astro — without React.

    TinaCMS visual editing previously required useTina(), a React hook that subscribes to admin postMessages and re-renders the page tree. That made it a hard sell for Astro: the framework is built around shipping zero JS by default, and the existing examples/astro/kitchen-sink worked around the React requirement by hydrating React inside the editor iframe — exactly the pattern Astro authors avoid.

    This release ships a vanilla-JS bridge that brings the same click-to-focus, live-update, and form-syncing UX to Astro components, Hugo templates, plain HTML — anything that can emit a data-tina-form payload per query.

    New package: @tinacms/bridge

    A ~2 KB gzipped, zero-dependency ESM bundle that speaks the existing TinaCMS admin postMessage protocol. No React in the page tree, no client islands, no hydration cost outside the editor iframe.

    Astro projects install @tinacms/astro instead and the bundled integration's middleware auto-injects everything on edit-mode responses. Direct @tinacms/bridge consumption is for non-Astro frontends:

    <head>
      <div
        data-tina-form='{"id":"…","query":"…","variables":{},"data":{}}'
        hidden
      ></div>
      <script type="module">
        import { init } from "/_tina/bridge.js";
        init();
      </script>
    </head>

    The bridge submodules:

    • init() — top-level entry. Detects iframe embedding, registers all [data-tina-form] payloads with the admin (with retry, since the bridge boots faster than the admin's listener), wires data updates and click-to-focus.
    • refreshForms() — re-scans the DOM after soft navigations (Astro view transitions, Turbo, htmx). Posts close for forms that left and open for forms that appeared.
    • tinaField() — framework-free field-id helper, identical API to tinacms/dist/react's export. Use on any element to make it click-to-edit.
    • @tinacms/bridge/preview — server-side helper for non-React frameworks. readOverlay(request, queryId) returns the unsaved form data the admin is editing, so per-route refresh endpoints can re-render with overlay data on every keystroke.

    How edits flow without re-rendering React

    The bridge takes a soft-refresh approach instead of in-place reconciliation. Mark editable regions with data-tina-island="<endpoint-url>"; on every form change the bridge POSTs the current overlay to that endpoint, the server renders the matching component to an HTML fragment, and the bridge swaps it into the live DOM. Per-island scoped — editing the hero refetches only the hero, not the whole page. The transport is JSON-over-POST so UTF-8 (em-dashes, smart quotes, emoji) and large rich-text bodies round-trip without size or charset limits.

    The protocol stays stateless — admin pushes already-resolved data to the bridge, bridge forwards it to the island endpoint, endpoint reads it via readOverlay() instead of hitting the canonical content store. Works identically against self-hosted Tina, TinaCloud, or any GraphQL endpoint. No backend changes shipped.

    tinacms: framework-free tinaField subpath

    tinaField() was already pure — just reads _content_source metadata. It's now exported from tinacms/tina-field as a standalone module so non-React frontends can import it without pulling React (and Plate, and dnd-kit, and ~50 other React deps) into their bundle. The existing tinacms/dist/react re-export keeps the public API stable.

    Reference example: examples/astro/visual-editing

    A new Astro 5 example that mirrors examples/astro/kitchen-sink field-for-field — same six collections (Tag, Author, Global, Post, Blog, Page), same shared content via localContentPath, same eight routes — but rendered with pure Astro components instead of React islands. Includes:

    • The @tinacms/astro package's TinaMarkdown — a vanilla Astro rich-text renderer that walks the Plate AST Tina returns, dispatches custom MDX components (NewsletterSignup, BlockQuote, DateTime, code blocks) by name to authored Astro components — the same components map shape as TinaMarkdown from tinacms/dist/rich-text, but emitting Astro markup

... (truncated)

Changelog

Sourced from tinacms's changelog.

3.8.0

Minor Changes

  • #6771 95758a0 Thanks @​wicksipedia! - ✨ Visual editing for Astro — without React.

    TinaCMS visual editing previously required useTina(), a React hook that subscribes to admin postMessages and re-renders the page tree. That made it a hard sell for Astro: the framework is built around shipping zero JS by default, and the existing examples/astro/kitchen-sink worked around the React requirement by hydrating React inside the editor iframe — exactly the pattern Astro authors avoid.

    This release ships a vanilla-JS bridge that brings the same click-to-focus, live-update, and form-syncing UX to Astro components, Hugo templates, plain HTML — anything that can emit a data-tina-form payload per query.

    New package: @tinacms/bridge

    A ~2 KB gzipped, zero-dependency ESM bundle that speaks the existing TinaCMS admin postMessage protocol. No React in the page tree, no client islands, no hydration cost outside the editor iframe.

    Astro projects install @tinacms/astro instead and the bundled integration's middleware auto-injects everything on edit-mode responses. Direct @tinacms/bridge consumption is for non-Astro frontends:

    <head>
      <div
        data-tina-form='{"id":"…","query":"…","variables":{},"data":{}}'
        hidden
      ></div>
      <script type="module">
        import { init } from "/_tina/bridge.js";
        init();
      </script>
    </head>

    The bridge submodules:

    • init() — top-level entry. Detects iframe embedding, registers all [data-tina-form] payloads with the admin (with retry, since the bridge boots faster than the admin's listener), wires data updates and click-to-focus.
    • refreshForms() — re-scans the DOM after soft navigations (Astro view transitions, Turbo, htmx). Posts close for forms that left and open for forms that appeared.
    • tinaField() — framework-free field-id helper, identical API to tinacms/dist/react's export. Use on any element to make it click-to-edit.
    • @tinacms/bridge/preview — server-side helper for non-React frameworks. readOverlay(request, queryId) returns the unsaved form data the admin is editing, so per-route refresh endpoints can re-render with overlay data on every keystroke.

    How edits flow without re-rendering React

    The bridge takes a soft-refresh approach instead of in-place reconciliation. Mark editable regions with data-tina-island="<endpoint-url>"; on every form change the bridge POSTs the current overlay to that endpoint, the server renders the matching component to an HTML fragment, and the bridge swaps it into the live DOM. Per-island scoped — editing the hero refetches only the hero, not the whole page. The transport is JSON-over-POST so UTF-8 (em-dashes, smart quotes, emoji) and large rich-text bodies round-trip without size or charset limits.

    The protocol stays stateless — admin pushes already-resolved data to the bridge, bridge forwards it to the island endpoint, endpoint reads it via readOverlay() instead of hitting the canonical content store. Works identically against self-hosted Tina, TinaCloud, or any GraphQL endpoint. No backend changes shipped.

    tinacms: framework-free tinaField subpath

    tinaField() was already pure — just reads _content_source metadata. It's now exported from tinacms/tina-field as a standalone module so non-React frontends can import it without pulling React (and Plate, and dnd-kit, and ~50 other React deps) into their bundle. The existing tinacms/dist/react re-export keeps the public API stable.

    Reference example: examples/astro/visual-editing

    A new Astro 5 example that mirrors examples/astro/kitchen-sink field-for-field — same six collections (Tag, Author, Global, Post, Blog, Page), same shared content via localContentPath, same eight routes — but rendered with pure Astro components instead of React islands. Includes:

... (truncated)

Commits
  • 8cbed24 Version Packages (#6791)
  • 723632b Fix/nested rich text getfieldgroup crash (#6694)
  • 9e7eba9 feat(tinacms): pass branch on all TinaMediaStore cloud calls (#6765)
  • 95758a0 feat(@​tinacms/astro): vanilla-JS visual editing bridge for non-React frontend...
  • e537950 Version Packages (#6748)
  • 3da4588 fix: show user-facing alerts for folder and file actions (#6770)
  • 3e4dcc7 Fix HTML code block language tag from 'htmlbars' to 'html' (#6652)
  • b37187d 🐛 Bug - Popover panel hidden under other content (#6761)
  • 84ec7ad TinaCMS Colour Picker Swatch - change html element and type (#6746)
  • 28b869a Show content file path on breadcrumb hover (#6752)
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels May 8, 2026
Bumps [tinacms](https://github.com/tinacms/tinacms/tree/HEAD/packages/tinacms) from 3.6.3 to 3.8.0.
- [Release notes](https://github.com/tinacms/tinacms/releases)
- [Changelog](https://github.com/tinacms/tinacms/blob/main/packages/tinacms/CHANGELOG.md)
- [Commits](https://github.com/tinacms/tinacms/commits/tinacms@3.8.0/packages/tinacms)

---
updated-dependencies:
- dependency-name: tinacms
  dependency-version: 3.7.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title Bump tinacms from 3.6.3 to 3.7.6 Bump tinacms from 3.6.3 to 3.8.0 May 12, 2026
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/tinacms-3.7.6 branch from ead7ba7 to 5744dd8 Compare May 12, 2026 15:08
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 12, 2026

Superseded by #169.

@dependabot dependabot Bot closed this May 12, 2026
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/tinacms-3.7.6 branch May 12, 2026 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants