@refinedev/core
Version:
Refine is a React meta-framework for building enterprise-level, data-intensive applications rapidly with support for modern UI libraries and headless integrations.
1,057 lines (684 loc) ⢠288 kB
Markdown
# @refinedev/core
## 5.0.12
### Patch Changes
- [#7372](https://github.com/refinedev/refine/pull/7372) [`59c6470ca0ecff0588f749ef4530312e7537bfdd`](https://github.com/refinedev/refine/commit/59c6470ca0ecff0588f749ef4530312e7537bfdd) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix(core): preserve custom `getList` response fields in `useList` and `useTable` results.
We had an edge case where custom fields returned from `getList` were available on `query.data` but dropped from `result`. Now those extra fields are preserved in both `useList` and `useTable`.
## 5.0.11
### Patch Changes
- [#7289](https://github.com/refinedev/refine/pull/7289) [`c040475723d8e2980c0b3ba6d8fae35e05525b09`](https://github.com/refinedev/refine/commit/c040475723d8e2980c0b3ba6d8fae35e05525b09) Thanks [@RonakRahane](https://github.com/RonakRahane)! - fix: useDeleteButton now passes meta params to useButtonCanAccess
useDeleteButton was not forwarding the `meta` prop to `useButtonCanAccess`, which caused custom access control rules relying on meta to fail for delete buttons.
Fixes #7285
## 5.0.10
### Patch Changes
- [#7245](https://github.com/refinedev/refine/pull/7245) [`bf3cc65f73a6801a5fd1e42e6162efd2e89406d3`](https://github.com/refinedev/refine/commit/bf3cc65f73a6801a5fd1e42e6162efd2e89406d3) Thanks [@harsha-cpp](https://github.com/harsha-cpp)! - fix: correctly parse deeply nested conditional filters from URL with syncWithLocation
Increased `qs.parse` depth from default 5 to 10 to support deeply nested conditional filters (e.g., `or -> and -> {field, operator, value}`). Previously, nested filter properties were incorrectly parsed as bracket notation keys (`[field]`, `[operator]`, `[value]`) after page reload when using `syncWithLocation: true`.
## 5.0.9
### Patch Changes
- Updated dependencies []:
- @refinedev/devtools-internal@2.0.2
## 5.0.8
### Patch Changes
- [#7143](https://github.com/refinedev/refine/pull/7143) [`72ed290dd671ce0031737b5cfe638b2998d3a048`](https://github.com/refinedev/refine/commit/72ed290dd671ce0031737b5cfe638b2998d3a048) Thanks [@arndom](https://github.com/arndom)! - - Add case sensitive `eq` and `ne` variants
[Resolves #6984](https://github.com/refinedev/refine/issues/6984)
- [#7124](https://github.com/refinedev/refine/pull/7124) [`dbf5ab844bfe87c0c5b23ca080ab2ef9b64bf070`](https://github.com/refinedev/refine/commit/dbf5ab844bfe87c0c5b23ca080ab2ef9b64bf070) Thanks [@arndom](https://github.com/arndom)! - - Invalidate queries on logout.
- Resolves cached error state being there after login from forced logout.
[Resolves #6997](https://github.com/refinedev/refine/issues/6997)
- [#7163](https://github.com/refinedev/refine/pull/7163) [`add2f6f3c16f808d4d13255a120f6785ad21a425`](https://github.com/refinedev/refine/commit/add2f6f3c16f808d4d13255a120f6785ad21a425) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix(core): `useGetToPath` returns `undefined` #7159
Fixed an issue where `useGetToPath` would return `undefined` when a partial resource object was passed. The hook now always looks up the full resource definition from the resources array to ensure all action routes are available.
Additionally, added a warning message when an action route cannot be found for a resource, making it easier to debug routing issues.
Resolves #7159
## 5.0.7
### Patch Changes
- [#7150](https://github.com/refinedev/refine/pull/7150) [`0ceb0f6e5cf57ba50760e55709d7e70c69b13461`](https://github.com/refinedev/refine/commit/0ceb0f6e5cf57ba50760e55709d7e70c69b13461) Thanks [@pcfreak30](https://github.com/pcfreak30)! - feat(core): add option to disable RouteChangeHandler
Added `disableRouteChangeHandler` option to Refine context and props
Resolves #7148
## 5.0.6
### Patch Changes
- [#7106](https://github.com/refinedev/refine/pull/7106) [`5a79da5cf4ce38bed776dd63a935dd3102b3d4df`](https://github.com/refinedev/refine/commit/5a79da5cf4ce38bed776dd63a935dd3102b3d4df) Thanks [@angelodirb](https://github.com/angelodirb)! - fix: memoize queryOptions.select in useList to prevent multiple executions
- [#7083](https://github.com/refinedev/refine/pull/7083) [`3ece8335935ff3e8c27f5883cd2f06ef29c2c746`](https://github.com/refinedev/refine/commit/3ece8335935ff3e8c27f5883cd2f06ef29c2c746) Thanks [@a28689604](https://github.com/a28689604)! - fix(core): stabilize autosave debounce and cancel on unmount in useForm
Fixes #7082
## 5.0.5
### Patch Changes
- [#7086](https://github.com/refinedev/refine/pull/7086) [`5c57073cf7584a7ca28ad7e78dc25a16c72e83d3`](https://github.com/refinedev/refine/commit/5c57073cf7584a7ca28ad7e78dc25a16c72e83d3) Thanks [@BatuhanW](https://github.com/BatuhanW)! - feat: disable minify
Resolves #6417
- Updated dependencies [[`5c57073cf7584a7ca28ad7e78dc25a16c72e83d3`](https://github.com/refinedev/refine/commit/5c57073cf7584a7ca28ad7e78dc25a16c72e83d3)]:
- @refinedev/devtools-internal@2.0.1
## 5.0.4
### Patch Changes
- [#7031](https://github.com/refinedev/refine/pull/7031) [`99e9cf01546a4707e1d79be2a4e1671e045bf41e`](https://github.com/refinedev/refine/commit/99e9cf01546a4707e1d79be2a4e1671e045bf41e) Thanks [@DipakHalkude](https://github.com/DipakHalkude)! - fix: prevent external queryOptions.enabled from overriding internal ID check in useForm (#7031)
Fixed a bug where the `useForm` hook allowed external `queryOptions.enabled` to bypass internal ID safety checks, causing API calls with undefined IDs.
Added comprehensive tests covering create mode, undefined IDs, and various enabled combinations to ensure the fix works correctly.
Fixes #7031
- [#7035](https://github.com/refinedev/refine/pull/7035) [`6934c008bee0e07eab424f560503fe5a8e541c8a`](https://github.com/refinedev/refine/commit/6934c008bee0e07eab424f560503fe5a8e541c8a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `useInfiniteList` pagination not work #7034
Now `useInfiniteList` correctly advances server-side pages when loading more results. This bug was caused by [this commit](https://github.com/refinedev/refine/commit/1a02f020fdc2030e7c7a702e3bd9bfddae2fe1c8).
Resolves #7034
## 5.0.3
### Patch Changes
- [#7020](https://github.com/refinedev/refine/pull/7020) [`32ff2e4200ff888111f03d613e7bb838f505c1b1`](https://github.com/refinedev/refine/commit/32ff2e4200ff888111f03d613e7bb838f505c1b1) Thanks [@samay-rgb](https://github.com/samay-rgb)! - fix: use stable array to prevent memoization issue in useList. #7019
Fixed an issue where `useList`, `useMany`, `useTable`, and `useCustom` hooks created new empty arrays/objects on every render. This caused `useEffect` and `useMemo` to trigger unnecessarily.
Now these hooks use stable references for better performance.
Fixes #7019
## 5.0.2
### Patch Changes
- [#7016](https://github.com/refinedev/refine/pull/7016) [`97e974547949197ed9ca4a1e02b19ef3fc46b673`](https://github.com/refinedev/refine/commit/97e974547949197ed9ca4a1e02b19ef3fc46b673) Thanks [@DoguhanOzgurAkca](https://github.com/DoguhanOzgurAkca)! - feat: comprehensive deprecated code cleanup for v5
This release completes the cleanup of deprecated code that remained after the Refine v5 migration, providing a cleaner and more maintainable codebase.
## Breaking Changes - Removed Deprecated Components
**@refinedev/antd:**
- Removed deprecated `ReadyPage` component (use custom components instead)
- Removed deprecated `LoginPage` component (use `AuthPage` instead)
- Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead)
**@refinedev/chakra-ui:**
- Removed deprecated `ReadyPage` component (use custom components instead)
- Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead)
**@refinedev/mantine:**
- Removed deprecated `useSiderVisible` hook (use `useThemedLayoutContext` instead)
## New Features
**@refinedev/codemod:**
- Added `welcome-page-import-from-core` codemod transformation
- Automatically migrates WelcomePage imports from UI libraries to @refinedev/core
- Run with: `npx @refinedev/codemod@latest welcome-page-import-from-core`
## Improvements
**@refinedev/antd:**
- Un-deprecated `getDefaultFilter` function - now the preferred import location
- Updated documentation to import `getDefaultFilter` from `@refinedev/antd` instead of `@refinedev/core`
**@refinedev/core:**
- Un-deprecated `warnWhenUnsavedChanges` property in RefineOptions (still valid and actively used)
- Updated all TanStack Query documentation links from v4 to v5
- Improved TSDoc comments with current TanStack Query v5 references
## Documentation Updates
- Updated 7 documentation files to use `getDefaultFilter` from `@refinedev/antd`
- Migrated 22 TanStack Query v4 documentation links to v5
- All API references now point to current TanStack Query v5 documentation
- [#7015](https://github.com/refinedev/refine/pull/7015) [`acb1e96b0d6cfddbd6115818b8f01c73d56934ff`](https://github.com/refinedev/refine/commit/acb1e96b0d6cfddbd6115818b8f01c73d56934ff) Thanks [@BatuhanW](https://github.com/BatuhanW)! - fix: incorrect parseTableParams issue.
Resolves (#7013)[https://github.com/refinedev/refine/issues/7013]
## 5.0.1
### Patch Changes
- [#6990](https://github.com/refinedev/refine/pull/6990) [`90f3f7a43f71747c8d35e69b9a84a5dee6df9354`](https://github.com/refinedev/refine/commit/90f3f7a43f71747c8d35e69b9a84a5dee6df9354) Thanks [@BatuhanW](https://github.com/BatuhanW)! - fix(core): error notification infinite render issue
useEffect hook in data query hooks that handles the error notification had whole error object in dependency array, which changes with every request, thus causing infinite re-renders. Changed the dependency to just error message string.
[Resolves #6983](https://github.com/refinedev/refine/issues/6983)
## 5.0.0
### Major Changes
- [#6945](https://github.com/refinedev/refine/pull/6945) [`44a8c7663c42a2aa91074c33294e9d6a88d9ba98`](https://github.com/refinedev/refine/commit/44a8c7663c42a2aa91074c33294e9d6a88d9ba98) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: upgrade to Refine 5.0 with React 19 and TanStack Query v5
- Modern React 19 and TanStack Query v5 support with improved performance and developer experience.
- Removed all deprecated APIs and legacy systems for a cleaner, more maintainable codebase.
> šØ Breaking changes require migration - check our guide at https://refine.dev/docs/migration-guide/4x-to-5x/
### Patch Changes
- [#6945](https://github.com/refinedev/refine/pull/6945) [`807099eecb4e8d41b1cf9ab557d71d34d12bec35`](https://github.com/refinedev/refine/commit/807099eecb4e8d41b1cf9ab557d71d34d12bec35) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - - Throw an error in `useGetLocale` if it is called without an i18n Provider.
- This ensures the hook's return type matches that of `i18nProvider.getLocale`.
- `useTranslation().getLocale` which is from `useGetLocale` now returns a string.
[Resolves #6812](https://github.com/refinedev/refine/issues/6812)
- Updated dependencies [[`44a8c7663c42a2aa91074c33294e9d6a88d9ba98`](https://github.com/refinedev/refine/commit/44a8c7663c42a2aa91074c33294e9d6a88d9ba98)]:
- @refinedev/devtools-internal@2.0.0
## 4.58.0
### Minor Changes
- [#6880](https://github.com/refinedev/refine/pull/6880) [`2b4c2082b2e07f6c5afa514c4beeb7abc4082ea2`](https://github.com/refinedev/refine/commit/2b4c2082b2e07f6c5afa514c4beeb7abc4082ea2) Thanks [@arndom](https://github.com/arndom)! - - Add `siderItemsAreCollapsed` prop to all `Sider` components to set default expanded/collapsed nested sider items.
- UI packages: AntDesign, Manitine, Charka-UI, Material-UI
- Add documentation for this addition
[Resolves #6721](https://github.com/refinedev/refine/issues/6721)
### Patch Changes
- [#6925](https://github.com/refinedev/refine/pull/6925) [`5a3e404de3f655efd8317f8e2eacbc2be8b3fa7a`](https://github.com/refinedev/refine/commit/5a3e404de3f655efd8317f8e2eacbc2be8b3fa7a) Thanks [@pokycookie](https://github.com/pokycookie)! - - Preserve row id in meta for data hooks.
[Resolves #6906](https://github.com/refinedev/refine/issues/6906)
## 4.57.11
### Patch Changes
- [#6889](https://github.com/refinedev/refine/pull/6889) [`6087f72c2d38977410e401efae61c5583d61425d`](https://github.com/refinedev/refine/commit/6087f72c2d38977410e401efae61c5583d61425d) Thanks [@DoguhanOzgurAkca](https://github.com/DoguhanOzgurAkca)! - [chore: replace outdated and broken `@tanstack/query` links](https://github.com/refinedev/refine/pull/6889)
Updated broken links to `@tanstack/query` documentation for `useMutation` in TSDoc definitions.
## 4.57.10
### Patch Changes
- [#6826](https://github.com/refinedev/refine/pull/6826) [`9dca95e276fa704911c32599473a54a71a6c5246`](https://github.com/refinedev/refine/commit/9dca95e276fa704911c32599473a54a71a6c5246) Thanks [@devarsh-mavani-19](https://github.com/devarsh-mavani-19)! - fix: pass meta params to useCan hook params #6833
Now access control provider can receive additional arguments through meta params.
Resolves [#6833]
## 4.57.9
### Patch Changes
š¢ **Refine Community Release** š¢
- fix: wrong JSDoc links in components
## 4.57.8
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6728](https://github.com/refinedev/refine/pull/6728) [`1663501c9c9f37b98434af83afd8d0fc41d27af2`](https://github.com/refinedev/refine/commit/1663501c9c9f37b98434af83afd8d0fc41d27af2) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: wrong JSDoc links in components
## 4.57.7
### Patch Changes
š¢ **Refine Community Release** š¢
- Move invalidation in `useRegister` to be called only on success.
[Resolves #6639](https://github.com/refinedev/refine/issues/6639)
š¢ **Refine Community Release** š¢
- fix(types): remove path aliases from type imports
Since typescript doesn't resolve and replace path aliases, using them for the type imports will cause `d.ts` files to reference unresolvable paths and types.
While this doesn't break everything, it breaks the types in places where the path aliases are used for type imports.
This change removes the path aliases from the type imports and replaces them with relative imports.
## 4.57.6
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6658](https://github.com/refinedev/refine/pull/6658) [`91aaf75f04e6e6434196ece9a52b024c70d29df4`](https://github.com/refinedev/refine/commit/91aaf75f04e6e6434196ece9a52b024c70d29df4) Thanks [@arndom](https://github.com/arndom)! - Move invalidation in `useRegister` to be called only on success.
[Resolves #6639](https://github.com/refinedev/refine/issues/6639)
ā” **Refine Enterprise Release** ā”
- [#6683](https://github.com/refinedev/refine/pull/6683) [`a12a0821e3c573386c2a8eea4ac1582cc46dd26d`](https://github.com/refinedev/refine/commit/a12a0821e3c573386c2a8eea4ac1582cc46dd26d) Thanks [@aliemir](https://github.com/aliemir)! - fix(types): remove path aliases from type imports
Since typescript doesn't resolve and replace path aliases, using them for the type imports will cause `d.ts` files to reference unresolvable paths and types.
While this doesn't break everything, it breaks the types in places where the path aliases are used for type imports.
This change removes the path aliases from the type imports and replaces them with relative imports.
## 4.57.5
### Patch Changes
š¢ **Refine Community Release** š¢
- feat(core): add `enabled` prop to `useLoadingOvertime` and `overtimeOptions`
Added missing `enabled` prop to `useLoadingOvertime` and added ability to globally configure through `options.overtime.enabled`.
Due to the nature of calculating elapsed time, an interval is set by the `interval` prop. This was causing unwanted updates in the return value and there was no way to disable it properly.
š¢ **Refine Community Release** š¢
- fixed: `to` query parameter is not working after login. #6582
From now on, the `to` query parameter will work after login. If the URL includes a `to` query parameter, the user will be redirected to the specified path after logging in.
Example:
After logout, Refine will automatically appends `to` query param to URL.
```
http://localhost:3000/login?to=/any-path
```
After login, it will redirect to `http://localhost:3000/any-path`
Resolves [#6582](https://github.com/refinedev/refine/issues/6582)
š¢ **Refine Community Release** š¢
- refactor(core): remove duplicated overtime intervals caused by internally used hooks
Updated Refine's data hooks and extensions to prevent duplicated overtime intervals from being created. This uses the `enabled` prop to prevent internal hooks from registering the intervals.
Prior to this change, `useTable` was initializing its own `useLoadingOvertime` hook but also propagated the `elapsedTime` from `useList` hook which is used internally by `useTable`. This caused duplicated intervals and unwanted updates.
This now ensures a single interval is created and used for the extension hooks.
š¢ **Refine Community Release** š¢
- fix(core): add missing checks and warnings for `ids` and `resource` props in `useMany` hook
Added checks for `ids` and `resource` props to check in runtime if they are valid or not.
`useMany` will warn if `ids` or `resource` props are missing unless the query is manually enabled through `queryOptions.enabled` prop.
[Resolves #6617](https://github.com/refinedev/refine/issues/6617)
## 4.57.4
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6626](https://github.com/refinedev/refine/pull/6626) [`087039f0ccd13e9fe5bf4ef904e4f1c2df129d69`](https://github.com/refinedev/refine/commit/087039f0ccd13e9fe5bf4ef904e4f1c2df129d69) Thanks [@aliemir](https://github.com/aliemir)! - feat(core): add `enabled` prop to `useLoadingOvertime` and `overtimeOptions`
Added missing `enabled` prop to `useLoadingOvertime` and added ability to globally configure through `options.overtime.enabled`.
Due to the nature of calculating elapsed time, an interval is set by the `interval` prop. This was causing unwanted updates in the return value and there was no way to disable it properly.
ā” **Refine Enterprise Release** ā”
- [#6626](https://github.com/refinedev/refine/pull/6626) [`087039f0ccd13e9fe5bf4ef904e4f1c2df129d69`](https://github.com/refinedev/refine/commit/087039f0ccd13e9fe5bf4ef904e4f1c2df129d69) Thanks [@aliemir](https://github.com/aliemir)! - refactor(core): remove duplicated overtime intervals caused by internally used hooks
Updated Refine's data hooks and extensions to prevent duplicated overtime intervals from being created. This uses the `enabled` prop to prevent internal hooks from registering the intervals.
Prior to this change, `useTable` was initializing its own `useLoadingOvertime` hook but also propagated the `elapsedTime` from `useList` hook which is used internally by `useTable`. This caused duplicated intervals and unwanted updates.
This now ensures a single interval is created and used for the extension hooks.
## 4.57.3
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6618](https://github.com/refinedev/refine/pull/6618) [`5377e7d8f7ccb986c5d38352351b9b2d2c414fde`](https://github.com/refinedev/refine/commit/5377e7d8f7ccb986c5d38352351b9b2d2c414fde) Thanks [@aliemir](https://github.com/aliemir)! - fix(core): add missing checks and warnings for `ids` and `resource` props in `useMany` hook
Added checks for `ids` and `resource` props to check in runtime if they are valid or not.
`useMany` will warn if `ids` or `resource` props are missing unless the query is manually enabled through `queryOptions.enabled` prop.
[Resolves #6617](https://github.com/refinedev/refine/issues/6617)
## 4.57.2
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6583](https://github.com/refinedev/refine/pull/6583) [`5ce59d0352ba5402452bb812ac0e506b3c2216df`](https://github.com/refinedev/refine/commit/5ce59d0352ba5402452bb812ac0e506b3c2216df) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fixed: `to` query parameter is not working after login. #6582
From now on, the `to` query parameter will work after login. If the URL includes a `to` query parameter, the user will be redirected to the specified path after logging in.
Example:
After logout, Refine will automatically appends `to` query param to URL.
```
http://localhost:3000/login?to=/any-path
```
After login, it will redirect to `http://localhost:3000/any-path`
Resolves [#6582](https://github.com/refinedev/refine/issues/6582)
## 4.57.1
### Patch Changes
š¢ **Refine Community Release** š¢
- This PR fixes an issue where the ListButton component doesn't include a query filter in the navigation URL.
[Resolves #6528](https://github.com/refinedev/refine/issues/6528)
š¢ **Refine Community Release** š¢
- chore: update package descriptions
š¢ **Refine Community Release** š¢
- refactor: modified the Authenticated component to receive optional params prop to be passed to the useIsAuthenticated hook.
Fixes #6309
š¢ **Refine Community Release** š¢
- fix: `useUpdate` and `useForm` hooks throws an error when `id` is an empty string. (`id=""`) #6505
This reverts a breaking change introduced in [PR #6116](https://github.com/refinedev/refine/pull/6116) and restores support for using an empty string as `id`. This enables updates without an `id` field, as allowed before `@refinedev/core@4.54.0`.
Affected versions with this bug:
- `@refinedev/core@4.54.0`
- `@refinedev/core@4.54.1`
- `@refinedev/core@4.55.0`
- `@refinedev/core@4.56.0`
The bug is fixed in:
- `@refinedev/core@4.56.1`
Resolves [#6505](https://github.com/refinedev/refine/issues/6505)
- Updated dependencies []:
- @refinedev/devtools-internal@1.1.16
## 4.57.0
### Minor Changes
ā” **Refine Enterprise Release** ā”
- [#6558](https://github.com/refinedev/refine/pull/6558) [`42d730aa2908003cfb0dcf0c57e9b70793c88ddc`](https://github.com/refinedev/refine/commit/42d730aa2908003cfb0dcf0c57e9b70793c88ddc) Thanks [@OmkarBansod02](https://github.com/OmkarBansod02)! - This PR fixes an issue where the ListButton component doesn't include a query filter in the navigation URL.
[Resolves #6528](https://github.com/refinedev/refine/issues/6528)
ā” **Refine Enterprise Release** ā”
- [#6483](https://github.com/refinedev/refine/pull/6483) [`8309c5690e7c49529f07d288e79896636c6ce7c2`](https://github.com/refinedev/refine/commit/8309c5690e7c49529f07d288e79896636c6ce7c2) Thanks [@reedwane](https://github.com/reedwane)! - refactor: modified the Authenticated component to receive optional params prop to be passed to the useIsAuthenticated hook.
Fixes #6309
### Patch Changes
ā” **Refine Enterprise Release** ā”
- [#6554](https://github.com/refinedev/refine/pull/6554) [`3cb2ca6f687398e422b867692b597b0c0d911706`](https://github.com/refinedev/refine/commit/3cb2ca6f687398e422b867692b597b0c0d911706) Thanks [@necatiozmen](https://github.com/necatiozmen)! - chore: update package descriptions
ā” **Refine Enterprise Release** ā”
- [#6514](https://github.com/refinedev/refine/pull/6514) [`f32af58283bdaf7712805520bd9feb8bfd27ba38`](https://github.com/refinedev/refine/commit/f32af58283bdaf7712805520bd9feb8bfd27ba38) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `useUpdate` and `useForm` hooks throws an error when `id` is an empty string. (`id=""`) #6505
This reverts a breaking change introduced in [PR #6116](https://github.com/refinedev/refine/pull/6116) and restores support for using an empty string as `id`. This enables updates without an `id` field, as allowed before `@refinedev/core@4.54.0`.
Affected versions with this bug:
- `@refinedev/core@4.54.0`
- `@refinedev/core@4.54.1`
- `@refinedev/core@4.55.0`
- `@refinedev/core@4.56.0`
The bug is fixed in:
- `@refinedev/core@4.56.1`
Resolves [#6505](https://github.com/refinedev/refine/issues/6505)
- Updated dependencies [[`1ced1baa1dda3251b2a3d058a9168533126efb53`](https://github.com/refinedev/refine/commit/1ced1baa1dda3251b2a3d058a9168533126efb53)]:
- @refinedev/devtools-internal@1.1.15
## 4.56.0
### Minor Changes
- [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: added new prop called `mutationVariables` to `<AuthPage />`. #6431
From now on, you can pass additional parameters to the `authProvider` methods using the `mutationVariables` prop of the `<AuthPage />` component.
```tsx
import { AuthPage } from "@refinedev/antd"; // or "@refinedev/chakra-ui", "@refinedev/mantine", "@refinedev/mui"
const MyLoginPage = () => {
return (
<AuthPage
type="login" // all other types are also supported.
// highlight-start
mutationVariables={{
foo: "bar",
xyz: "abc",
}}
// highlight-end
/>
);
};
// all mutation methods are supported.
const authProvider = {
login: async ({ foo, xyz, ...otherProps }) => {
console.log(foo); // bar
console.log(xyz); // abc
// ...
},
register: async ({ foo, xyz, ...otherProps }) => {
console.log(foo); // bar
console.log(xyz); // abc
// ...
},
// ...
};
```
[Resolves #6431](https://github.com/refinedev/refine/issues/6431)
- [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: exported useInvalidateAuthStore hook from auth hooks
Now you can invalide the users identity state and force a react query refresh using this hook
Resolves [#6341](https://github.com/refinedev/refine/issues/6341)
- [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: Added `MetaContext` to share data between components, providers, and hooks.
> šØ Designed for internal use only.
### Patch Changes
- [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: Added more flexibility to the [`<Link />`](https://refine.dev/docs/routing/components/link/) component's `ref` type by changing it from `HTMLAnchorElement` to `Element`.
From now on, we can pass any type of `ref` to the [`<Link />`](https://refine.dev/docs/routing/components/link/) component.
```tsx
// Before fix - Only worked with HTMLAnchorElement
const ref = useRef<HTMLAnchorElement>(null);
// After fix - Works with any Element type
const ref = useRef<HTMLDivElement>(null);
const ref = useRef<HTMLSpanElement>(null);
```
Resolves [#6463](https://github.com/refinedev/refine/issues/6463)
- [#6445](https://github.com/refinedev/refine/pull/6445) [`4ff4335274d5689ec62127312695b76d692a125a`](https://github.com/refinedev/refine/commit/4ff4335274d5689ec62127312695b76d692a125a) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: Priority logic between `to` and `go` props in [`Link`](https://refine.dev/docs/routing/components/link/) component.
From now on, the `to` prop has priority over the `go` prop. If both are passed, the `to` prop will be used.
```tsx
// Before fix - go would override to
<Link to="/posts" go={{ resource: "categories" }} />
// After fix - to overrides go
<Link to="/posts" go={{ resource: "categories" }} />
```
Resolves [#6461](https://github.com/refinedev/refine/issues/6461)
## 4.55.0
### Minor Changes
- [#6330](https://github.com/refinedev/refine/pull/6330) [`5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31`](https://github.com/refinedev/refine/commit/5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: add [`<Link />`](https://refine.dev/docs/routing/components/link/) component to navigate to a resource with a specific action. Under the hood, It uses [`useGo`](https://refine.dev/docs/routing/hooks/use-go/) to generate the URL.
## Usage
```tsx
import { Link } from "@refinedev/core";
const MyComponent = () => {
return (
<>
{/* simple usage, navigates to `/posts` */}
<Link to="/posts">Posts</Link>
{/* complex usage with more control, navigates to `/posts` with query filters */}
<Link
go={{
query: {
// `useTable` or `useDataGrid` automatically use this filters to fetch data if `syncWithLocation` is true.
filters: [
{
operator: "eq",
value: "published",
field: "status",
},
],
},
to: {
resource: "posts",
action: "list",
},
}}
>
Posts
</Link>
</>
);
};
```
[Fixes #6329](https://github.com/refinedev/refine/issues/6329)
- [#6330](https://github.com/refinedev/refine/pull/6330) [`5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31`](https://github.com/refinedev/refine/commit/5a81b35bc1eedbecb4b6c531a2fa5235dd0caf31) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - chore: From now on, [`useLink`](https://refine.dev/docs/routing/hooks/use-link/) returns [`<Link />`](https://refine.dev/docs/routing/components/link/) component instead of returning [`routerProvider.Link`](https://refine.dev/docs/routing/router-provider/#link).
Since the `<Link />` component uses `routerProvider.Link` under the hood with leveraging `useGo` hook to generate the URL there is no breaking change. It's recommended to use the `<Link />` component from the `@refinedev/core` package instead of `useLink` hook. This hook is used mostly for internal purposes and is only exposed for customization needs.
[Fixes #6329](https://github.com/refinedev/refine/issues/6329)
### Patch Changes
- [#6327](https://github.com/refinedev/refine/pull/6327) [`c630b090539082b5166b508053f87274624c794e`](https://github.com/refinedev/refine/commit/c630b090539082b5166b508053f87274624c794e) Thanks [@Anonymous961](https://github.com/Anonymous961)! - fix(core): added ability to return `undefined` to fallback to the default notification config when using the function form in `successNotification` and `errorNotification` props.
[Resolves #6270](https://github.com/refinedev/refine/issues/6270)
- [#6353](https://github.com/refinedev/refine/pull/6353) [`a0f2d7bbef3093e11c3024bb7fa2a0ffc3ce9e10`](https://github.com/refinedev/refine/commit/a0f2d7bbef3093e11c3024bb7fa2a0ffc3ce9e10) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: The `label` and `route` fields in `useMenu().menuItems` were marked as deprecated, but they are not actually deprecated. This issue was caused by `menuItems` extending from `IResourceItem`, however, `menuItems` populates these fields and handles deprecation of these fields internally. This change removes the deprecation warning for these fields.
```tsx
export const Sider = () => {
const { menuItems } = useMenu();
menuItems.map((item) => {
// these are safe to use
console.log(item.label);
console.log(item.route);
item.children.map((child) => {
// these are safe to use
console.log(child.label);
console.log(child.route);
});
});
return <div>{/* ... */}</div>;
};
```
[Fixes #6352](https://github.com/refinedev/refine/issues/6352)
- [#6386](https://github.com/refinedev/refine/pull/6386) [`bfe28f0316b3623aaef0b60ae39ebe24939dd0af`](https://github.com/refinedev/refine/commit/bfe28f0316b3623aaef0b60ae39ebe24939dd0af) Thanks [@hugorezende](https://github.com/hugorezende)! - fix(core): wrap `setFilters` and `setSorters` methods with `useCallback` to prevent looping re-renders
With this we can use the setFilters as dependencies inside useEffects without infinite loop since state changes in the hook won't cause the functions to be re-assigned
[Fixes #6385](https://github.com/refinedev/refine/issues/6385)
## 4.54.1
### Patch Changes
- [#6260](https://github.com/refinedev/refine/pull/6260) [`05b944a75f3a907c0df7b30591a5c5fbbc3cc3f7`](https://github.com/refinedev/refine/commit/05b944a75f3a907c0df7b30591a5c5fbbc3cc3f7) Thanks [@aliemir](https://github.com/aliemir)! - fix(core): `useResourceParams` not reflecting `id` prop changes immediately
`useResourceParams` hook was not reflecting the changes in the `id` prop immediately. This was due to the `id` state being set in the `useEffect` hook. This PR fixes the issue by setting the `id` state properly during render rather than after the render is complete.
[Fixes #6259](https://github.com/refinedev/refine/issues/6259)
- [#6222](https://github.com/refinedev/refine/pull/6222) [`ec24fe0f37aa9b92991bf105719f6f42bb68d63c`](https://github.com/refinedev/refine/commit/ec24fe0f37aa9b92991bf105719f6f42bb68d63c) Thanks [@Sergio16T](https://github.com/Sergio16T)! - feat: added support for meta.gqlVariables to hasura dataProvider. Updated GraphQLQueryOptions to include optional field gqlVariables
[Feat #5864](https://github.com/refinedev/refine/issues/5864)
## 4.54.0
### Minor Changes
- [#6180](https://github.com/refinedev/refine/pull/6180) [`292cebc5a70f19400793292b79d1400fec114591`](https://github.com/refinedev/refine/commit/292cebc5a70f19400793292b79d1400fec114591) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useSelect`](https://refine.dev/docs/data/hooks/use-select/)'s `queryResult` and `defaultValueQueryResult` is deprecated, use `query` and `defaultValueQuery` instead. #6179
```diff
import { useSelect } from '@refinedev/core';
- const { queryResult, defaultValueQueryResult } = useSelect();
+ const { query, defaultValueQuery } = useSelect();
```
> ⨠You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory:
>
> ```bash
> npx @refinedev/codemod@latest rename-query-and-mutation-result
> ```
- [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-update/#mutation-parameters) should be given as a prop to the `useUpdate` hook. #6102
From now on, you can pass mutation parameters to the `useUpdate` hook as a prop.
Old usage of `useUpdate` hook:
```tsx
import { useUpdate } from "@refinedev/core";
const { mutate } = useUpdate();
mutate(
{
resource: "products",
id: 1,
mutationMode: "optimistic",
successNotification: false,
values: {
name: "New Product",
material: "Wood",
},
},
{
onSuccess: () => {
/* do something after mutation success */
},
},
);
```
New usage of `useUpdate` hook:
```tsx
import { useUpdate } from "@refinedev/core";
const { mutate } = useUpdate({
resource: "products",
successNotification: false,
mutationMode: "optimistic",
mutationOptions: {
onSuccess: () => {
/* do something after mutation success */
},
},
});
mutate({
// also you can override the parameters given to the hook
id: 1,
values: {
name: "New Product",
material: "Wood",
},
});
```
You can think of the parameters given to the `useUpdate` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values.
> šØ If you pass these parameters to the `mutate` function, it will override the values given to the hook.
- [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-create/#mutation-parameters) should be given as a prop to the `useCreate` hook. #6113
From now on, you can pass mutation parameters to the `useCreate` hook as a prop.
Old usage of `useCreate` hook:
```tsx
import { useCreate } from "@refinedev/core";
const { mutate } = useCreate();
mutate(
{
resource: "products",
values: {
name: "New Product",
material: "Wood",
},
mutationMode: "optimistic",
successNotification: false,
},
{
onSuccess: () => {
/* do something after mutation success */
},
},
);
```
New usage of `useCreate` hook:
```tsx
import { useCreate } from "@refinedev/core";
const { mutate } = useCreate({
resource: "products",
successNotification: false,
mutationMode: "optimistic",
mutationOptions: {
onSuccess: () => {
/* do something after mutation success */
},
},
});
mutate({
// also you can override the parameters given to the hook
values: {
name: "New Product",
material: "Wood",
},
});
```
You can think of the parameters given to the `useCreate` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values.
> šØ If you pass these parameters to the `mutate` function, it will override the values given to the hook.
- [#6172](https://github.com/refinedev/refine/pull/6172) [`4967a51944c139d102fcfc04ada5a42c725ed7c2`](https://github.com/refinedev/refine/commit/4967a51944c139d102fcfc04ada5a42c725ed7c2) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useTable`](https://refine.dev/docs/data/hooks/use-table/)'s `tableQueryResult` is deprecated, use `tableQuery` instead. #6169
```diff
import { useTable } from '@refinedev/core';
- const { tableQueryResult } = useTable();
+ const { tableQuery } = useTable();
```
> ⨠You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory:
>
> ```bash
> npx @refinedev/codemod@latest rename-query-and-mutation-result
> ```
- [#6164](https://github.com/refinedev/refine/pull/6164) [`8ed027eec66c41c444f168f4f52e6b51057bc498`](https://github.com/refinedev/refine/commit/8ed027eec66c41c444f168f4f52e6b51057bc498) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useForm`](https://refine.dev/docs/data/hooks/use-form/)'s `queryResult` is deprecated, use `query` instead. #6163
```diff
import { useForm } from '@refinedev/core';
- const { queryResult } = useForm();
+ const { query } = useForm();
```
> ⨠You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory:
>
> ```bash
> npx @refinedev/codemod@latest rename-query-and-mutation-result
> ```
- [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-create-many/#mutation-parameters) should be given as a prop to the `useCreateMany` hook. #6114
From now on, you can pass mutation parameters to the `useCreateMany` hook as a prop.
Old usage of `useCreateMany` hook:
```tsx
import { useCreateMany } from "@refinedev/core";
const { mutate } = useCreateMany();
mutate(
{
resource: "products",
values: [
{
name: "Product 1",
material: "Wood",
},
{
name: "Product 2",
material: "Metal",
},
],
mutationMode: "optimistic",
successNotification: false,
},
{
onSuccess: () => {
/* do something after mutation success */
},
},
);
```
New usage of `useCreateMany` hook:
```tsx
import { useCreateMany } from "@refinedev/core";
const { mutate } = useCreateMany({
resource: "products",
successNotification: false,
mutationMode: "optimistic",
mutationOptions: {
onSuccess: () => {
/* do something after mutation success */
},
},
});
mutate({
// also you can override the parameters given to the hook
values: [
{
name: "Product 1",
material: "Wood",
},
{
name: "Product 2",
material: "Metal",
},
],
});
```
You can think of the parameters given to the `useCreateMany` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values.
> šØ If you pass these parameters to the `mutate` function, it will override the values given to the hook.
- [#6174](https://github.com/refinedev/refine/pull/6174) [`2b73e40b0e18932f008842790065cdd386e9d270`](https://github.com/refinedev/refine/commit/2b73e40b0e18932f008842790065cdd386e9d270) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useShow`](https://refine.dev/docs/data/hooks/use-show/)'s `queryResult` is deprecated, use `query` instead. #6173
```diff
import { useShow } from '@refinedev/core';
- const { queryResult } = useShow();
+ const { query } = useShow();
```
> ⨠You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory:
>
> ```bash
> npx @refinedev/codemod@latest rename-query-and-mutation-result
> ```
- [#6164](https://github.com/refinedev/refine/pull/6164) [`8ed027eec66c41c444f168f4f52e6b51057bc498`](https://github.com/refinedev/refine/commit/8ed027eec66c41c444f168f4f52e6b51057bc498) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [`useForm`](https://refine.dev/docs/data/hooks/use-form/)'s `mutationResult` is deprecated, use `mutation` instead. #6163
```diff
import { useForm } from '@refinedev/core';
- const { mutationResult } = useForm();
+ const { mutation } = useForm();
```
> ⨠You can use `@refinedev/codemod` to automatically migrate your codebase. Simply run the following command in your project's root directory:
>
> ```bash
> npx @refinedev/codemod@latest rename-query-and-mutation-result
> ```
- [#6125](https://github.com/refinedev/refine/pull/6125) [`61aa3464df0d95c30839726f455ed43e6854730b`](https://github.com/refinedev/refine/commit/61aa3464df0d95c30839726f455ed43e6854730b) Thanks [@Dominic-Preap](https://github.com/Dominic-Preap)! - fix: update debounce behavior on `onSearch` in `useSelect`
Now debounce behavior is working correctly on `onSearch` in `useSelect` when using inside `Controller` of react-hook-form.
Resolves [#6096](https://github.com/refinedev/refine/issues/6096)
- [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: [Mutation parameters](https://refine.dev/docs/data/hooks/use-update-many/#mutation-parameters) should be given as a prop to the `useUpdateMany` hook. #6115
From now on, you can pass mutation parameters to the `useUpdateMany` hook as a prop.
Old usage of `useUpdateMany` hook:
```tsx
import { useUpdateMany } from "@refinedev/core";
const { mutate } = useUpdateMany();
mutate(
{
resource: "products",
values: {
name: "New Product",
material: "Wood",
},
ids: [1, 2, 3],
mutationMode: "optimistic",
successNotification: false,
},
{
onSuccess: () => {
/* do something after mutation success */
},
},
);
```
New usage of `useUpdateMany` hook:
```tsx
import { useUpdateMany } from "@refinedev/core";
const { mutate } = useUpdateMany({
resource: "products",
successNotification: false,
mutationMode: "optimistic",
mutationOptions: {
onSuccess: () => {
/* do something after mutation success */
},
},
});
mutate({
ids: [1, 2, 3],
values: {
name: "New Product",
material: "Wood",
},
// also you can override the parameters given to the hook
});
```
You can think of the parameters given to the `useUpdateMany` hook as default values, while the parameters given to the `mutate` function are the values used for that specific mutation or dynamic values.
> šØ If you pass these parameters to the `mutate` function, it will override the values given to the hook.
### Patch Changes
- [#6185](https://github.com/refinedev/refine/pull/6185) [`603c73eb7d376fc2357a577f5921f844a8f444e4`](https://github.com/refinedev/refine/commit/603c73eb7d376fc2357a577f5921f844a8f444e4) Thanks [@aliemir](https://github.com/aliemir)! - Bump `@refinedev/devtools-internal` dependency to reflect the latest changes in the Refine Devtools.
- [#6224](https://github.com/refinedev/refine/pull/6224) [`81703b62bafeb01a75290b99b3869ef96d04bd94`](https://github.com/refinedev/refine/commit/81703b62bafeb01a75290b99b3869ef96d04bd94) Thanks [@WananiAdib](https://github.com/WananiAdib)! - fix(core): fixed type issue in useSelect. #6223
Previously, the types would not allow functions to be passed as props. After this change, it will be possible.
[Resolves #6223](https://github.com/refinedev/refine/issues/6223)
- [#6184](https://github.com/refinedev/refine/pull/6184) [`1f7976bd32da311367945370efccd7d9c9b102a7`](https://github.com/refinedev/refine/commit/1f7976bd32da311367945370efccd7d9c9b102a7) Thanks [@Sarfraz-droid](https://github.com/Sarfraz-droid)! - AuthPage in Next.js generates code with i18n but the folder hooks is not created. imported useTranslate from @hooks to fix the issue
- [#6116](https://github.com/refinedev/refine/pull/6116) [`7e71f12b81954fd3a59678d7fcccd7b557879a94`](https://github.com/refinedev/refine/commit/7e71f12b81954fd3a59678d7fcccd7b557879a94) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - fix: `invalidates` prop of `useUpdateMany` doesn't work. #6209
From now on, the `invalidates` prop of the `useUpdateMany` hook will work as expected.
```tsx
const { mutate } = useUpdateMany({
resource: "posts",
invalidates: ["all"], // invalidates all queries of the "posts" resource
});
mutate({ ids: [1, 2, 3], values: { title: "new title" } });
```
- [#6154](https://github.com/refinedev/refine/pull/6154) [`fa2d7a4554da2d5fb2432a011941f9c157b59aba`](https://github.com/refinedev/refine/commit/fa2d7a4554da2d5fb2432a011941f9c157b59aba) Thanks [@BatuhanW](https://github.com/BatuhanW)! - chore(devtools): bump internal devtools dependency
Bump `@refinedev/devtools-internal` version.
- Updated dependencies [[`ccddff6eba23286d4025a7301de3ebfc24b1b633`](https://github.com/refinedev/refine/commit/ccddff6eba23286d4025a7301de3ebfc24b1b633), [`603c73eb7d376fc2357a577f5921f844a8f444e4`](https://github.com/refinedev/refine/commit/603c73eb7d376fc2357a577f5921f844a8f444e4)]:
- @refinedev/devtools-internal@1.1.14
## 4.53.0
### Minor Changes
- [#6071](https://github.com/refinedev/refine/pull/6071) [`853bef97ed7baf59e74c98fc54c0ed11624fb491`](https://github.com/refinedev/refine/commit/853bef97ed7baf59e74c98fc54c0ed11624fb491) Thanks [@Dominic-Preap](https://github.com/Dominic-Preap)! - feat: add `selectedOptionsOrder` in `useSelect`
Now with `selectedOptionsOrder`, you can sort `selectedOptions` at the top of list when use `useSelect` with `defaultValue`.
Resolves [#6061](https://github.com/refinedev/refine/issues/6061)
### Patch Changes
- [#5989](https://github.com/refinedev/refine/pull/5989) [`b86648f42cd849a506e4c32d740de26b72681f72`](https://github.com/refinedev/refine/commit/b86648f42cd849a506e4c32d740de26b72681f72) Thanks [@lnikitadobrenkol](https://github.com/lnikitadobrenkol)! - chore(core): add missing types of data hooks
Added missing props and return types of data hooks.
- [#6070](https://github.com/refinedev/refine/pull/6070) [`4265ae2509f79af9dbca8d52daf5c2f1b4a50a51`](https://github.com/refinedev/refine/commit/4265ae2509f79af9dbca8d52daf5c2f1b4a50a51) Thanks [@FatimaSaleem21](https://github.com/FatimaSaleem21)! - fix(core): add unexported types in `index.tsx`
The `refinedev/core` package has many unexported types that are not accessible for use outside the package. This change aims to address this limitation by exporting those missing types.
Resolves [#6041](https://github.com/refinedev/refine/issues/6041)
- [#6064](https://github.com/refinedev/refine/pull/6064) [`b516c18b828ba8823561d0fefc4afe02b45ce332`](https://github.com/refinedev/refine/commit/b516c18b828ba8823561d0fefc4afe02b45ce332) Thanks [@aliemir](https://github.com/aliemir)! - fix(auto-save-indicator): replace reserved `key` prop with `translationKey` in <Message /> components
`<AutoSaveIndicator />` components from UI libraries have been using a `<Message />` component internally that uses a `key` prop. Since `key` is a reserved prop in React, it was causing a warning in the console. This change replaces the `key` prop with `translationKey` to avoid the warning.
Resolves [#6067](https://github.com/refinedev/ref