bevyengine/bevy · critical

parley::CustomOfFlow is not supported.

Error message

parley::CustomOfFlow is not supported.

What it means

The From<parley::InlineBoxKind> for InlineBoxKind conversion in bevy_text panics with unimplemented!() when parley reports an InlineBoxKind::CustomOutOfFlow. Bevy has no mapping for this parley variant, so any inline box carrying it is treated as an unimplemented code path.

Source

Thrown at crates/bevy_text/src/inline_box.rs:46

    OutOfFlow,
}

impl From<InlineBoxKind> for parley::InlineBoxKind {
    fn from(inline_box_kind: InlineBoxKind) -> parley::InlineBoxKind {
        match inline_box_kind {
            InlineBoxKind::InFlow => parley::InlineBoxKind::InFlow,
            InlineBoxKind::OutOfFlow => parley::InlineBoxKind::OutOfFlow,
        }
    }
}

impl From<parley::InlineBoxKind> for InlineBoxKind {
    fn from(inline_box_kind: parley::InlineBoxKind) -> InlineBoxKind {
        match inline_box_kind {
            parley::InlineBoxKind::InFlow => InlineBoxKind::InFlow,
            parley::InlineBoxKind::OutOfFlow => InlineBoxKind::OutOfFlow,
            parley::InlineBoxKind::CustomOutOfFlow => {
                unimplemented!("parley::CustomOfFlow is not supported.")
            }
        }
    }
}

View on GitHub (pinned to 8d743eb7dc)

Solutions

  1. Upgrade (or downgrade) bevy and parley to compatible versions where the variant is handled or never produced
  2. Avoid generating CustomOutOfFlow inline boxes in the text layout inputs
  3. If authoring bevy itself, extend the match arm in inline_box.rs to map the variant (e.g. treat it as OutOfFlow or add a dedicated variant)
  4. Track/report the upstream issue so the conversion gets a real implementation

Example fix

// before
parley::InlineBoxKind::CustomOutOfFlow => {
    unimplemented!("parley::CustomOfFlow is not supported.")
}
// after
parley::InlineBoxKind::CustomOutOfFlow => InlineBoxKind::OutOfFlow,
Defensive patterns

Strategy: try-catch

Validate before calling

// Bevy has no public pre-check; avoid parley InlineBoxKind::CustomOutOfFlow inputs.
fn is_supported(kind: parley::InlineBoxKind) -> bool {
    !matches!(kind, parley::InlineBoxKind::CustomOutOfFlow)
}

Try / catch

// This is a panic (unimplemented!), not a Result — catch with a hook or avoid the input:
std::panic::catch_unwind(|| convert_inline_box(kind))
    .unwrap_or(InlineBoxKind::OutOfFlow)

Prevention

When it happens

Trigger: Rendering text containing inline boxes where parley classifies the box as CustomOutOfFlow — i.e. an out-of-flow inline box with a custom placement kind passed through from a parley layout to bevy_text's conversion.

Common situations: Upgrading parley to a version that added the CustomOutOfFlow variant while bevy_text's match was not extended; feeding text content or layout configuration that produces custom out-of-flow inline boxes (e.g. advanced inline layout features).

Related errors


AI-assisted analysis of bevyengine/bevy@8d743eb7dc (2026-09-13). Data as JSON: /api/errors/f40a1e755774d1b7. Report an issue: GitHub.