This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
exportdefaultdefineConfig([globalIgnores(['dist']),{files: ['**/*.{ts,tsx}'],extends: [// Other configs...// Remove tseslint.configs.recommended and replace with thistseslint.configs.recommendedTypeChecked,// Alternatively, use this for stricter rulestseslint.configs.strictTypeChecked,// Optionally, add this for stylistic rulestseslint.configs.stylisticTypeChecked,// Other configs...],languageOptions: {parserOptions: {project: ['./tsconfig.node.json','./tsconfig.app.json'],tsconfigRootDir: import.meta.dirname,},// other options...},},])You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.jsimportreactXfrom'eslint-plugin-react-x'importreactDomfrom'eslint-plugin-react-dom'exportdefaultdefineConfig([globalIgnores(['dist']),{files: ['**/*.{ts,tsx}'],extends: [// Other configs...// Enable lint rules for ReactreactX.configs['recommended-typescript'],// Enable lint rules for React DOMreactDom.configs.recommended,],languageOptions: {parserOptions: {project: ['./tsconfig.node.json','./tsconfig.app.json'],tsconfigRootDir: import.meta.dirname,},// other options...},},])The preorder form now sends the confirmation email directly in the browser via EmailJS.
- Copy
.env.exampleto.env. - Set
VITE_EMAILJS_SERVICE_ID,VITE_EMAILJS_TEMPLATE_ID, andVITE_EMAILJS_PUBLIC_KEY. - In EmailJS, make sure the template accepts
to_email,to_name,quantity, andsource(the app sendsvoiverse-preorder). - Add the site domains (including localhost) to EmailJS Account → Security → Allowed Origins or EmailJS will reject the request with an origin error.
- Run
npm run devto test locally; no serverless route is required for email. - The form calls
emailjs.send(...)and shows success when EmailJS returns status 200.