Skip to content

ppr on a NAMELESS route is silently ignored — no shell lane, no header, no warning #714

Closed

Description

@ivogt

Repro (found in a real app, 2026-07-06)

path("/test/:id", handler, { ppr: { ttl: 300, swr: 86400 } })   // no name

Document GETs return no x-rango-shell header at all — the shell lane never engages: no store read, no capture, no MISS/HIT, no log. Adding { name: "testDetail", ppr: ... } makes the identical route engage immediately (MISS + capture scheduled).

Why it was never caught

Every ppr route in both fixture apps AND the discovering app's working routes happens to carry name. The nameless+ppr combination has zero coverage.

Mechanism (to verify during fix)

resolvePprConfig(reqCtx._classifiedRoute?.manifestEntry) returns null when the classified entry doesn't carry the ppr option — for nameless routes the manifest entry apparently loses (or never receives) route options. Null is indistinguishable from "route never declared ppr" by design ("no store read, no capture, no logs"), so the misconfiguration is silent.

Fix bar

Either nameless ppr WORKS (preferred — name is orthogonal to caching), or route registration fails loudly at startup ("ppr requires name"). Silent ignore is the only unacceptable outcome. E2e coverage: a nameless ppr route in both apps, dev + production, asserting MISS→HIT.

Activity

  1. added a commit that references this issue on Jul 7, 2026
    4873773
  2. added a commit that references this issue on Jul 7, 2026
    48e48c5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions