Skip to content

feat(cms): extend CMS support to all frontend frameworks#102

Merged
Marve10s merged 2 commits intomainfrom
feat/cms-multi-framework
Mar 28, 2026
Merged

feat(cms): extend CMS support to all frontend frameworks#102
Marve10s merged 2 commits intomainfrom
feat/cms-multi-framework

Conversation

@Marve10s
Copy link
Copy Markdown
Owner

Summary

  • Extends Sanity, Strapi, and TinaCMS to work with all frontend frameworks: Next.js, Astro, Nuxt, SvelteKit, TanStack Router, React Router, React Vite, TanStack Start
  • Payload stays Next.js-only (v3 architecture requires @payloadcms/next)
  • Payload is now disabled in the web builder when non-Next.js frontend is selected
  • 81 new template files across 12 new variant directories (4 frameworks x 3 CMS)
  • Framework-aware dependency installation (@sanity/client for non-Next.js instead of next-sanity)
  • Framework-appropriate env var prefixes (VITE_*, PUBLIC_*, NUXT_PUBLIC_*)

Changes

Area Change
cms.ts handler Rewritten with variant detection (next/astro/nuxt/svelte/react)
cms-deps.ts Removed Next.js guards for Sanity/Strapi/TinaCMS
env-vars.ts Framework-aware getPublicEnvPrefix() + Strapi env vars added
add-deps.ts Added @sanity/client
compatibility.ts Added Payload-requires-Next.js disabled reason
Templates 81 new .hbs files in cms/{sanity,strapi,tinacms}/web/{react,astro,nuxt,svelte}/
Tests 13 new multi-framework CMS tests (43 total)

Test plan

  • bun test apps/cli/test/cms.test.ts — 43/43 pass
  • bun run test:release — all pass
  • bun run lint — all pass
  • Manual: --frontend astro --cms sanity generates Sanity templates
  • Manual: --frontend nuxt --cms strapi generates Strapi templates
  • Manual: --frontend svelte --cms tinacms generates TinaCMS templates
  • Manual: --frontend tanstack-router --cms payload skips Payload (Next.js only)

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
better-fullstack-web Ignored Ignored Preview Mar 27, 2026 7:50pm

Sanity, Strapi, and TinaCMS now work with all frontend frameworks:
Next.js, Astro, Nuxt, SvelteKit, TanStack Router, React Router,
React Vite, and TanStack Start. Payload stays Next.js-only (v3
architecture requires @payloadcms/next).

- Rewrite CMS handler with variant detection (analytics.ts pattern)
- Framework-aware dependency installation (@sanity/client for non-Next)
- Framework-appropriate env var prefixes (VITE_, PUBLIC_, NUXT_PUBLIC_)
- 81 new template files across 4 variants per CMS
- Payload disabled in web builder for non-Next.js frontends
- 43 CMS tests passing (13 new multi-framework tests)
@Marve10s Marve10s force-pushed the feat/cms-multi-framework branch from c321108 to e9c3c53 Compare March 27, 2026 19:49
@Marve10s Marve10s merged commit bc2e405 into main Mar 28, 2026
7 checks passed
Marve10s added a commit that referenced this pull request Mar 28, 2026
* feat: add dependency version channels (stable/latest/beta) (#104)

  Users can now choose between stable (default), latest, and beta
  dependency version channels. The selected channel resolves versions
  from the npm registry during scaffolding. Contributed by @Divith123.

  - New --version-channel CLI flag
  - Interactive prompt for channel selection
  - Bounded concurrent npm registry fetches (10 at a time)
  - Web builder integration with URL state persistence
  - Channel stored in bts.jsonc for reproducible commands

* feat(cms): extend CMS support to all frontend frameworks (#102)

  Sanity, Strapi, and TinaCMS now work with Astro, Nuxt, SvelteKit,
  TanStack Router, React Router, and React Vite. Payload stays
  Next.js-only. 81 new template files across 4 CMS variants.

* fix: parseVersion handles multi-dash prereleases correctly
* fix(web): versionChannel placed near git/install in builder ordering
* fix(web): versionChannel hidden for Rust/Python/Go ecosystems
* fix(ci): prevent web prebuild from racing with CLI tests
* feat(testing): add version-channel-latest smoke test preset
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant