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
- Upgrade (or downgrade) bevy and parley to compatible versions where the variant is handled or never produced
- Avoid generating CustomOutOfFlow inline boxes in the text layout inputs
- 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)
- 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
- Keep bevy and parley versions matched to a known-compatible pairing
- Reject or remap CustomOutOfFlow inline boxes before feeding parley output into bevy_text
- Run text rendering in tests when upgrading parley to catch new variants early
- Prefer mapping unknown variants to a safe default instead of panicking if you patch bevy_text
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
- Cannot call `ReflectComponent::reflect_mut` on component {na
- Cannot call `ReflectComponent::reflect_unchecked_mut` on com
- component should represent a type.
- `{type_path}` should be registered in type registry via `App
- `{type_path}` should have #[reflect(Component)] or #[reflect
AI-assisted analysis of bevyengine/bevy@8d743eb7dc (2026-09-13).
Data as JSON: /api/errors/f40a1e755774d1b7.
Report an issue: GitHub.