UI Policies First
Show/hide, required/not-required, readonly — all declarative via UI Policy. No code. Deploys clean. Easy to audit. If your need is form-field visibility by condition, reach for UI Policy.
Client Scripts When You Must
Complex form logic, async GlideAjax calls, onChange transformations, cross-field computation — client scripts still own this territory. Just don’t use them for what UI Policy can do.
Reference Qualifiers Are Their Own Tool
Filtering a reference field’s options isn’t UI Policy or client script’s job. Use reference qualifiers — declarative, server-evaluated, no round trip.
Performance Matters
Every onChange client script is overhead. Ten onChange scripts on a heavy form and the user feels it. Audit form loads; consolidate overlapping scripts.
Testing Form Behavior
Form behavior is fragile. Add automated tests via ATF (Automated Test Framework) for critical forms. One test per UI policy and client script that matters.