Skip to content

docs: blog post credits SSR seeding to the GET verb #1153

Description

@vivek7405

Problem

The published post blog/get-server-actions-caching.md lists SSR seeding as one of the
things a GET server action buys. Under the heading # What a GET buys (L37), the
paragraph at L47 reads:

It reads the SSR seed first. If the same action ran during server render, its result
was serialized into the page, so the component's first client call resolves from the
seed with no network at all.

Seeding is not a GET feature. packages/server/src/action-seed.js facades every
'use server' module and wraps each exported function regardless of method, and
packages/server/src/actions.js:318 says so directly ("Every verb reads the SSR seed
(#472) first ... a read with no method is a default POST"). A reader of the post
comes away thinking a read must be declared GET to avoid a hydration round-trip, which
is the opposite of the truth and would push someone toward method = 'GET' on an action
that should not be cacheable at all.

The same stale framing existed in root AGENTS.md and in the api scaffold template's
list-users.server.ts comment. Both were corrected in #1151 / PR #1152, along with the
new gallery card that teaches the config exports. The docs site
(website/app/docs/server-actions/page.ts:205) and the skill reference
(.agents/skills/webjs/references/data-and-actions.md:142) were already verb-agnostic
and correct. The blog is the last surface carrying the wrong version.

Design / approach

Move the seeding paragraph out of the GET enumeration. Two options, either is fine:

  1. Relocate it to its own short passage that states seeding applies to any action
    invoked during an SSR render, whatever its verb. This keeps the useful information
    in a post where it fits.
  2. Cut it from the post entirely. The post's subject is the verb declaration and HTTP
    caching, and seeding is a separate mechanism with its own coverage on the docs site.

Option 1 is the better read, since a person landing on this post from a search for
action caching benefits from knowing the seed exists. Keep the correction to the framing
only. Nothing else in the section is wrong.

Implementation notes (for the implementing agent)

  • Where to edit: blog/get-server-actions-caching.md, the paragraph at L47 under the
    # What a GET buys heading (L37). The front-matter description (L5) does NOT
    mention seeding, so it needs no change.
  • Invoke the webjs-blog-write skill before touching the prose. It carries the house
    voice and the hard prose rules for this surface (no em-dashes, no internal PR or issue
    numbers in the published text, no process tells), which a straight technical edit will
    otherwise violate.
  • Verify the replacement claim against the source rather than restating it from memory:
    packages/server/src/action-seed.js (the facade that wraps every export) and
    packages/server/src/actions.js around L318 (the comment stating every verb reads the
    seed). One genuine constraint worth keeping if the paragraph stays: a STREAMED result
    is never seeded, and the seed is consume-once and fail-open.
  • The website renders the post from this markdown, so no separate page needs editing.
    Confirm the post still renders by booting website and hitting the post URL.
  • Doc surfaces: blog only. AGENTS.md, the api template, the docs site, and the skill
    reference are already correct as of PR feat: teach HTTP verbs and GET caching on the gallery server-actions card #1152, so this must not "fix" them again.

Acceptance criteria

  • The post no longer presents SSR seeding as something the GET verb buys
  • Any retained seeding claim states it applies to an action of any verb invoked
    during an SSR render
  • The prose passes the repo's banned-glyph rules and reads in the post's existing voice
  • The website still renders the post

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions