Sanitizing and validating email field

According to the documentation, is_email() is used to validate an email and either returns the email if it is valid or false if it isn’t. So are using it correctly.

The only thing I can see in your code is that if the email is not valid, you are settings the data to a boolean value of FALSE.

 $instance['email'] = is_email($new_instance['email']);
 //with a bad email address, this will be the same as writing
 $instance['email'] = false;

Depending on what you’re doing in the widget that may give you unexpected results.

I would instead do something like the following

$instance['email'] = ( is_email($new_instance['email']) ) ? $new_instance['email'] : '';

This is going to make sure that if the is_email() call returns false then you are setting $instance[’email’] to an empty string instead of a boolean value.

Hope this helps!