diff --git a/.changeset/brown-foxes-jam.md b/.changeset/brown-foxes-jam.md new file mode 100644 index 000000000..c032f6ef7 --- /dev/null +++ b/.changeset/brown-foxes-jam.md @@ -0,0 +1,5 @@ +--- +'formik': patch +--- + +Optimize Lodash imports to reduce bundle size diff --git a/packages/formik/package.json b/packages/formik/package.json index 6d001676a..36c94fece 100644 --- a/packages/formik/package.json +++ b/packages/formik/package.json @@ -33,7 +33,9 @@ "umd:main": "dist/formik.umd.production.js", "module": "dist/formik.esm.js", "typings": "dist/index.d.ts", - "files": ["dist"], + "files": [ + "dist" + ], "peerDependencies": { "react": ">=16.8.0" }, @@ -49,15 +51,20 @@ "@types/hoist-non-react-statics": "^3.3.1", "deepmerge": "^2.1.1", "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", + "lodash.clone": "^4.5.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isplainobject": "^4.0.6", + "lodash.topath": "^4.5.2", "react-fast-compare": "^2.0.1", "tiny-warning": "^1.0.2", "tslib": "^2.0.0" }, "devDependencies": { "@testing-library/react": "^14.0.0", - "@types/lodash": "^4.14.119", + "@types/lodash.clone": "^4.5.9", + "@types/lodash.clonedeep": "^4.5.9", + "@types/lodash.isplainobject": "^4.0.9", + "@types/lodash.topath": "^4.5.9", "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", "@types/warning": "^3.0.0", diff --git a/packages/formik/src/FieldArray.tsx b/packages/formik/src/FieldArray.tsx index 951a2a491..c85be4725 100644 --- a/packages/formik/src/FieldArray.tsx +++ b/packages/formik/src/FieldArray.tsx @@ -1,4 +1,4 @@ -import cloneDeep from 'lodash/cloneDeep'; +import cloneDeep from 'lodash.clonedeep'; import * as React from 'react'; import isEqual from 'react-fast-compare'; import { connect } from './connect'; diff --git a/packages/formik/src/Formik.tsx b/packages/formik/src/Formik.tsx index 80d868665..3306db01a 100755 --- a/packages/formik/src/Formik.tsx +++ b/packages/formik/src/Formik.tsx @@ -1,6 +1,6 @@ import deepmerge from 'deepmerge'; -import isPlainObject from 'lodash/isPlainObject'; -import cloneDeep from 'lodash/cloneDeep'; +import isPlainObject from 'lodash.isplainobject'; +import cloneDeep from 'lodash.clonedeep'; import * as React from 'react'; import isEqual from 'react-fast-compare'; import invariant from 'tiny-warning'; diff --git a/packages/formik/src/utils.ts b/packages/formik/src/utils.ts index e6d65b9a9..507f8c70d 100755 --- a/packages/formik/src/utils.ts +++ b/packages/formik/src/utils.ts @@ -1,5 +1,5 @@ -import clone from 'lodash/clone'; -import toPath from 'lodash/toPath'; +import clone from 'lodash.clone'; +import toPath from 'lodash.topath'; import * as React from 'react'; // Assertions diff --git a/yarn.lock b/yarn.lock index dd0a589cf..7c7134449 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3779,10 +3779,38 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.119": - version "4.14.149" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" - integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== +"@types/lodash.clone@^4.5.9": + version "4.5.9" + resolved "https://registry.yarnpkg.com/@types/lodash.clone/-/lodash.clone-4.5.9.tgz#8881f2cd6ad853e62bca997dc40e8590e348bb3c" + integrity sha512-euFSUq+8csIliszqTBSMh7eU41/by1JPQhTNa2gq3dncxC2Z6s87bbzVB9UUBdYDbV+FV5whFDGxz6hOKTY/EQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash.clonedeep@^4.5.9": + version "4.5.9" + resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz#ea48276c7cc18d080e00bb56cf965bcceb3f0fc1" + integrity sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q== + dependencies: + "@types/lodash" "*" + +"@types/lodash.isplainobject@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/lodash.isplainobject/-/lodash.isplainobject-4.0.9.tgz#3e0159c1598d96af2372151ed65f2792b61787e4" + integrity sha512-QC8nKcap5hRrbtIaPRjUMlcXXnLeayqQZPSaWJDx3xeuN17+2PW5wkmEJ4+lZgNnQRlSPzxjTYKCfV1uTnPaEg== + dependencies: + "@types/lodash" "*" + +"@types/lodash.topath@^4.5.9": + version "4.5.9" + resolved "https://registry.yarnpkg.com/@types/lodash.topath/-/lodash.topath-4.5.9.tgz#830a6636dc07dc25856641ffbbc81e08494f0b92" + integrity sha512-k51ecLw7Pu7GnE120R89XNpD0KyBt8gfgHjO03RvkBbmlC0S5tuuj8F8NYfU6E1xBi+/1AJIrLcsmzbeborBmQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" + integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== "@types/lodash@^4.14.175": version "4.14.195" @@ -10154,11 +10182,26 @@ lodash-es@^4.17.21: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -10199,6 +10242,11 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= +lodash.topath@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" + integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg== + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"