The template (shadow-cljs variant) generates a src/user.clj with a custom handler. The only purpose of this handler seems to be to serve classpath resources from the public prefix. This can be done purely via shadow-cljs.edn :dev-http config and does not need a custom handler.
Just turn
{...
:dev-http {3000 {:root "public"
:handler user/app}}}
into
{...
:dev-http {3000 ["public" "classpath:public"]}}
as mentioned in the docs.