23.2 blank screen in dev mode (solved)

After updating to Vaadin 23.2 (currently 23.2.2) from 23.1.x, running in development mode results in blank screens on the front end. There’s nothing interesting logged beyond the “Starting frontend compilation” and “Frontend compiled successfully”. Chrome developer tools shows only the bootstrap html (attached snapshot). Client doesn’t seem to matter; I’ve tried current chrome, firefox, and safari. Production mode does not exhibit this problem!

Recommendations how to proceed would be most welcome.

Further data points: the java VM is idle - no threads seem to be doing anything interesting. The node process running vite doesn’t seem to be doing anything either (node is from ~/.nvm and is version 16.14.2) There’s also an idle “node_modules/esbuild-darwin-64/bin/esbuild --service=0.15.9 --ping” that I presume is normal.

Do you have a JavaScript error? Did you try to switch back to webpack?

Or you can also check the network information in the browser to see if there is an access denied

hm… no real javascript issues, but I see multiple (!) 404s errors trying to get the login component. I see that other non-vaadin MVC components work.

Just an idea: what spring boot version are you using?

I also had some spring security related issues after updating to 23.2 that were due to the project using an old spring boot version

Ah hah: When I turned up log levels to debug, I see that my spring security configuration now needs to authorize access to “/vaadinServlet/**” in additional to previous paths. I think that solves this issue.

23.2 blank screen in dev mode (solved)

That’s weird, that’s the opposite of what should have happened :face_with_raised_eyebrow:

What do you mean?

:person_shrugging:

Uh, nothing should be using /vaadinServlet/ directly anymore in 23.2

If this is the issue you should see some request to that url in the Chrome inspector?

Looking at the screenshot from the original question, it looks like the vaadin-dev-tools has /vaadinServlet/ as push URL configured somehow

Hmm. Where should it go now? I’m not sure what the history is, but it looks like we explicitly map this to avoid problems with a non-root application endpoint.

It should go to the servlet path by default

okay, but if I set it to the servlet path root, then my non-vaadin spring MVC endpoints get taken over. Is there a best practice for managing this or should I just map the push service like I was doing before?

Also, I’m not entirely sure I understand why the pushURL mapping only seems to matter for dev mode.