Conversation
This commit addresses several issues in the React/React Router to Next.js migration that were causing test failures and type errors: Actions fixes: - Fix restoreStateFromFile to use 'newState' property (was 'state') - Fix createTestData to be a simple action creator (was incorrectly a thunk) - Fix groupTransactions to use 'transactionIds' property (was 'rowIds') - Add missing action creators: deleteCategoryStart, deleteCategoryEnd, categorizeRowEnd, startFetchCurrencies, endFetchCurrencies, startFetchCurrencyRates, endFetchCurrencyRates, setCurrencies, setCurrencyRates Component fixes: - Fix Menu.tsx useEffect missing dependency array - Fix SearchField.tsx unused imports (useMemo, useCallback, debounce) - Fix Transactions.tsx unnecessary dispatch dependency warning Type fixes: - Update filterCategories to use Set<string> in EditState and component props - Update TransactionTable to properly handle Set-based filter categories Test infrastructure: - Update jest.setup.ts to mock next/navigation (App Router) instead of next/router (Pages Router) - Add mock for next/server (NextRequest, NextResponse) for API route tests - Add version: 1 to transaction tests to skip migration side effects CI/CD: - Update GitHub Actions to use Node.js 18.x, 20.x, 22.x (was 14.x, 16.x, 18.x) - Update actions/checkout and actions/setup-node to v4 Co-authored-by: Claude <noreply@anthropic.com>
- Fix pagination last page button label ("First Page" → "Last Page")
- Fix category dropdown hover jump-back by memoizing options/value in CategorySelect
- Fix non-serializable Redux error when filtering by category (convert Set to Array)
- Fix date picker error caused by argument mismatch with Dates component
(handler accepted 2 args but Dates passes 3), and serialize Moment objects
- Fix Exit Demo button by adding EXIT_TEST_MODE action that resets all reducers
- Update TransactionTable handleDatesChange type to match Dates component signature
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…stale validation - Fix XLSX import by using named exports instead of non-existent default export - Add drag-and-drop file upload zone with styled UI - Style "Add some" link as a button in NoData component - Add 2-digit year date format options (MM-DD-YY, DD-MM-YY) with closest-century expansion - Remove 2-digit year from auto-guess to require explicit format selection - Fix stale closure bug where validation ran with pre-dispatch state by moving to useEffect-based validation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ckbox state - Render Modal via createPortal to document.body to fix stacking issues - Add missing data-tooltip-id attrs on CategoryGuessConfirm icons - Fix SearchField infinite re-render loop using ref for callback - Remove isSelectedRowsUpdate hack from TransactionTable - Fix uncontrolled checkbox warning in Charts (nullish coalescing) - Replace Bootstrap class names with Tailwind in TransactionRow - Update local Claude settings and next-env.d.ts path Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…istor hook RestoreData and Menu now get persistor from context via usePersistor() instead of receiving it as a prop, fixing the "can't access property pause, persistor is undefined" error when restoring data from the home page. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Delete 8 test files that depend on removed packages (redux-modal, enzyme, react-router-dom), add setImmediate polyfill for yauzl in jest setup, and add missing dateFormat field to transaction import test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…act hooks Replace ~200 instances of `any` with proper TypeScript types across 38 files, fix unescaped JSX entities, replace Math.random() with useId(), address React hooks lint rules, and fix prefer-const/unused-vars warnings. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move currency rate fetching into useEffect to avoid dispatching during render - Add optional chaining for safer category/account lookups in CSV export - Clear errors state on import cancel - Fix new account auto-edit to only trigger for genuinely new accounts - Skip setting confirmed category for uncategorized transactions - Improve file drop zone, button layout, and link styling with Tailwind Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tory Resolve all TypeScript type mismatches that prevented the Next.js build from succeeding, add the @netlify/plugin-nextjs plugin for proper deployment, and restore the public/manifest.json removed during the CRA-to-Next.js migration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This pull request modernizes the application by migrating from Create React App with Netlify Lambda functions to a Next.js-based architecture. The changes update all dependencies to their latest versions (React 19, Node.js 24), convert JavaScript to TypeScript, replace Bootstrap with Tailwind CSS, and reorganize the project structure to use Next.js App Router with API routes.
Changes:
- Migrated from CRA to Next.js 15 with App Router, converting all pages to the new routing structure
- Updated all components from JavaScript to TypeScript with proper type definitions
- Replaced Netlify Lambda functions with Next.js API routes for currency data fetching
- Modernized build tooling: ESLint flat config, Jest with Next.js integration, Tailwind CSS with PostCSS
Reviewed changes
Copilot reviewed 165 out of 176 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Configuration files (next.config.ts, tsconfig.json, jest.config.ts, eslint.config.mjs) | Added Next.js, TypeScript, Jest, and ESLint configurations |
| API routes (src/app/api/currencies, src/app/api/currencyRates) | Converted Lambda functions to Next.js API routes |
| Type definitions (src/types/.ts, src/types/.d.ts) | Added comprehensive TypeScript type definitions |
| Components (src/components/**/*.tsx) | Converted all components from JS to TypeScript with functional components |
| Utilities (src/utils/eurofx/*.ts) | Added TypeScript types to utility functions |
| Reducers (src/reducers/*.ts) | Added TypeScript types to Redux reducers |
| Page routes (src/app/**/page.tsx) | Created Next.js App Router page structure |
| Removed files | Deleted CRA-specific files, Lambda functions, and obsolete configurations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request migrates the project from Create React App (CRA) with Netlify Lambda functions to a Next.js-based architecture, updates dependencies to the latest versions (including Node.js 24 and React 19), and modernizes the development, build, and testing workflows. It also adds new configuration files for Next.js, ESLint, Jest, and Tailwind CSS, and rewrites the test suites to use Next.js API routes. Several obsolete files and configurations are removed as part of this migration.
Migration to Next.js and Modernization
.next, adding a minimalnext.config.ts, and configuring Netlify to use the official Next.js plugin. Removed references to Netlify Lambda functions and deleted the oldpublic/index.html. [1] [2] [3] [4].nvmrcfile. Updated the GitHub Actions workflow to use Node.js 24.x, switched the default branch frommastertomain, and modernized the CI steps. [1] [2] [3] [4]Dependency and Tooling Upgrades
eslint-config-next), and styling (Tailwind CSS).eslint.config.mjsfor ESLint,jest.config.tsandjest.setup.tsfor Jest, andpostcss.config.mjsfor Tailwind CSS/PostCSS. [1] [2] [3] [4]Testing and API Route Refactoring
NextRequestand updated mocks for Next.js server components. Added a new test file for the currencies API and migrated/renamed the currency rates test. [1] [2] [3] [4] [5] [6]Cleanup and Configuration Removal
.codecov.yml.manifest.jsonto use the new start URL.