Vaadin 24 production build after migration from vaadin 14

Hi, i am trying to run a vaadin 24 production build after migration from vaadin 14 and i am succeding but nothing shows im browser.

My project structure:

  1. my-app (4 modules)
    a) my-core
    b) my security
    c) my-db
    d) my-installer
    I. frontend (5% of frontend - directory with a few custom js components that we are using through Vaadin Element API)
    II. src (95% of frontend in java, all the views etc)
    III. package.json (and we also had webpack-config.js with build instructions - only production build)

When i changed vaadin version from 14.8.7 to 24.3.3 I deleted package-lock.json, webpack.config.js and the target folder then i ran a build.
Build succeeded, the app started, but when i went to the browser exception appared saying “Unable to find index.html. It should be available on the classpath when running in production mode”.
Now i debugged some Vaadin classes and found out that it checks for index.html in META-INF/VAADIN/webapp/ but there is no such directory generated out of the vite build. I dont see any config vite.config file generated either.

There is my-installer/target/classes/META-INF/VAADIN/ but no webapp directory/file + its not exaclty the same path
There is a new directory generated in /my-installer/webpack.config.js/VAADIN/ and there is index.html inside it that points deeper into ./build/someBundle.js
There is also a ton of js files generated in my-installer/frontend/generated

I would love to tell Vite where to put the files and i also dont know where is the app main entry point now. Before it was the my-installer/target/frontend/generated-flow-imports.js - it was set in a webpack.config.js
I have tried adding vite.config.ts file next to package.json, but it seems like it is not using my config.

The config:

import { overrideVaadinConfig } from './vite.generated';

const customConfig: UserConfigFn = (env) => ({
  root: 'frontend',
  build: {
    outDir: '../../target/frontend',
    assetsDir: 'frontend',
    minify: 'terser',
    cssCodeSplit: true

export default overrideVaadinConfig(customConfig);

No idea what you wanna archive but it changed a lot in between 14 and 24. Get a project from and compare it with your setup - especially the maven plugin configuration. Additionally take a look at the possible configuration provided by the maven plugin - e.g. dev and prod bundles

i have found that pom.xml config was outdated. Thanks for pointing me in the right direction!