Part 2 of the series: "Extending bpmn-io Form-JS Beyond Its Limits" Every tutorial about custom Form-JS fields shows you the same thing: render a component, return some HTML, done. What they don't show you is what happens after. How does the editor know your field exists? How does the properties panel know what configuration options to show? How does validation know to run your rules when the form submits? How does the form lifecycle know to initialize your field properly? I found this out the hard way when I built a grid field β a spreadsheet-like component with Excel import, cell-level validation, and dynamic columns. The render part took a day. Connecting it to the rest of Form-JS took a week, because I was discovering a four-layer architecture that nobody had documented. This article documents all four layers so you don't spend that week. The Problem The official Form-JS documentation for custom fields stops at the renderer.β¦