Please login to access all of the features of the Community Site.

Limitations

Helix follows the web Helix subset that makes sense in MAUI, not the full HTMX spec. This page covers the pieces that are only partly there, and the behaviors most likely to surprise you, so you can plan around them instead of discovering them halfway through a build.

Partial support

FeatureThe subset you get
Hx.Paramsnone only. You cannot include or exclude by name.
Hx.Swap animationsfade, the four slide-* directions and scale. The height-based collapse and expand are deferred: they warn and swap instantly.
Hx.TriggerNamed events, load, appear, and every polling with a five second minimum, plus the once, changed, delay, and throttle modifiers. revealed and intersect wire nothing, and other modifiers are ignored.

Rough edges

These are not missing features, they are behaviors that will surprise you. Each is covered in detail on its own page.

  • Border cannot be an inner target. It is neither a ContentView nor a Layout. Target a layout inside it. See Swaps and Animations.
  • A request with no Hx.Target swaps into the element that made it. On a Button or another control that cannot hold content, a response body shows an error. Name a target. See Requests and Targeting.
  • A failed request that was going to append replaces the target's contents with the error, because errors are placed with an inner swap. Declare an Hx.Notification slot on anything that appends. See Indicators and Errors.
  • changed silently blocks every request on a control that has no value, such as a Label, a layout, or a bare MAUI Picker. It only works on inputs. See Triggers.
  • Unfocused wires on anything but only fires on focusable controls. See Triggers.
  • An unknown trigger event name silently becomes a tap. See Triggers.
  • appear is not revealed. appear fires when the page comes into view and is implemented; revealed is about the element scrolling into the viewport and is not. An element low on a long page fires its appear as soon as the page opens. See Triggers.
  • An error placed next to a trigger can land in the wrong Grid cell, overlapping the first cell rather than appearing below the trigger. Most likely on a Load More button using outer on this. An Hx.Notification slot avoids it. See Indicators and Errors.
  • Id lookups are case-sensitive while almost everything else is not. See Attribute Reference.
  • after does not give you infinite scroll on its own. See Swaps and Animations. For scroll paging in a list, items-append with an X-Helix-Next response header covers it. See Data Lists and Paging.

Common patterns

These patterns come up often when building a screen. Each one is covered on the page that owns it:

  • Load More without stranding the button: outer targeting this. See Swaps and Animations.
  • Scroll-paged lists: items-append with an X-Helix-Next header. See Data Lists and Paging.
  • Inline field validation: Hx.Target="this" on a layout that wraps the FieldContainer, not on the input or the container itself. See Forms and Values.
  • An error slot so a failed append does not wipe the list it was appending to. See Indicators and Errors.
  • Declaring the target once on a container and letting swapped-in fragments inherit it. See Inheritance.