DioxusLabs/dioxus · error
op skip exceeds packed op capacity
Error message
op skip exceeds packed op capacity
What it means
TemplateOp packs an enter op's child-skip count into a u16 alongside opcode bits, capping it at MAX_CAP (16383). A template element with more skipped children than fits overflows the packed representation, so this guard fires at compile time when the RSX template is lowered.
Source
Thrown at packages/core-template/src/op.rs:18
/// One operation in a flat static template tape.
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
pub(crate) struct TemplateOp(u16);
impl TemplateOp {
const ENTER_MAX_CODE: u16 = 0x7fff;
const ATTR_CODE: u16 = 0x8000;
const ATTR_CUSTOM_NS_CODE: u16 = 0x8001;
const TEXT_CODE: u16 = 0x8002;
const STATIC_BASE: u16 = 0x8003;
pub(crate) const MAX_CAP: usize = 16_383;
/// Create a packed enter op.
pub(crate) const fn enter(skip: u16, namespace: bool) -> Self {
if skip as usize > Self::MAX_CAP {
panic!("op skip exceeds packed op capacity");
}
Self((skip << 1) | namespace as u16)
}
/// Create a packed static attribute op.
pub(crate) const fn attr(namespace: bool) -> Self {
if namespace {
Self(Self::ATTR_CUSTOM_NS_CODE)
} else {
Self(Self::ATTR_CODE)
}
}
/// Create a packed text marker op.
pub(crate) const fn text() -> Self {
Self(Self::TEXT_CODE)
}
View on GitHub (pinned to 24f6a829df)
Solutions
- Internal template packing limit hit. Split the oversized template into smaller components; if a normal template triggers this, report a bug to dioxus.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/core-template/src/op.rs:18 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23).
Data as JSON: /api/errors/32f6e3f6ad0b5f31.
Report an issue: GitHub.