Skip to content

Conversation

matt-fidd
Copy link
Member

@matt-fidd matt-fidd commented Aug 6, 2025

Merge after #5497

Nothing major here, just incremental improvements.

@actual-github-bot actual-github-bot bot changed the title ♻️ bump component-library dependencies [WIP] ♻️ bump component-library dependencies Aug 6, 2025
Copy link

netlify bot commented Aug 6, 2025

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit d80128d
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget/deploys/68ade65078b60e0008f7c6fd
😎 Deploy Preview https://deploy-preview-5498.demo.actualbudget.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

github-actions bot commented Aug 6, 2025

Bundle Stats — desktop-client

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
23 10.75 MB → 10.86 MB (+109.79 kB) +1.00%
Changeset
File Δ Size
node_modules/@react-aria/dnd/dist/DropTargetKeyboardNavigation.mjs 🆕 +9.84 kB 0 B → 9.84 kB
node_modules/@react-aria/utils/dist/useLoadMoreSentinel.mjs 🆕 +2.55 kB 0 B → 2.55 kB
node_modules/@react-aria/utils/dist/isElementVisible.mjs 🆕 +2.27 kB 0 B → 2.27 kB
node_modules/react-aria-components/dist/Group.mjs 🆕 +720 B 0 B → 720 B
node_modules/@react-aria/utils/dist/inertValue.mjs 🆕 +269 B 0 B → 269 B
node_modules/react-aria-components/dist/Collection.mjs 📈 +1.22 kB (+78.32%) 1.55 kB → 2.77 kB
node_modules/@react-aria/utils/dist/filterDOMProps.mjs 📈 +1.11 kB (+66.75%) 1.66 kB → 2.77 kB
node_modules/@react-aria/utils/dist/useObjectRef.mjs 📈 +647 B (+56.90%) 1.11 kB → 1.74 kB
node_modules/@react-aria/utils/dist/mergeRefs.mjs 📈 +497 B (+54.20%) 917 B → 1.38 kB
node_modules/@react-aria/utils/dist/useEffectEvent.mjs 📈 +511 B (+50.59%) 1010 B → 1.49 kB
node_modules/react-aria-components/dist/DragAndDrop.mjs 📈 +1.7 kB (+43.71%) 3.89 kB → 5.59 kB
node_modules/@react-stately/color/dist/useColorChannelFieldState.mjs 📈 +631 B (+35.89%) 1.72 kB → 2.33 kB
node_modules/@react-aria/dnd/dist/DragManager.mjs 📈 +5.49 kB (+27.58%) 19.92 kB → 25.41 kB
node_modules/@react-stately/dnd/dist/useDraggableCollectionState.mjs 📈 +726 B (+23.11%) 3.07 kB → 3.78 kB
node_modules/@react-aria/form/dist/useFormValidation.mjs 📈 +933 B (+18.50%) 4.93 kB → 5.84 kB
node_modules/@react-aria/dnd/dist/DragPreview.mjs 📈 +357 B (+17.39%) 2 kB → 2.35 kB
node_modules/react-aria-components/dist/ColorSwatch.mjs 📈 +145 B (+16.51%) 878 B → 1023 B
node_modules/@react-aria/dnd/dist/useDropIndicator.mjs 📈 +595 B (+15.01%) 3.87 kB → 4.45 kB
node_modules/react-aria-components/dist/ListBox.mjs 📈 +2.11 kB (+15.01%) 14.04 kB → 16.14 kB
node_modules/@react-stately/dnd/dist/useDroppableCollectionState.mjs 📈 +822 B (+14.29%) 5.62 kB → 6.42 kB
node_modules/react-aria-components/dist/Dialog.mjs 📈 +473 B (+13.79%) 3.35 kB → 3.81 kB
node_modules/react-aria-components/dist/GridList.mjs 📈 +1.98 kB (+13.53%) 14.64 kB → 16.62 kB
node_modules/@react-aria/overlays/dist/ariaHideOutside.mjs 📈 +766 B (+11.78%) 6.35 kB → 7.1 kB
node_modules/@react-stately/utils/dist/number.mjs 📈 +279 B (+11.53%) 2.36 kB → 2.63 kB
node_modules/@react-aria/dnd/dist/useDrag.mjs 📈 +1.28 kB (+10.77%) 11.86 kB → 13.14 kB
node_modules/@react-aria/button/dist/useButton.mjs 📈 +280 B (+9.71%) 2.82 kB → 3.09 kB
node_modules/@react-aria/color/dist/useColorField.mjs 📈 +229 B (+6.66%) 3.36 kB → 3.58 kB
node_modules/@internationalized/number/dist/NumberParser.mjs 📈 +953 B (+6.16%) 15.12 kB → 16.05 kB
node_modules/react-aria-components/dist/ColorField.mjs 📈 +336 B (+5.77%) 5.69 kB → 6.02 kB
node_modules/react-aria-components/dist/Popover.mjs 📈 +423 B (+5.40%) 7.65 kB → 8.06 kB
node_modules/@react-aria/textfield/dist/useTextField.mjs 📈 +235 B (+4.57%) 5.03 kB → 5.25 kB
node_modules/@react-aria/dialog/dist/useDialog.mjs 📈 +140 B (+4.51%) 3.03 kB → 3.17 kB
node_modules/@react-stately/collections/dist/getItemCount.mjs 📈 +54 B (+4.31%) 1.22 kB → 1.28 kB
node_modules/@react-aria/collections/dist/Document.mjs 📈 +679 B (+4.11%) 16.14 kB → 16.81 kB
node_modules/@react-stately/color/dist/useColorFieldState.mjs 📈 +230 B (+3.88%) 5.79 kB → 6.02 kB
node_modules/@react-aria/dnd/dist/useDroppableItem.mjs 📈 +93 B (+3.37%) 2.69 kB → 2.78 kB
node_modules/@react-aria/interactions/dist/usePress.mjs 📈 +611 B (+3.31%) 18.04 kB → 18.63 kB
node_modules/@react-aria/overlays/dist/useModalOverlay.mjs 📈 +46 B (+3.28%) 1.37 kB → 1.41 kB
node_modules/@react-aria/selection/dist/useSelectableItem.mjs 📈 +412 B (+3.14%) 12.81 kB → 13.21 kB
node_modules/@react-aria/gridlist/dist/useGridList.mjs 📈 +100 B (+3.13%) 3.12 kB → 3.22 kB
node_modules/@react-aria/selection/dist/useSelectableCollection.mjs 📈 +720 B (+2.96%) 23.78 kB → 24.49 kB
node_modules/@react-aria/grid/dist/useGridSelectionAnnouncement.mjs 📈 +147 B (+2.88%) 4.98 kB → 5.13 kB
node_modules/react-aria-components/dist/Tooltip.mjs 📈 +147 B (+2.84%) 5.05 kB → 5.19 kB
node_modules/@react-aria/overlays/dist/usePreventScroll.mjs 📈 +305 B (+2.55%) 11.68 kB → 11.98 kB
node_modules/@react-aria/collections/dist/BaseCollection.mjs 📈 +271 B (+2.24%) 11.79 kB → 12.06 kB
node_modules/@react-stately/numberfield/dist/useNumberFieldState.mjs 📈 +181 B (+1.84%) 9.59 kB → 9.77 kB
locale/de.json 📈 +2.18 kB (+1.56%) 140.13 kB → 142.32 kB
node_modules/@react-aria/selection/dist/useTypeSelect.mjs 📈 +50 B (+1.55%) 3.15 kB → 3.2 kB
node_modules/@react-aria/interactions/dist/useHover.mjs 📈 +58 B (+1.54%) 3.69 kB → 3.75 kB
node_modules/@react-aria/numberfield/dist/useNumberField.mjs 📈 +163 B (+1.35%) 11.75 kB → 11.91 kB
node_modules/@react-aria/overlays/dist/usePopover.mjs 📈 +36 B (+1.24%) 2.83 kB → 2.87 kB
node_modules/react-aria-components/dist/useDragAndDrop.mjs 📈 +26 B (+0.89%) 2.87 kB → 2.89 kB
node_modules/@react-aria/gridlist/dist/useGridListItem.mjs 📈 +83 B (+0.58%) 13.93 kB → 14.01 kB
locale/fr.json 📈 +825 B (+0.54%) 149.26 kB → 150.07 kB
locale/uk.json 📈 +893 B (+0.47%) 185.02 kB → 185.9 kB
node_modules/@react-aria/spinbutton/dist/useSpinButton.mjs 📈 +29 B (+0.43%) 6.59 kB → 6.62 kB
node_modules/@react-aria/focus/dist/virtualFocus.mjs 📈 +4 B (+0.32%) 1.23 kB → 1.23 kB
node_modules/@react-aria/interactions/dist/useFocus.mjs 📈 +8 B (+0.32%) 2.46 kB → 2.47 kB
node_modules/@react-aria/utils/dist/useUpdateLayoutEffect.mjs 📈 +4 B (+0.30%) 1.31 kB → 1.31 kB
node_modules/@react-aria/utils/dist/keyboard.mjs 📈 +2 B (+0.26%) 773 B → 775 B
node_modules/@react-aria/utils/dist/useSyncRef.mjs 📈 +2 B (+0.21%) 954 B → 956 B
node_modules/@react-aria/interactions/dist/useFocusWithin.mjs 📈 +8 B (+0.18%) 4.35 kB → 4.35 kB
node_modules/@react-aria/focus/dist/useHasTabbableChild.mjs 📈 +4 B (+0.17%) 2.29 kB → 2.29 kB
node_modules/@react-aria/overlays/dist/Overlay.mjs 📈 +4 B (+0.17%) 2.33 kB → 2.34 kB
node_modules/@react-aria/utils/dist/openLink.mjs 📈 +6 B (+0.15%) 3.79 kB → 3.8 kB
node_modules/@react-aria/interactions/dist/textSelection.mjs 📈 +6 B (+0.15%) 3.97 kB → 3.97 kB
node_modules/react-aria-components/dist/ProgressBar.mjs 📈 +1 B (+0.14%) 724 B → 725 B
node_modules/@react-aria/interactions/dist/useFocusable.mjs 📈 +2 B (+0.11%) 1.71 kB → 1.71 kB
node_modules/@react-aria/utils/dist/animation.mjs 📈 +4 B (+0.11%) 3.55 kB → 3.55 kB
node_modules/@react-aria/utils/dist/useDescription.mjs 📈 +2 B (+0.10%) 1.86 kB → 1.86 kB
node_modules/@react-aria/utils/dist/useValueEffect.mjs 📈 +2 B (+0.10%) 1.87 kB → 1.87 kB
node_modules/@react-aria/interactions/dist/useLongPress.mjs 📈 +4 B (+0.10%) 3.77 kB → 3.77 kB
locale/es.json 📈 +59 B (+0.08%) 71.41 kB → 71.47 kB
node_modules/@react-aria/overlays/dist/useOverlayPosition.mjs 📈 +6 B (+0.05%) 11.4 kB → 11.41 kB
node_modules/@react-aria/tooltip/dist/useTooltipTrigger.mjs 📈 +2 B (+0.05%) 3.89 kB → 3.89 kB
node_modules/@react-aria/listbox/dist/useOption.mjs 📈 +2 B (+0.03%) 6.07 kB → 6.08 kB
node_modules/react-aria-components/dist/utils.mjs 📈 +2 B (+0.03%) 6.27 kB → 6.27 kB
node_modules/@react-aria/collections/dist/CollectionBuilder.mjs 📈 +2 B (+0.02%) 11.38 kB → 11.38 kB
src/components/mobile/transactions/TransactionListItem.tsx 📉 -20 B (-0.23%) 8.37 kB → 8.35 kB
node_modules/@react-aria/focus/dist/FocusScope.mjs 📉 -164 B (-0.45%) 35.87 kB → 35.71 kB
node_modules/@react-aria/interactions/dist/useInteractOutside.mjs 📉 -18 B (-0.92%) 1.91 kB → 1.89 kB
node_modules/@react-aria/dnd/dist/constants.mjs 📉 -73 B (-3.26%) 2.19 kB → 2.12 kB
node_modules/react-aria-components/dist/Button.mjs 📉 -221 B (-4.29%) 5.03 kB → 4.81 kB
node_modules/@react-aria/utils/dist/useFormReset.mjs 📉 -64 B (-4.60%) 1.36 kB → 1.3 kB
node_modules/@react-stately/collections/dist/getChildNodes.mjs 📉 -165 B (-5.39%) 2.99 kB → 2.83 kB
node_modules/@react-aria/dnd/dist/useDroppableCollection.mjs 📉 -5.5 kB (-15.19%) 36.23 kB → 30.72 kB
node_modules/react-aria-components/dist/Modal.mjs 📉 -1.43 kB (-21.27%) 6.74 kB → 5.3 kB
node_modules/@react-aria/interactions/dist/useFocusVisible.mjs 📉 -3.05 kB (-34.65%) 8.8 kB → 5.75 kB
node_modules/@react-aria/utils/dist/isVirtualEvent.mjs 📉 -867 B (-40.38%) 2.1 kB → 1.25 kB
node_modules/@react-aria/utils/dist/platform.mjs 📉 -1.2 kB (-46.49%) 2.58 kB → 1.38 kB
node_modules/@react-aria/utils/dist/useId.mjs 📉 -3.13 kB (-82.88%) 3.78 kB → 662 B
node_modules/@react-aria/interactions/dist/utils.mjs 📉 -6.59 kB (-99.21%) 6.64 kB → 54 B
View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

Asset File Size % Changed
static/js/index.js 7.83 MB → 7.92 MB (+92.28 kB) +1.15%
static/js/narrow.js 450.92 kB → 464.51 kB (+13.59 kB) +3.01%
static/js/de.js 140.13 kB → 142.32 kB (+2.18 kB) +1.56%
static/js/uk.js 185.02 kB → 185.9 kB (+893 B) +0.47%
static/js/fr.js 149.26 kB → 150.07 kB (+825 B) +0.54%
static/js/es.js 71.41 kB → 71.47 kB (+59 B) +0.08%

Smaller

No assets were smaller

Unchanged

Asset File Size % Changed
static/js/en-GB.js 6.84 kB 0%
static/js/en.js 128.77 kB 0%
static/js/it.js 142.04 kB 0%
static/js/nl.js 99.98 kB 0%
static/js/pl.js 86.07 kB 0%
static/js/pt-BR.js 141.84 kB 0%
static/js/sv.js 67.43 kB 0%
static/js/th.js 188.74 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 12.94 kB 0%
static/js/workbox-window.prod.es5.js 5.64 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 122.29 kB 0%
static/js/ReportRouter.js 830.05 kB 0%
static/js/TransactionList.js 10.92 kB 0%
static/js/wide.js 116.99 kB 0%
static/js/useAccountPreviewTransactions.js 8.52 kB 0%
static/js/useTransactionBatchActions.js 10.22 kB 0%

Copy link
Contributor

github-actions bot commented Aug 6, 2025

Bundle Stats — loot-core

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
1 4.28 MB 0%

Changeset

No files were changed

View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

No assets were bigger

Smaller

No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.qbdvDTe8.js 4.28 MB 0%

@matt-fidd matt-fidd added the dependencies Pull requests that update a dependency file label Aug 6, 2025
@matt-fidd matt-fidd changed the title [WIP] ♻️ bump component-library dependencies ♻️ bump component-library dependencies Aug 6, 2025
Copy link
Contributor

coderabbitai bot commented Aug 6, 2025

Walkthrough

This change updates dependency versions in the package.json files for both the component-library and desktop-client packages, specifically increasing the versions of react-aria-components, react, react-dom, and @types/react. Additionally, the TransactionListItem component in the desktop-client package receives a type definition update: the props type now omits onPress and onLongPress from inherited ListBoxItem props, explicitly requires a value property of type TransactionEntity, and directly destructures this value as transaction in the function signature.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested reviewers

  • matt-fidd

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 136ad05 and ebfd84b.

⛔ Files ignored due to path filters (2)
  • upcoming-release-notes/5498.md is excluded by !**/*.md
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (3)
  • packages/component-library/package.json (1 hunks)
  • packages/desktop-client/package.json (2 hunks)
  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (.cursor/rules/typescript.mdc)

**/*.{ts,tsx}: Use functional and declarative programming patterns; avoid classes.
Use descriptive variable names with auxiliary verbs (e.g., isLoaded, hasError).
Favor named exports for components and utilities.
Use TypeScript for all code; prefer interfaces over types.
Avoid enums; use objects or maps instead.
Avoid using any or unknown unless absolutely necessary. Look for type definitions in the codebase instead.
Avoid type assertions with as or !; prefer using satisfies.
Use the "function" keyword for pure functions.
Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements.

Files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
**/*.tsx

📄 CodeRabbit Inference Engine (.cursor/rules/typescript.mdc)

Use declarative JSX, keeping JSX minimal and readable.

Files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
🧠 Learnings (30)
📓 Common learnings
Learnt from: MatissJanis
PR: actualbudget/actual#4169
File: packages/component-library/src/icons/Loading.tsx:8-8
Timestamp: 2025-01-16T19:31:27.020Z
Learning: The Loading component in actual-app/components package is a direct copy from its previous location, and improvements to its accessibility and security are planned to be addressed in a separate PR.
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/desktop-client/src/components/accounts/Account.tsx:655-665
Timestamp: 2024-10-24T17:05:41.415Z
Learning: The Account component in 'packages/desktop-client/src/components/accounts/Account.tsx' is being rewritten in a separate PR.
Learnt from: jfdoming
PR: actualbudget/actual#4089
File: .github/actions/setup/action.yml:35-40
Timestamp: 2025-01-09T06:22:24.013Z
Learning: In the actualbudget/actual repository, translations are intentionally pulled from the latest commit of the translations repository during builds, with security being managed through multiple mandatory approving reviews on translations rather than commit pinning.
Learnt from: MikesGlitch
PR: actualbudget/actual#3761
File: packages/desktop-client/src/components/mobile/transactions/TransactionList.jsx:109-111
Timestamp: 2024-11-18T12:24:20.052Z
Learning: The `ListBox` component from `react-aria-components` supports the `dependencies` prop.
Learnt from: csenel
PR: actualbudget/actual#3810
File: packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx:150-161
Timestamp: 2024-11-09T20:18:28.468Z
Learning: In `packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx`, prefer to keep the implementation of checks consistent with similar patterns elsewhere in the codebase, even if alternative implementations are more concise.
Learnt from: MatissJanis
PR: actualbudget/actual#3570
File: packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx:83-90
Timestamp: 2024-10-05T10:58:13.598Z
Learning: In the `Transaction` component in `Transaction.tsx`, both `rawTransaction` and `transaction` should be included in the dependency arrays of `useMemo` hooks, even though `transaction` derives from `rawTransaction`.
Learnt from: matt-fidd
PR: actualbudget/actual#4154
File: packages/desktop-client/src/components/spreadsheet/CellValue.tsx:47-47
Timestamp: 2025-01-21T11:39:38.461Z
Learning: In the CellValue component of packages/desktop-client/src/components/spreadsheet/CellValue.tsx, the children prop needs an additional length check (children && children.length > 0) because the Trans component can pass an empty array at runtime despite the type definition expecting a function.
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/loot-core/src/client/data-hooks/transactions.ts:32-88
Timestamp: 2024-10-22T02:08:48.162Z
Learning: In the React `useTransactions` hook defined in `packages/loot-core/src/client/data-hooks/transactions.ts`, changes to `options` (e.g., `options.pageCount`) should be applied on the next query without adding them to the `useEffect` dependency array, to avoid unnecessary rerenders when options change.
Learnt from: tim-smart
PR: actualbudget/actual#3343
File: packages/desktop-client/src/components/common/Modal.tsx:86-86
Timestamp: 2024-10-13T23:24:09.179Z
Learning: In `packages/desktop-client/src/components/common/Modal.tsx`, setting `willChange: 'transform'` forces the browser to render the layer with GPU acceleration, improving performance.
Learnt from: minajevs
PR: actualbudget/actual#3274
File: packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx:0-0
Timestamp: 2024-10-14T09:03:37.410Z
Learning: In `packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx`, within the `onEditField` function, the `unserializedTransaction` variable is always expected to be found when accessing its properties. Adding a null check may not be necessary.
Learnt from: jfdoming
PR: actualbudget/actual#3402
File: packages/desktop-client/src/components/accounts/Account.tsx:8-8
Timestamp: 2024-09-27T14:15:46.637Z
Learning: In the `AllTransactions` component of `Account.tsx`, the `useLayoutEffect` hook is appropriately used to dispatch an action that closes splits for parent transactions when `prependTransactions` changes, ensuring this occurs synchronously before the component is painted.
Learnt from: UnderKoen
PR: actualbudget/actual#3775
File: packages/desktop-client/src/components/transactions/TransactionsTable.jsx:1082-1082
Timestamp: 2024-11-26T21:08:36.332Z
Learning: In the file `packages/desktop-client/src/components/table/Row.tsx`, the `Row` component correctly forwards the `onContextMenu` prop to the underlying DOM element.
📚 Learning: the `listbox` component from `react-aria-components` supports the `dependencies` prop....
Learnt from: MikesGlitch
PR: actualbudget/actual#3761
File: packages/desktop-client/src/components/mobile/transactions/TransactionList.jsx:109-111
Timestamp: 2024-11-18T12:24:20.052Z
Learning: The `ListBox` component from `react-aria-components` supports the `dependencies` prop.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: variables defined within react hooks like `usememo` or `useeffect` are not dependencies of other hoo...
Learnt from: matt-fidd
PR: actualbudget/actual#4166
File: packages/loot-core/src/client/data-hooks/transactions.ts:258-258
Timestamp: 2025-01-16T14:28:00.133Z
Learning: Variables defined within React hooks like `useMemo` or `useEffect` are not dependencies of other hooks. Only external variables and values from the component scope need to be included in the dependency arrays.

Applied to files:

  • packages/component-library/package.json
📚 Learning: in this codebase, eslint requires `dispatch` from `usedispatch` to be included in the dependency arr...
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/desktop-client/src/components/schedules/index.tsx:26-31
Timestamp: 2024-10-22T05:32:55.520Z
Learning: In this codebase, ESLint requires `dispatch` from `useDispatch` to be included in the dependency array of `useCallback` hooks, even though `dispatch` is stable.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: in the project's react components, when using `dispatch` from `usedispatch` in `usecallback` or `use...
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/desktop-client/src/components/schedules/index.tsx:33-35
Timestamp: 2024-10-22T05:32:57.033Z
Learning: In the project's React components, when using `dispatch` from `useDispatch` in `useCallback` or `useEffect` hooks, `dispatch` must be included in the dependency array due to the `react-hooks/exhaustive-deps` ESLint rule.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: typescript configuration and entry points for the @actual-app/components package will be added when ...
Learnt from: MatissJanis
PR: actualbudget/actual#4169
File: packages/component-library/package.json:16-23
Timestamp: 2025-01-16T19:28:56.310Z
Learning: TypeScript configuration and entry points for the actual-app/components package will be added when the package is ready to be published as a real NPM package, as it's not needed while the package is used only internally within the monorepo.

Applied to files:

  • packages/component-library/package.json
📚 Learning: applies to **/*.{ts,tsx} : favor named exports for components and utilities....
Learnt from: CR
PR: actualbudget/actual#0
File: .cursor/rules/typescript.mdc:0-0
Timestamp: 2025-07-18T18:01:31.195Z
Learning: Applies to **/*.{ts,tsx} : Favor named exports for components and utilities.

Applied to files:

  • packages/component-library/package.json
📚 Learning: in our react function components, we should include `dispatch` in the dependency array of `usecallba...
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/desktop-client/src/components/schedules/index.tsx:37-39
Timestamp: 2024-10-22T05:32:30.530Z
Learning: In our React function components, we should include `dispatch` in the dependency array of `useCallback` hooks to comply with ESLint rules, even though `dispatch` is a stable function.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: jest testing framework is used in multiple packages (api, crdt, loot-core) while desktop-client uses...
Learnt from: MatissJanis
PR: actualbudget/actual#4108
File: tsconfig.json:22-22
Timestamp: 2025-01-08T20:54:04.680Z
Learning: Jest testing framework is used in multiple packages (api, crdt, loot-core) while desktop-client uses Vitest. Both Jest and Vitest types should be kept in the root tsconfig.json.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: applies to **/*.tsx : use declarative jsx, keeping jsx minimal and readable....
Learnt from: CR
PR: actualbudget/actual#0
File: .cursor/rules/typescript.mdc:0-0
Timestamp: 2025-07-18T18:01:31.195Z
Learning: Applies to **/*.tsx : Use declarative JSX, keeping JSX minimal and readable.

Applied to files:

  • packages/component-library/package.json
📚 Learning: in react router v7, browserrouter and other dom-specific components are exported from the main 'reac...
Learnt from: MatissJanis
PR: actualbudget/actual#5172
File: packages/desktop-client/src/components/App.tsx:12-13
Timestamp: 2025-06-15T22:37:30.140Z
Learning: In React Router v7, BrowserRouter and other DOM-specific components are exported from the main 'react-router' package, not 'react-router-dom' as they were in v6. React Router v7 uses a unified package structure where most components are imported from 'react-router'.

Applied to files:

  • packages/component-library/package.json
  • packages/desktop-client/package.json
📚 Learning: in `packages/desktop-client/src/components/transactions/selectedtransactionsbutton.tsx`, prefer to k...
Learnt from: csenel
PR: actualbudget/actual#3810
File: packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx:150-161
Timestamp: 2024-11-09T20:18:28.468Z
Learning: In `packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx`, prefer to keep the implementation of checks consistent with similar patterns elsewhere in the codebase, even if alternative implementations are more concise.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in `packages/desktop-client/src/components/mobile/transactions/transactionedit.jsx`, within the `one...
Learnt from: minajevs
PR: actualbudget/actual#3274
File: packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx:0-0
Timestamp: 2024-10-14T09:03:37.410Z
Learning: In `packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx`, within the `onEditField` function, the `unserializedTransaction` variable is always expected to be found when accessing its properties. Adding a null check may not be necessary.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the `transaction` component in `transaction.tsx`, both `rawtransaction` and `transaction` should ...
Learnt from: MatissJanis
PR: actualbudget/actual#3570
File: packages/desktop-client/src/components/modals/ImportTransactionsModal/Transaction.tsx:83-90
Timestamp: 2024-10-05T10:58:13.598Z
Learning: In the `Transaction` component in `Transaction.tsx`, both `rawTransaction` and `transaction` should be included in the dependency arrays of `useMemo` hooks, even though `transaction` derives from `rawTransaction`.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the cellvalue component of packages/desktop-client/src/components/spreadsheet/cellvalue.tsx, the ...
Learnt from: matt-fidd
PR: actualbudget/actual#4154
File: packages/desktop-client/src/components/spreadsheet/CellValue.tsx:47-47
Timestamp: 2025-01-21T11:39:38.461Z
Learning: In the CellValue component of packages/desktop-client/src/components/spreadsheet/CellValue.tsx, the children prop needs an additional length check (children && children.length > 0) because the Trans component can pass an empty array at runtime despite the type definition expecting a function.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the react `usetransactions` hook defined in `packages/loot-core/src/client/data-hooks/transaction...
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/loot-core/src/client/data-hooks/transactions.ts:32-88
Timestamp: 2024-10-22T02:08:48.162Z
Learning: In the React `useTransactions` hook defined in `packages/loot-core/src/client/data-hooks/transactions.ts`, changes to `options` (e.g., `options.pageCount`) should be applied on the next query without adding them to the `useEffect` dependency array, to avoid unnecessary rerenders when options change.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: the `onreorder` function in `accounts.tsx` was moved from `sidebar.tsx`, and the `targetid` paramete...
Learnt from: tlesicka
PR: actualbudget/actual#3554
File: packages/desktop-client/src/components/sidebar/Accounts.tsx:60-64
Timestamp: 2024-10-04T05:13:58.322Z
Learning: The `onReorder` function in `Accounts.tsx` was moved from `Sidebar.tsx`, and the `targetId` parameter remains typed as `unknown` intentionally.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the `alltransactions` component of `account.tsx`, the `uselayouteffect` hook is appropriately use...
Learnt from: jfdoming
PR: actualbudget/actual#3402
File: packages/desktop-client/src/components/accounts/Account.tsx:8-8
Timestamp: 2024-09-27T14:15:46.637Z
Learning: In the `AllTransactions` component of `Account.tsx`, the `useLayoutEffect` hook is appropriately used to dispatch an action that closes splits for parent transactions when `prependTransactions` changes, ensuring this occurs synchronously before the component is painted.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: the account component in 'packages/desktop-client/src/components/accounts/account.tsx' is being rewr...
Learnt from: joel-jeremy
PR: actualbudget/actual#3685
File: packages/desktop-client/src/components/accounts/Account.tsx:655-665
Timestamp: 2024-10-24T17:05:41.415Z
Learning: The Account component in 'packages/desktop-client/src/components/accounts/Account.tsx' is being rewritten in a separate PR.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
  • packages/desktop-client/package.json
📚 Learning: in 'packages/desktop-client/src/components/sidebar/budgetname.tsx', empty budget names are handled e...
Learnt from: tlesicka
PR: actualbudget/actual#3593
File: packages/desktop-client/src/components/sidebar/BudgetName.tsx:114-136
Timestamp: 2024-10-16T03:51:04.683Z
Learning: In 'packages/desktop-client/src/components/sidebar/BudgetName.tsx', empty budget names are handled elsewhere, so additional error handling within the 'EditableBudgetName' component is unnecessary.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in transactionstable.tsx, the balance calculation using find() to locate the first non-scheduled tra...
Learnt from: matt-fidd
PR: actualbudget/actual#5207
File: packages/desktop-client/src/components/transactions/TransactionsTable.tsx:2194-2201
Timestamp: 2025-06-21T04:15:23.727Z
Learning: In TransactionsTable.tsx, the balance calculation using find() to locate the first non-scheduled transaction is acceptable for performance because: 1) the component only renders when adding transactions (limited usage), 2) find() short-circuits on first match, and 3) scheduled transactions are typically sparse in the transaction list.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in `calendar.tsx`, transaction-related callbacks such as `onbatchdelete`, `onbatchduplicate`, `oncre...
Learnt from: lelemm
PR: actualbudget/actual#3828
File: packages/desktop-client/src/components/reports/reports/Calendar.tsx:575-631
Timestamp: 2024-11-12T18:18:07.282Z
Learning: In `Calendar.tsx`, transaction-related callbacks such as `onBatchDelete`, `onBatchDuplicate`, `onCreateRule`, and `onScheduleAction` are intentionally left as empty functions because these operations should not be usable on that page.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in `packages/desktop-client/src/components/sidebar/budgetname.tsx`, the `budgetname` component consi...
Learnt from: tlesicka
PR: actualbudget/actual#3593
File: packages/desktop-client/src/components/sidebar/Sidebar.tsx:112-116
Timestamp: 2024-10-10T02:29:05.655Z
Learning: In `packages/desktop-client/src/components/sidebar/BudgetName.tsx`, the `BudgetName` component consists of three parts: `BudgetName`, `EditBudgetName`, and the Menu. Keeping `EditBudgetName` as a separate component helps maintain cleaner code by separating concerns.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the actual budget codebase, the schedule action handlers (onpost, onskip, oncomplete) in accountt...
Learnt from: matt-fidd
PR: actualbudget/actual#4180
File: packages/desktop-client/src/components/mobile/accounts/AccountTransactions.tsx:312-318
Timestamp: 2025-01-17T18:05:12.337Z
Learning: In the Actual Budget codebase, the schedule action handlers (onPost, onSkip, onComplete) in AccountTransactions.tsx follow a consistent pattern without explicit try-catch blocks, letting errors propagate up the call stack.

Applied to files:

  • packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx
📚 Learning: in the `desktop-electron` module, `loot-core`'s essential files are intentionally copied during pack...
Learnt from: MikesGlitch
PR: actualbudget/actual#3553
File: packages/desktop-electron/package.json:88-88
Timestamp: 2024-10-04T08:48:55.161Z
Learning: In the `desktop-electron` module, `loot-core`'s essential files are intentionally copied during packaging using `electron-builder`. Therefore, references to `loot-core` in the codebase are expected and should remain, even though the `loot-core` dependency is removed from `package.json`.

Applied to files:

  • packages/desktop-client/package.json
📚 Learning: the `tablenavigator` type in `packages/desktop-client/src/components/table.tsx` is not used outside ...
Learnt from: MatissJanis
PR: actualbudget/actual#3507
File: packages/desktop-client/src/components/table.tsx:1220-1220
Timestamp: 2024-09-26T19:32:57.858Z
Learning: The `TableNavigator` type in `packages/desktop-client/src/components/table.tsx` is not used outside of this file and can safely be made private by removing the `export` keyword.

Applied to files:

  • packages/desktop-client/package.json
📚 Learning: in `packages/loot-core/src/types/util.d.ts`, `transobjectliteral` remains typed as `any` due to the ...
Learnt from: matt-fidd
PR: actualbudget/actual#4041
File: packages/loot-core/src/types/util.d.ts:13-16
Timestamp: 2025-01-02T18:25:14.566Z
Learning: In `packages/loot-core/src/types/util.d.ts`, `TransObjectLiteral` remains typed as `any` due to the react-i18next issue (https://github.com/i18next/react-i18next/issues/1483) not being resolved yet.

Applied to files:

  • packages/desktop-client/package.json
📚 Learning: in react 19, function components can receive refs directly through props without requiring react.for...
Learnt from: matt-fidd
PR: actualbudget/actual#4955
File: packages/component-library/src/Input.tsx:52-64
Timestamp: 2025-05-22T05:17:51.422Z
Learning: In React 19, function components can receive refs directly through props without requiring React.forwardRef(). This simplified ref forwarding feature allows directly destructuring the ref prop and passing it along to DOM elements or other components.

Applied to files:

  • packages/desktop-client/package.json
📚 Learning: react 19 has simplified ref handling, eliminating the need for `react.forwardref()` in functional co...
Learnt from: matt-fidd
PR: actualbudget/actual#4955
File: packages/component-library/src/Input.tsx:52-64
Timestamp: 2025-05-22T05:17:51.422Z
Learning: React 19 has simplified ref handling, eliminating the need for `React.forwardRef()` in functional components. Components can now receive and destructure the ref directly from props rather than requiring the second parameter in forwardRef.

Applied to files:

  • packages/desktop-client/package.json
📚 Learning: in `packages/desktop-client/src/components/columnwidthcontext.jsx`, replacing `usestate` with `usere...
Learnt from: lelemm
PR: actualbudget/actual#3309
File: packages/desktop-client/src/components/ColumnWidthContext.jsx:17-17
Timestamp: 2024-10-25T18:30:24.287Z
Learning: In `packages/desktop-client/src/components/ColumnWidthContext.jsx`, replacing `useState` with `useRef` for `positionAccumulator` causes the resize action to become unpredictable. Therefore, it's preferable to keep using `useState` for `positionAccumulator` in this context.

Applied to files:

  • packages/desktop-client/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Functional
  • GitHub Check: Visual regression
🔇 Additional comments (5)
packages/component-library/package.json (2)

16-18: LGTM on React patch updates.

The React and React types updates are patch releases that typically contain bug fixes and minor improvements, which should be safe to upgrade.


11-11: react-aria-components minor bump is safe to merge

The jump from ^1.8.0 to ^1.11.0 is a minor‐version update under semver—no breaking changes are expected. A search confirmed that the Component Library only consumes supported exports (Tooltip, Popover, Input, Button, etc.), and there were no usages of newer APIs (e.g., ListBox) in this package.

All existing imports remain valid, and CI will catch any regressions. No further action required here.

packages/desktop-client/package.json (1)

25-25: LGTM on consistent dependency updates.

The dependency updates match those in the component-library package, maintaining version consistency across the monorepo. The React patch updates (19.1.0 → 19.1.1) and type definitions (19.1.4 → 19.1.9) are safe incremental updates.

Also applies to: 54-54, 56-56, 59-59

packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx (2)

74-81: LGTM on type refinement for better type safety.

The type definition refinement improves type safety by:

  • Explicitly omitting generic onPress/onLongPress handlers from ListBoxItem
  • Providing transaction-specific handler signatures
  • Making the value prop explicitly required as TransactionEntity

This likely addresses type conflicts introduced by the react-aria-components version update.


84-84: Cleaner parameter destructuring.

The direct destructuring of value as transaction improves code clarity and aligns with the refined type definition.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@matt-fidd matt-fidd changed the title ♻️ bump component-library dependencies [WIP] ♻️ bump component-library dependencies Aug 6, 2025
@matt-fidd matt-fidd force-pushed the deps/component-library branch from 578fb51 to ae36efe Compare August 8, 2025 04:22
Copy link
Contributor

👋 Hi! It looks like this PR has not had any changes for a week now. Would you like someone to review this PR? If so - please remove the "[WIP]" prefix from the PR title. That will let the community know that this PR is open for a review.

@github-actions github-actions bot added the Stale label Aug 16, 2025
@matt-fidd matt-fidd removed the Stale label Aug 18, 2025
@matt-fidd matt-fidd force-pushed the deps/component-library branch 3 times, most recently from 3a0be83 to 2f92da1 Compare August 18, 2025 03:37
@joel-jeremy
Copy link
Contributor

joel-jeremy commented Aug 20, 2025

The test is failing because it searches the entire page for the payee text and it matches 2 elements. The test should be updated to find the tooltip element and then find the payee from there.

image

@matt-fidd
Copy link
Member Author

The test is failing because it searches the entire page for the payee text and it matches 2 elements. The test should be updated to find the tooltip element and then find the payee from there.

image

I've tried this a few ways and not had any luck, I'm not very familiar with the playwright e2e stuff and I'm struggling to get them to target correctly. Any ideas how I could approach it?

@matt-fidd matt-fidd force-pushed the deps/component-library branch from 2f92da1 to b6728e2 Compare August 25, 2025 03:27
@matt-fidd matt-fidd force-pushed the deps/component-library branch from b6728e2 to 86f4e3d Compare August 25, 2025 03:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚧 WIP dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants