Skip to content

DF8004: Devframe Id Is Not a Mountable URL Segment

Message

Devframe id "{id}" is not a mountable URL segment — the hub mounts each frame at <base><id>/.

Cause

initHub derives each frame's mount base from its id (/__devframes/<id>/), and that segment is routed by h3 — where : and * are route-pattern markers and / ends the segment. An id carrying those characters either crashes route registration or matches the wrong paths.

Example

ts
import { initHub } from '@devframes/hub/initiate'

initHub({
  devframes: [defineDevframe({ id: 'devframes:plugin:my-tool', /* … */ })], // ✗ throws DF8004
})

// ✓ Good — route-safe id (letters, digits, `_`, `-`, `.`):
defineDevframe({ id: 'devframes_plugin_my-tool', /* … */ })

Fix

Set a route-safe id on the definition — letters, digits, _, -, and . only. Plugins that accept an id option can be re-instantiated with a safe one; RPC function ids (the colon-namespaced devframes:plugin:<slug>:<fn> convention) are unaffected — this constraint applies to the devframe id alone.

Source

Released under the MIT License.