Skip to content

Adopt path-based server function addressing - #590

Draft
ryansolid wants to merge 1 commit into
nextfrom
server-function-path-addressing
Draft

Adopt path-based server function addressing#590
ryansolid wants to merge 1 commit into
nextfrom
server-function-path-addressing

Conversation

@ryansolid

Copy link
Copy Markdown
Member

Summary

Downstream adoption of solidjs/solid#3076, which moved the server function id into the path (<endpoint>/<id>) and retired both the X-Server-Function-Id header and the ?id= query fallback.

  • The generic form-action fallback (createServerFormAction) reads the id back through the runtime's new parseServerFunctionUrl instead of parsing ?id= by hand — the router no longer hard-codes the addressing scheme.
  • Bound ?args composition (action.with) is untouched: arguments stayed in the query per the #3072 discussion, and hashKey already emits the plain JSON the server-side convention decodes.
  • "Not an address" now means a malformed path (bare endpoint, extra segments) rather than a missing ?id; the native-submission fallbacks keep working through the runtime's parse answering null.
  • actionBase prefix interception is unchanged — /_server/<id> still lives under /_server.

Draft until

@solidjs/web publishes the addressing change (anything newer than 2.0.0-rc.3). The ^2.0.0-rc.3 range picks the new build up on publish; CI here will fail on the missing parseServerFunctionUrl export until then.

Test plan

  • Full suite (dom + server configs + type tests) passes locally against a file: link to the @solidjs/web build from solid next — 382 + 33 passing.
  • Re-run CI once the next @solidjs/web prerelease is published.

Made with Cursor

solidjs/solid#3076 moved the function id into the path
(`<endpoint>/<id>`), retiring both the X-Server-Function-Id header and
the `?id=` query fallback. The generic form-action fallback now reads
the id back through the runtime's parseServerFunctionUrl rather than
parsing the query by hand — the router no longer hard-codes the
addressing scheme. Bound `?args` composition is untouched: arguments
stayed in the query, and hashKey already emits the plain JSON the
server-side convention reads.

"Not an address" now means a malformed path (extra segments, bare
endpoint) rather than a missing `?id`; the native-submission fallbacks
keep working through the runtime's parse answering null.

Requires @solidjs/web newer than 2.0.0-rc.3.

Co-authored-by: Cursor <cursoragent@cursor.com>
@changeset-bot

changeset-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 31ea11b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@solidjs/router Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@ryansolid

Copy link
Copy Markdown
Member Author

Companion plugin PR: solidjs/solid-vite-plugin#332 (endpoint prefix-matching + path-based module preload in the dev middleware). Both are draft until the next @solidjs/web prerelease publishes the addressing change.

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