Why this matters
The production reason.
A placeholder is not a label. It disappears when users type and is often skipped by assistive technology.
Labels improve accessibility, click targets, autofill, and test selectors.
Use visible labels when possible, and sr-only labels only when the visual design truly needs it.
<label htmlFor="email">Email address</label>
<input
id="email"
name="email"
type="email"
autoComplete="email"
/>