---
title: "DF8110: Renderer Type Is Not URL-Safe"
description: "Dock type \"{type}\" is not a servable renderer-module name; the hub serves each module at <base>__renderers/<type>.mjs"
canonical_url: "https://devfra.me/errors/df8110"
---
# DF8110: Renderer Type Is Not URL-Safe

> Dock type "\{type}" is not a servable renderer-module name; the hub serves each module at \<base>\_\_renderers/\<type>.mjs

## Message

> Dock type "`{type}`" is not a servable renderer-module name; the hub serves each module at `<base>__renderers/<type>.mjs`

## Cause

An `initHub({ renderers })` registration carries a `type` that can't become a URL segment. The hub derives each module's serving path (and the manifest's `importFrom`) from the type, so `:` and `*` (route-pattern markers to the underlying router) or separators like `/` would break the route.

## Example

```ts
initHub({
  renderers: [
    { type: 'my:renderer', file: bundle }, // ✗ `:` is a route-param marker
  ],
})
```

## Fix

Use a route-safe dock type: letters, digits, `_`, `-`, and `.` only (e.g. `json-render`, `my-renderer`). The dock entries' `type` discriminator must match, so pick the safe name once, in the package that declares the type.

## Source

- [`packages/hub/src/node/initiate.ts`](https://github.com/devframes/devframe/blob/main/packages/hub/src/node/initiate.ts): `resolveRendererRegistrations()` rejects a `type` failing the `[\w.-]+` segment check.


## Sitemap

See the full [sitemap](https://devfra.me/sitemap.md) for all pages.
