A fully open-source headless CMS that supports Markdown and Visual Editing
v4 collapses the data-layer split. The Zustand store + local-content plugin live inside @tinacms/tinacms, and the storage backends (level adapters) live in their own cross-repo packages (mongodb-level, sqlite-level, upstash-redis-level). The standalone @tinacms/datalayer wrapper no longer has a job in v4.
345d until removal
"name": "@tinacms/datalayer",
"type": "module",
"version": "2.0.23",
"deprecated": "Deprecated in v4 — folded into @tinacms/tinacms (store/local-content plugin) and the cross-repo Level adapters. See packages/v4/DEPRECATIONS.md.",@tinacms/tinacms (store + local-content plugin) plus the matching Level adapter package (mongodb-level / sqlite-level / upstash-redis-level).
Switch the catch-all backend route from TinaNodeBackend(@tinacms/datalayer) to the v4 server entry: import { mountHandler } from '@tinacms/tinacms/server'.
Install the Level adapter you were using directly (mongodb-level / sqlite-level / upstash-redis-level); no more @tinacms/datalayer re-export.
Replace any direct imports from @tinacms/datalayer with the equivalents re-exported from @tinacms/tinacms.