Skip to content
Development
Skill

/sota-web-frameworks

State-of-the-art engineering rules (2026) for the JavaScript SSR meta-frameworks: React 19 + Next.js (App Router, React Server Components, Server Actions) and Vue 3 + Nuxt 4 (Nitro server routes, composables) — plus the cross-cutting concerns of server rendering: hydration

From plugin
sota-skills
2843 skills5 commands4 hooks2 MCP

Claude Code

$ npx -y skills add martinholovsky/SOTA-skills --skill sota-web-frameworks --agent claude-code

SKILL.md

sota-web-frameworks.SKILL.md
name: sota-web-frameworks
description: >-
  State-of-the-art engineering rules (2026) for the JavaScript SSR meta-frameworks:
  React 19 + Next.js (App Router, React Server Components, Server Actions) and Vue 3 +
  Nuxt 4 (Nitro server routes, composables) — plus the cross-cutting concerns of
  server rendering: hydration correctness, SSR state serialization, the server/client
  trust boundary, and framework-specific security and CVEs. Use when building or
  auditing any React/Next or Vue/Nuxt app — components, RSC/client boundaries, Server
  Actions or Nitro routes, data fetching and caching, hydration mismatches, SSR/SSG/ISR
  strategy, or framework CVE exposure. Complements sota-javascript-typescript,
  sota-frontend-design, sota-code-security, and sota-performance. Trigger keywords:
  React, Next.js, App Router, React
  Server Components, RSC, Server Actions, use client, use server, Vue, Nuxt, Nitro,
  Pinia, composable, script setup, SSR, hydration, hydration mismatch, use cache, PPR,
  ISR, proxy.ts, middleware, useFetch, useState, runtimeConfig, CSP nonce, devalue.

SOTA Web Frameworks (2026)

Purpose

This skill encodes the 2026 state of the art for the two dominant JavaScript SSR stacks — **React + Next.js** and **Vue + Nuxt** — and the server-rendering concerns they share. It is deliberately framework-specific: the traps that matter here (the RSC server/client boundary, Server Actions as public endpoints, hydration mismatches, SSR state leaking across requests, `runtimeConfig`/`NEXT_PUBLIC_` secret boundaries) do not exist at the plain-language level.

Two modes:

  • **BUILD** — writing or modifying components, routes, and data-fetching to this standard.
  • **AUDIT** — reviewing an existing app and reporting findings.

Read SKILL.md fully; load `rules/*.md` on demand per the index below. **Verify every version/CVE claim at use time** — this file's facts were primary-sourced 2026-07 but framework security moves weekly (see the 2025-12 React Server Components RCE).

Scope boundaries (what lives elsewhere)

This skill stacks *on top of* the general skills — load them together, don't duplicate:

  • **[`sota-javascript-typescript`](../sota-javascript-typescript/SKILL.md)** — strict `tsconfig`, type design, promises,

Node hardening, npm supply chain. The *language*; this skill is the *framework*.

  • **[`sota-frontend-design`](../sota-frontend-design/SKILL.md)** — visual design, layout, components-as-UX, WCAG 2.2

accessibility, motion. This skill covers component *engineering*, not *design*.

  • **[`sota-code-security`](../sota-code-security/SKILL.md)** — generic XSS/CSRF/SSRF/authn/authz/crypto theory. This

skill covers the *framework-specific* expression of those (RSC data exposure, Server Action authz, `v-html`, next/image SSRF).

  • **[`sota-performance`** rules/06](../sota-performance/rules/06-frontend-web.md) — Core Web Vitals, bundle budgets, image/font

loading. This skill covers render-strategy choice (SSR/SSG/ISR/PPR) and hydration.

  • **[`sota-api-design`](../sota-api-design/SKILL.md)** — REST/GraphQL contract design for the routes themselves.

BUILD mode

1. **Establish context first.** Read `package.json` for the exact React/Next or Vue/Nuxt majors and the render mode in use (App vs Pages Router; Nuxt SSR vs `ssr: false`). Match the project's baseline — no Server Actions on a Pages-Router app, no `defineModel` below Vue 3.4. Confirm the versions are supported and patched against the CVE tables in [`rules/03`](rules/03-nextjs.md)/[`rules/05`](rules/05-nuxt.md). ([`rules/01`](rules/01-baseline.md)) 2. **Default to the current idiom:** React function components + hooks (let the React Compiler memoize — don't hand-write `useMemo` everywhere); Vue Composition API with `<script setup>`. Server Components by default in Next App Router, `"use client"` only at the leaves that need interactivity. ([`rules/02`](rules/02-react.md), [`rules/04`](rules/04-vue.md)) 3. **The server/client boundary is a security boundary, not just a perf one.** Every prop crossing server→client is serialized into the HTML/RSC payload and is public. Authorization lives *next to the data* (a Data Access Layer / validated server route), never only in middleware or a layout. ([`rules/03`](rules/03-nextjs.md), [`rules/07`](rules/07-security.md)) 4. **Treat every Server Action and Nitro route as a public, unauthenticated HTTP endpoint** until it validates input and checks authz itself — even if it looks internal or is never imported. ([`rules/03`](rules/03-nextjs.md), [`rules/05`](rules/05-nuxt.md), [`rules/07`](rules/07-security.md)) 5. **Get hydration right by construction:** deterministic render (no `Date.now()`, `Math.random()`, or `window` in render), stable IDs via `useId`, SSR-safe shared state (`useState`/per-request instances, never module-level refs). ([`rules/06`](rules/06-ssr-hydration.md)) 6. **Serialize SSR state safely** (framework serializer or escaped JSON, never naked `JSON.stringify` into `<script>`) and **wire CSP** (nonce or hash) knowing it forces dynamic rendering in Next. ([`rules/06`](rules/06-ssr-hydration.md), [`rules/07`](rules/07-security.md)) 7. **Tests accompany code** ([`sota-testing`](../sota-testing/SKILL.md)): component tests plus at least one test that exercises the server/client boundary or a server route's authz.

AUDIT mode

**Coverage:** every `rules/` file's Audit checklist applies in AUDIT mode. Mark one *not applicable* only with its reason in the report — never skip a file because the thing it checks for is absent, since that absence may be the finding.

1. **Fingerprint + patch-check first.** Pin exact framework/loader versions from the lockfile and diff them against the CVE tables in [`rules/03`](rules/03-nextjs.md) and [`rules/05`](rules/05-nuxt.md). An unpatched React2Shell (CVE-2025-55182) or middleware bypass (CVE-2025-29927) is CRITICAL on its own, before any code is read. 2. **Tr

Read more
@martinholovsky
Ships withsota-skills

Make your AI coding assistant build and audit like your most senior engineer. Your assistant is brilliant — it just doesn't know your standards, and it forgets the ones it does know as the task grows long.

2843 skills2 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
28
Star history of martinholovsky/SOTA-skills on GitHub, a chart by star-history.com

Other skills on sota-skills.

sota-c-cpp

sota-c-cpp

State-of-the-art C and C++ engineering rules that Claude applies when writing or auditing C/C++. Covers modern idioms (RAII,…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about sota-web-frameworks.

Which coding agents can use sota-web-frameworks?
sota-web-frameworks installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.