data-island attribute. State
changes re-render only the selectors you name.
Optimistic updates
Update the UI instantly, then reconcile with the server. The first callback runs immediately; if the second fails, the first is rolled back.Use
ApiUtility (api.js) rather than raw fetch — it handles CSRF tokens and
retries, and raw fetch is a feather check error.Drag and drop
Built in via thedraggable config. The full API is documented in the CLAUDE.md that
ships with every project. Pair it with
OrderingMixin on the model so positions persist.
Generating an island
feather check reports an
island no template mounts (orphan-island) and a template mounting an island that does
not exist (missing-island).