React Toastify Migration
Migrating from cogo-toast to react-toastify
We are transitioning from cogo-toast to react-toastify because cogo-toast no longer supports React 18 and hasn't been updated in over five years. React-toastify offers better support and ongoing maintenance, ensuring compatibility with newer React versions.
Installation
To install the specific version of react-toastify compatible with our project:
yarn add react-toastify@10.0.6 -E -WAutomated Migration
We provide a codemod script to automate part of the migration process. This script adds the ToastContainer component to the necessary files.
Prerequisites
Install jscodeshift globally if you haven't already:
npm install jscodeshift -gRunning the Codemod
Execute the codemod script:
jscodeshift -t scripts/codemods/add-react-toastify.js apps/starter/pages/_app.jsx apps/starter/.storybook/preview.js packages/console/src/admin.tsxThe script will modify these files:
apps/starter/pages/_app.jsxapps/starter/.storybook/preview.jspackages/console/src/admin.tsx
Manual Migration Steps
After running the codemod script, you'll need to manually replace instances of cogo-toast in your codebase.
1. Identify cogo-toast Usage
Look for imports like:
import cogoToast from "cogo-toast"// orimport toast from "cogo-toast"2. Replace Imports and Usage
Update your code as follows:
Before:
import cogoToast from "cogo-toast"
cogoToast.success(`Success`)After:
import { toast } from "react-toastify"
toast.success(`Success`)3. Toast Types
Replace these toast methods:
cogoToast.success()→toast.success()cogoToast.error()→toast.error()cogoToast.info()→toast.info()cogoToast.warn()→toast.warn()cogoToast.loading()→toast.loading()
Important Notes
Version Compatibility
If you plan to upgrade @vactorynext/core to version 1.0.21 or later:
- Ensure all instances of cogo-toast are replaced with react-toastify
- The newer version uses react-toastify in its source code
- Failing to update may cause compatibility issues
API Differences
Key differences between cogo-toast and react-toastify:
- react-toastify requires a
<ToastContainer />component in your app - Different positioning and styling options
- More customization options available
Reference
For more detailed examples and implementation details, refer to:
