Figler reports every unsupported, approximate, substituted, malformed, or missing rendering feature as a %Figler.Render.Warning{}:

%Figler.Render.Warning{
  code: :font_substituted,
  feature: :font,
  guid: "12:34",
  severity: :substitution,
  context: %{requested: %{family: "Inter"}, resolved: %{family: "Arial"}},
  value: %{code: :font_substituted, requested: %{family: "Inter"}, ...}
}

The stable fields are:

  • :code — machine-readable atom identifying the diagnostic.
  • :feature — affected rendering area, such as :fill, :stroke, :font, :text, :effect, :mask, or :shape.
  • :guid — effective scene-node GUID as a string.
  • :severity:approximation, :unsupported, :substitution, :invalid, or :missing.
  • :context — structured code-specific details.
  • :value — original backend-neutral diagnostic value retained for debugging and compatibility. Prefer :code and :context in application logic.

Non-strict rendering returns warnings in metadata. Strict rendering rejects the same list:

{:error, {:unsupported_render_features, warnings}} =
  Figler.Render.render(document, root: "12:34", strict: true)

Stable warning codes

Shapes, geometry, and masks

CodeMeaning
shape_unsupportedVisible node geometry is outside the supported subset.
geometry_missingA visible vector/boolean paint has no usable geometry.
invalid_geometryImported path data failed validation or decoding.
invalid_vector_networkEditable vector-network data failed validation.
polygon_point_count_invalidPolygon point count is outside the safe supported range.
star_point_count_invalidStar point count is outside the safe supported range.
star_inner_scale_invalidStar inner scale is not strictly between zero and one.
arc_angles_invalidPartial-ellipse angles are non-finite.
arc_inner_radius_invalidPartial-ellipse inner radius is outside [0, 1).
corner_radius_invalidA rectangular corner radius is negative or non-finite.
corner_smoothing_invalidCorner smoothing is outside [0, 1] or non-finite.
corner_smoothing_approximatedFigma smooth corners use circular corner arcs while preserving each radius.
container_clip_unsupportedA clipping flag appears on a node type without supported Figma container clipping semantics.
live_boolean_geometry_unresolvedA live boolean operation has no flattened/imported geometry and cannot be rendered faithfully.
outline_mask_approximatedOutline masks use the documented approximation.
mask_type_unsupportedThe requested mask type is unsupported.

Paints and images

CodeMeaning
unsupported_paintThe visible paint type is unsupported.
blend_mode_unsupportedThe requested paint or node blend mode is unsupported.
non_solid_stroke_unsupportedA primitive shape requested a non-solid stroke.
image_filters_unsupportedImage color-adjust/filter semantics are unsupported.
missing_image_hashAn image paint has no asset reference.
missing_image_assetThe referenced archive/message image is unavailable.
invalid_image_geometryImage-paint destination geometry is malformed.
invalid_image_scaleImage scale or tile scale is invalid.
invalid_image_rotationImage rotation is malformed.
missing_geometryA gradient lacks the geometry required by its type.
missing_gradient_stopsA gradient has no usable stops.
missing_gradient_transformA transformed gradient lacks its transform.
singular_paint_transformA paint transform cannot be inverted.
diamond_shader_compile_failedThe diamond-gradient SkSL shader failed to compile.
paint_invalidA paint failed with an otherwise unclassified malformed value.

Strokes

CodeMeaning
stroke_align_approximatedRequested alignment is rendered as centered.
stroke_cap_unsupportedDecorative or unknown cap semantics are unsupported.
stroke_cap_size_unsupportedExplicit cap sizing is unsupported.
dash_pattern_invalidDash values are invalid.
stroke_miter_invalidThe miter limit is invalid.

Effects

CodeMeaning
effect_unsupportedThe effect type is unsupported.
effect_shape_unsupportedThe effect requires a silhouette unavailable for this shape.
effect_blend_mode_unsupportedEffect-local blend mode is unsupported.
effect_radius_invalidBlur/shadow radius is invalid.
drop_shadow_cutout_unsupportedHiding shadow beneath translucent content is unsupported.

Text and fonts

CodeMeaning
font_substitutedA deterministic fallback replaced the requested font.
font_unavailableThe requested font cannot be resolved.
font_family_missingThe source contains no usable requested family.
font_inspection_failedTypeface inspection failed.
fallback_font_load_failedA caller-provided fallback could not be loaded.
glyphs_missingThe resolved typeface lacks required characters.
text_style_length_mismatchUTF-16 style metadata length differs from text length.
text_style_splits_surrogateA style boundary splits a Unicode scalar.
text_style_override_missingA style ID has no matching override.
text_case_unsupportedRequested case conversion is unsupported.
text_run_paint_unsupportedA rich-text run uses a non-solid fill.
text_decoration_paint_unsupportedDecoration paint is unsupported.
text_decoration_thickness_unsupportedExplicit decoration thickness is unsupported.
text_underline_offset_unsupportedExplicit underline offset is unsupported.

New codes may be added during the beta series. Existing code meanings and field shapes change only with a changelog notice under the beta compatibility policy.