Uma das melhores formas de armazenar o JWT é via cookies.
Embora o localstorage pareça ser ótimo, ele não tem um recurso muito importante no gerenciamento de cookies: a validade do cookie.
Dizem também as más linguas de que o localstorage é menos exposto do que os cookies, o que torna ele menos seguro, mas não sei dizer até onde isso é verdade.
Outra dica valiosa de segurança, nunca guarde dados sigilozos do usuário nos cookies, apenas o JWT e retorne as informações via um endpoint rest.
Para a parte de "login automático", é legal deixar o cookie com validade de 30 dias, renovando esses 30 dias toda vez que ele acessa o site.