I upgraded my Vaadin project from 14 to 24 and now I get a white screen in the browser. Not sure how to troubleshoot. Browser console shows:
Failed to load resource: the server responded with a status of 404 ()
warning: generated-flow-imports-TLHnrIlU.js:3151 WARNING: Since Vaadin 23.3, "@vaadin/vaadin-overlay" is deprecated. Use "@vaadin/overlay" instead.
login:7 Uncaught (in promise) NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name "vaadin-text-field" has already been used with this registry
route related msg on IDE console:
INFO DevModeHandlerManagerImpl - Application running at http://localhost:8080/app/
DEBUG VaadinServletContextInitializer$ClassPathScanner - Identified candidate component class: URL [jar:file:/path/to/flow-server-24.9.5.jar!/com/vaadin/flow/router/InternalServerError.class]
DEBUG VaadinServletContextInitializer$ClassPathScanner - Identified candidate component class: URL [jar:file:/path/to/flow-server-24.9.5.jar!/com/vaadin/flow/router/RouteAccessDeniedError.class]
DEBUG VaadinServletContextInitializer$ClassPathScanner - Identified candidate component class: URL [jar:file:/path/to/flow-server-24.9.5.jar!/com/vaadin/flow/router/RouteNotFoundError.class]
DEBUG VaadinServletContextInitializer$ClassPathScanner - Identified candidate component class: URL [jar:file:/path/to/flow-server-24.9.5.jar!/com/vaadin/flow/router/HasErrorParameter.class]
DEBUG VaadinServletContextInitializer - Search for error navigation targets took 402 ms
DEBUG VaadinServletContextInitializer - Annotation validation took 208 ms
DEBUG VaadinServletContextInitializer - WebComponent init took 198 ms
DEBUG VaadinServletContextInitializer - Total time for Vaadin Servlet Context Init took 1253 ms
INFO DefaultDeploymentConfiguration - Vaadin is running in DEVELOPMENT mode - do not use for production deployments.
INFO SpringInstantiator - The number of beans implementing 'I18NProvider' is 0. Cannot use Spring beans for I18N, falling back to the default behavior
DEBUG PushRequestHandler - Using pre-initialized Atmosphere for servlet springServlet
DEBUG VaadinServletService - Using 'com.vaadin.flow.server.communication.IndexHtmlRequestHandler' in client mode bootstrapping
DEBUG EndpointRegistry - Registered endpoint 'signalshandler' with class 'class com.vaadin.hilla.signals.handler.SignalsHandler'
DEBUG RouteUnifyingServiceInitListener - deploymentConfiguration.isReactEnabled() = true
DEBUG RouteUnifyingServiceInitListener - DEVELOPMENT mode: Registered RouteUnifyingIndexHtmlRequestListener.
DEBUG MenuRegistry - No file-routes.json found under 'frontend/generated' directory. Skipping client route registration.
DEBUG EndpointController - Hilla version determined by Platform.getHillaVersion(): 24.9.5
DEBUG FrontendUtils - Auto-detected client-side router to use: react-router
DEBUG VaadinService - The application has the following routes:
DEBUG VaadinService - RouteData{parentLayout=null, url='', parameters={}, navigationTarget=class MainView, routeAliases=[], menuData=null}'
DEBUG VaadinService - RouteData{parentLayout=class MainView, url='admin', parameters={}, navigationTarget=class AdminView, routeAliases=[], menuData=null}'
DEBUG VaadinService - RouteData{parentLayout=class MainView, url='home', parameters={}, navigationTarget=class HomeView, routeAliases=[], menuData=null}'
DEBUG VaadinService - RouteData{parentLayout=null, url='login', parameters={}, navigationTarget=class LoginView, routeAliases=[], menuData=null}'
...
Dec 09, 2025 2:03:29 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Dec 09, 2025 2:03:29 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in [90181] milliseconds
Dec 09, 2025 2:03:29 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring DispatcherServlet 'dispatcherServlet'
INFO DispatcherServlet - Initializing Servlet 'dispatcherServlet'
INFO DispatcherServlet - Completed initialization in 3 ms
DEBUG DebugWindowConnection - Class org.hotswap.agent.plugin.vaadin.VaadinIntegration not found, excluding HOTSWAP_AGENT
DEBUG DebugWindowConnection - Class org.zeroturnaround.jrebel.vaadin.JRebelInitializer not found, excluding JREBEL
DEBUG DebugWindowConnection - Class org.springframework.boot.devtools.livereload.LiveReloadServer not found, excluding SPRING_BOOT_DEVTOOLS
DEBUG MenuRegistry - No file-routes.json found under 'frontend/generated' directory. Skipping client route registration.
DEBUG ServerAndClientViewsProvider - Exposing server-side views to the client based on user configuration
It’s a Flow-only project.
Could someone pinpoint where I should look? I cannot tell what the issue is from these logs.
I did find that enhanced-dialog 23.1.2 is not compatible with Vaadin 24 and I have change it to version 1.0.4
However, restarting the app still have the same issue.
Browser console is now showing 2 more error msg:
sw.js:1761 Uncaught NetworkError: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at 'http://localhost:8080/app/sw-runtime-resources-precache.js' failed to load.
at sw.js:1761:3
at sw.js:1868:3
(anonymous) @ sw.js:1761
(anonymous) @ sw.js:1868Understand this error
The script resource is behind a redirect, which is disallowed.
IDE console is showing a new error msg:
DEBUG PushHandler - Session expired before push disconnect event was received
com.vaadin.flow.server.SessionExpiredException: null
at com.vaadin.flow.server.VaadinService.doFindOrCreateVaadinSession(VaadinService.java:1200) ~[flow-server-24.9.5.jar:24.9.5]
at com.vaadin.flow.server.VaadinService.findOrCreateVaadinSession(VaadinService.java:1136) ~[flow-server-24.9.5.jar:24.9.5]
at com.vaadin.flow.server.VaadinService.findVaadinSession(VaadinService.java:975) ~[flow-server-24.9.5.jar:24.9.5]
at com.vaadin.flow.server.communication.PushHandler.handleConnectionLost(PushHandler.java:434) [flow-server-24.9.5.jar:24.9.5]
at com.vaadin.flow.server.communication.PushHandler.connectionLost(PushHandler.java:388) [flow-server-24.9.5.jar:24.9.5]
at com.vaadin.flow.server.communication.PushAtmosphereHandler$AtmosphereResourceListener.onDisconnect(PushAtmosphereHandler.java:113) [flow-server-24.9.5.jar:24.9.5]
at org.atmosphere.cpr.AtmosphereResourceImpl.onDisconnect(AtmosphereResourceImpl.java:752) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:644) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:625) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.cpr.AsynchronousProcessor.completeLifecycle(AsynchronousProcessor.java:486) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.cpr.AsynchronousProcessor.endRequest(AsynchronousProcessor.java:584) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.websocket.DefaultWebSocketProcessor.executeClose(DefaultWebSocketProcessor.java:689) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.websocket.DefaultWebSocketProcessor.close(DefaultWebSocketProcessor.java:635) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.atmosphere.container.JSR356Endpoint.onClose(JSR356Endpoint.java:318) [atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
at org.apache.tomcat.websocket.WsSession.fireEndpointOnClose(WsSession.java:718) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:626) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.WsFrameBase.processDataControl(WsFrameBase.java:349) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:281) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:129) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:85) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:184) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:164) [tomcat-websocket.jar:10.1.49]
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:152) [tomcat-websocket.jar:10.1.49]
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60) [tomcat-coyote.jar:10.1.49]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) [tomcat-coyote.jar:10.1.49]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) [tomcat-coyote.jar:10.1.49]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) [tomcat-coyote.jar:10.1.49]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:10.1.49]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) [tomcat-util.jar:10.1.49]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) [tomcat-util.jar:10.1.49]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) [tomcat-util.jar:10.1.49]
at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
Sharing my list of add-ons in case someone can spot what the issue is.
I am going to replace the multiselect-combo-box-flow with the vaddin 24 component one
I was able to find the add on that caused the problem.
I was just removing/replacing the add on one by one to see if it resolves the issue
Note: The add-on page Version Matrix does not give accurate information about capability
For example, for twincolngrid, It shows 2.7.1 is good with vaadin 24
it was Twincolgrid 2.7.1 causing the issue, using 3.1.0 solved the issue.