Missing field validation on user account edit
Errors for the users/save-user action are recorded against the user object, not the session object. If the user is logged-out, the object is named user but if they are logged-in you must use currentUser.
Generally speaking you can retrieve errors from Yii objects in several ways, but for field-by-field errors, I prefer the simplicity of getFirstError() (You might also want to use getErrors() or getErrorSummary()). Here's what I'm using for each question:
{% set user = currentUser ?? user ?? null %}
...

&lt;li class=&quot;{{ user is defined and user.getFirstError('email') ? 'has-error' }}&quot;&gt;
    &lt;label for=&quot;email&quot;&gt;Email &lt;em&gt;&amp;bull;&lt;/em&gt;&lt;/label&gt;
    &lt;input required id=&quot;email&quot; type=&quot;email&quot; name=&quot;email&quot; value=&quot;{{ user is defined ? user.email }}&quot;&gt;
    {% if user is defined and user.getFirstError('email') %}
        {% include '_partials/fieldErrors.twig' with { errors: user.getErrors('email') } %}
    {% endif %}
&lt;/li&gt;

(You could of course use a macro instead of an include as many examples demonstrate).
fieldErrors.twig:

{% if errors %}
    &lt;ul&gt;
        {% for error in errors %}
            &lt;li&gt;{{ error }}&lt;/li&gt;
        {% endfor %}
    &lt;/ul&gt;
{% endif %}