Start with the markup itself: what the platform prints for every field, the classes available to style it, and how far you can override one input's markup before you are maintaining your own form. Client-side helpers builds on that markup: four behaviours production sites add (an international phone field, timezone capture, prefilling and campaign capture), each writing into fields the platform already stores.
Captcha comes last because it depends on both: where the element sits in the markup, and the script conflicts to avoid once helpers and a captcha share the page.