├── .gitignore ├── README.md ├── db.json ├── eslint.config.js ├── index.html ├── package.json ├── postcss.config.js ├── public └── vite.svg ├── src ├── App.tsx ├── assets │ └── react.svg ├── final │ ├── 01-use │ │ ├── 01-traditional-approach.tsx │ │ └── 02-use-approach.tsx │ ├── 02-actions │ │ ├── 01-traditional-approach.tsx │ │ ├── 02-action.tsx │ │ ├── 03-hook.tsx │ │ └── 04-complex.tsx │ ├── 03-useFormStatus │ │ ├── 01-starter.tsx │ │ └── 02-final.tsx │ ├── 04-useOptimistic │ │ ├── 01-starter.tsx │ │ └── 02-final.tsx │ └── 05-render-issue │ │ └── index.tsx ├── index.css ├── main.tsx ├── tutorial │ ├── 01-use │ │ ├── 01-traditional-approach.tsx │ │ └── 02-use-approach.tsx │ ├── 02-actions │ │ ├── 01-traditional-approach.tsx │ │ ├── 02-action.tsx │ │ ├── 03-hook.tsx │ │ └── 04-complex.tsx │ ├── 03-useFormStatus │ │ ├── 01-starter.tsx │ │ └── 02-final.tsx │ ├── 04-useOptimistic │ │ ├── 01-starter.tsx │ │ └── 02-final.tsx │ └── 05-render-issue │ │ └── index.tsx ├── utils.ts └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/README.md -------------------------------------------------------------------------------- /db.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/db.json -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/eslint.config.js -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/postcss.config.js -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/public/vite.svg -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/assets/react.svg -------------------------------------------------------------------------------- /src/final/01-use/01-traditional-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/01-use/01-traditional-approach.tsx -------------------------------------------------------------------------------- /src/final/01-use/02-use-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/01-use/02-use-approach.tsx -------------------------------------------------------------------------------- /src/final/02-actions/01-traditional-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/02-actions/01-traditional-approach.tsx -------------------------------------------------------------------------------- /src/final/02-actions/02-action.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/02-actions/02-action.tsx -------------------------------------------------------------------------------- /src/final/02-actions/03-hook.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/02-actions/03-hook.tsx -------------------------------------------------------------------------------- /src/final/02-actions/04-complex.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/02-actions/04-complex.tsx -------------------------------------------------------------------------------- /src/final/03-useFormStatus/01-starter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/03-useFormStatus/01-starter.tsx -------------------------------------------------------------------------------- /src/final/03-useFormStatus/02-final.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/03-useFormStatus/02-final.tsx -------------------------------------------------------------------------------- /src/final/04-useOptimistic/01-starter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/04-useOptimistic/01-starter.tsx -------------------------------------------------------------------------------- /src/final/04-useOptimistic/02-final.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/04-useOptimistic/02-final.tsx -------------------------------------------------------------------------------- /src/final/05-render-issue/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/final/05-render-issue/index.tsx -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/index.css -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/main.tsx -------------------------------------------------------------------------------- /src/tutorial/01-use/01-traditional-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/01-use/01-traditional-approach.tsx -------------------------------------------------------------------------------- /src/tutorial/01-use/02-use-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/01-use/02-use-approach.tsx -------------------------------------------------------------------------------- /src/tutorial/02-actions/01-traditional-approach.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/02-actions/01-traditional-approach.tsx -------------------------------------------------------------------------------- /src/tutorial/02-actions/02-action.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/02-actions/02-action.tsx -------------------------------------------------------------------------------- /src/tutorial/02-actions/03-hook.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/02-actions/03-hook.tsx -------------------------------------------------------------------------------- /src/tutorial/02-actions/04-complex.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/02-actions/04-complex.tsx -------------------------------------------------------------------------------- /src/tutorial/03-useFormStatus/01-starter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/03-useFormStatus/01-starter.tsx -------------------------------------------------------------------------------- /src/tutorial/03-useFormStatus/02-final.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/03-useFormStatus/02-final.tsx -------------------------------------------------------------------------------- /src/tutorial/04-useOptimistic/01-starter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/04-useOptimistic/01-starter.tsx -------------------------------------------------------------------------------- /src/tutorial/04-useOptimistic/02-final.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/04-useOptimistic/02-final.tsx -------------------------------------------------------------------------------- /src/tutorial/05-render-issue/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/src/tutorial/05-render-issue/index.tsx -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | export const API_URL = 'http://localhost:3001'; 2 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/tailwind.config.js -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/tsconfig.app.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/john-smilga/react-19-tutorial/HEAD/vite.config.ts --------------------------------------------------------------------------------