Production diagnostics
Octane error decoder
Production builds replace longer framework error messages with compact codes. Choose a code to read its full message, or open the link included in the production error to fill in its values automatically.
- #1Maximum update depth exceeded. Octane limits the number of nested updates to prevent infinite loops.
- #2Children.only expected to receive a single element child.
- #3Objects are not valid as an Octane child (found: %s). If you meant to render a collection of children, use an array instead.
- #4cloneElement: the first argument must be an element (from createElement / JSX).
- #5Can only set one of `children` or `props.dangerouslySetInnerHTML`.
- #6`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`
- #7`%s` is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.
- #8`<%s>` is a void element tag and must neither have children nor use `dangerouslySetInnerHTML`.
- #9Too many re-renders. Octane limits the number of renders to prevent an infinite loop.
- #10lazy: expected the load() promise to resolve to a component function or a module with a component as its default export, got '%s'
- #11A function wrapped in useEffectEvent can't be called during rendering.
- #12%s(): argument is not a Context nor a thenable
- #13Multiple errors were thrown during the render flush.
- #14act(): scheduler did not stabilize after %s iterations — likely an infinite render loop
- #15%s was called without a hook slot. The octane compiler injects per-call-site keys; ensure your project loads this runtime through the Vite plugin (octane/compiler/vite). To call hooks by hand, pass a stable symbol, e.g. useState(0, Symbol.for('my-stable-id')).
- #16Hydrate: `when` must synchronously return a hydration strategy with a valid type.
- #17Hydrate: the compiler-generated child loader did not resolve to a component.
- #18%s(): a React context can only be read inside a React-hosted Octane island (see octane/react); this component is not rendered under one.
- #19A renderer-owned DOM region is missing its universal owner bridge.
- #20bindRendererRegionOwner() must run while a DOM component is rendering.
- #21bindRendererRegionOwner() must be the first call in a renderer-owned DOM root component.
- #22A renderer-owned DOM region requires a live DOM root.
- #23Server-rendered use() rejected
- #24Element type is invalid: expected a string (for a built-in element) or a function (for a component), but got: %s.
- #25Octane: internal — a component descriptor reached the de-opt host reconciler (should have been routed through a Block via hostElementBody/componentSlot).
- #26`<%s>` is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.
- #27A hosted foreign-context request escaped its renderer-region owner; the owning bridge is gone or declined it.
- #28Target container is not a DOM element.
- #29Cannot update an unmounted root.
- #30Invalid tag: %s
- #31If you supply `defaultValue` on a <textarea>, do not pass children.
- #32octane SSR: a use(thenable) did not settle within %sms.
- #33Retiredoctane SSR: exceeded %s suspense passes — a use(thenable) never resolved.
- #34octane SSR: a root suspension no longer has resumable work.
- #35octane SSR: %s root streaming passes completed without producing a shell.
- #36octane SSR: a pending streamed boundary no longer has resumable work; its error escaped to an ancestor that was already flushed.
- #37Retiredoctane SSR: %s consecutive streaming passes completed no boundary — a use(thenable) never resolved.
- #38The stream destination closed.
- #39octane SSR: destination.write() returned false but the destination cannot emit drain.
- #40The stream destination is closed.
- #41octane SSR: pipe() may only be called once.
- #42The render was aborted.
- #43The stream consumer cancelled.
- #44The readable stream is closed.
- #45Server-rendered use() rejected (function)
- #46Expected %s listener to be a function, instead got a value of `%s` type.
- #47octane SSR: exceeded %s suspense passes — a use(thenable) never resolved. If promises are re-created on every render pass (e.g. created in an ancestor render and passed down through props), create them at their use() site or hoist them out of render.
- #48octane SSR: %s consecutive streaming passes completed no boundary — a use(thenable) never resolved. If promises are re-created on every render pass (e.g. created in an ancestor render and passed down through props), create them at their use() site or hoist them out of render.