Skip to content

Releases: fkhadra/react-toastify

v8.0.2

30 Aug 15:24
Compare
Choose a tag to compare

Release Notes

Bugfix

  • fix #635 Icon on safari not displayed

v8.0.1

27 Aug 21:51
Compare
Choose a tag to compare

Release notes

Features

  • toast.promise accept function that returns a promise.

v8.0.0

26 Aug 20:59
Compare
Choose a tag to compare

React-toastify has been around for 5 years(will turn five the 8 November πŸŽ‚). Since the beginning, one of the goals was to provide a library that is highly customizable and also able to work out of the box. Every major release introduces breaking changes but this is for the best πŸ‘Œ.

React toastify

πŸš€ Features

New look

Notifications of different types (toast.info, toast.error, toast.success, toast.warning) display an icon associated with the selected type. You can also notice that the progress bar color matches the type color.

v8-icons-light v8-icons-dark v8-icons-colored

Don't be afraid 😱, if you don't like those icons you can use your own or remove them. This is what it looks like in practice.

toast("Default toast behavior is untouched, no icon to display");
toast.info("Lorem ipsum dolor"); // same as toast(message, {type: "info"});
toast.error("Lorem ipsum dolor")
toast.success("Lorem ipsum dolor")
toast.warn("Lorem ipsum dolor")
toast.error("Without icon", {
  icon: false
});
toast.success("You can provide any string", {
  icon: "πŸš€"
});
// custom icons have access to the theme and the toast type
toast.success("And of course a component of your choice", {
  icon: MyIcon
});
toast.success("Even a function, given you return something that can be rendered", {
  icon: ({theme, type}) =>  <img src="url"/>
});
//Disable icons
<ToastContainer icon={false} />

Clear separation between type and theme

Prior to v8, toast.info, toast.error, etc... Would display respectively a blue notification, a red notification, etc... This is not the case anymore. There are 3 distinct themes: light, dark, colored. The theme can be applied globally or per notification.

//Set the theme globally 
<ToastContainer theme="dark" />

// define per toast
toast.info("Display a dark notification of type info");
toast.info("Display a light notification of type info", { theme: "light" });
toast.info("Display a blue notification of type info", { theme: "colored" });

This separation will benefit theming in the future.

I promise this is new, I'll tell you if you await

v8-promise

v8-promise-resolved

The library exposes a toast.promise function. Supply a promise and the notification will be updated if it resolves or fails. When the promise is pending a spinner is displayed. Again you hide it, I bet you already know how toπŸ˜†.

Let's start with a simple example

const resolveAfter3Sec = new Promise(resolve => setTimeout(resolve, 3000));
toast.promise(
    resolveAfter3Sec,
    {
      pending: 'Promise is pending',
      success: 'Promise resolved πŸ‘Œ',
      error: 'Promise rejected 🀯'
    }
)

Displaying a simple message is what you would want to do in 90% of cases. But what if the message you want to display depends on the promise response, what if you want to change some options for the error notification? Rest assured, under the hood, the library uses toast.update. Thanks to this, you have full control over each notification.

const resolveWithSomeData = new Promise(resolve => setTimeout(() => resolve("world"), 3000));
toast.promise(
    resolveAfter3Sec,
    {
      pending: 'Promise is pending',
      success: {
        render({data}){
          return `Hello ${data}`
        },
        // other options
        icon: "🟒",
      },
      error: {
        render({data}){
          // When the promise reject, data will contains the error
          return <MyErrorComponent message={data.message} />
        }
      }
    }
)

If you want to take care of each step yourself you can use toast.loading and update the notification yourself.

const id = toast.loading("Please wait...")
//do something else
toast.update(id, { render: "All is good", type: "success" });

Pass data even when you are not rendering a react component

One way to pass data to the notification was to use the context api or provide your own component. Starting v8 a data option is now available to make it easier.

toast(({data}) => `Hello ${data}`, {
  data: "world"
})

I just want to change few colors

Most of the time, users are ok with the default style, they just want to change some colors to match their brand. I think one way to improve the DX for all of us is to embrace CSS variables. That's why the library has switched to css variables!
All you want is to change the color of the progress bar? No problem

:root{
  // this is the default value below
  --toastify-color-progress-light: linear-gradient(
    to right,
    #4cd964,
    #5ac8fa,
    #007aff,
    #34aadc,
    #5856d6,
    #ff2d55
  );
}

You can find the list of all exposed variables here

πŸ’₯ Breaking changes

There are few breaking changes.

  • The separation between theme and type. The type dark has been removed
// before v8
toast("hello", {
  type: "dark"
})
// toast.TYPE.DARK is no longer available

// in v8
toast("hello", {
  theme: "dark"
})
// or
toast.dark("hello")
  • Notifications of different types are not colored by default, but they look pretty by default now πŸ˜†. You can use the colored theme to get the same behavior as the previous version
toast.info("hello", {
  theme: "colored"
})
// or apply the theme globally
<ToastContainer theme="colored" />
  • An icon is displayed by default for the notificaiton of type info, error, warning, success
// to opt-out gloablly from this behavior
<ToastContainer icon={false} />

// or per toast
toast.info("hello", {
  icon: false
});
  • the following css classes has been removed
.Toastify__toast--dark {
}
.Toastify__toast--default {
}
.Toastify__toast--info {
}
.Toastify__toast--success {
}
.Toastify__toast--warning {
}
.Toastify__toast--error {
}

βš™οΈ Chore

  • update all dependencies

That's it for this release. Thank you for using react-toastify and happy coding!

v7.0.4

23 Apr 12:38
Compare
Choose a tag to compare

Release notes

πŸ› Bugfix

  • fix #572 flex layout issue(regression)
  • fix #577 border-radius in mobile is not 0. Thanks to @mateuszpigula
  • fix #481 clearWaitingQueue not working
  • fix #589 accessibility issues with progressbar

Chore

  • bump dependencies

v7.0.3

01 Feb 13:53
Compare
Choose a tag to compare

Release notes

πŸ› Bugfix

  • fix #561 missing declaration file

v7.0.2

28 Jan 19:26
Compare
Choose a tag to compare

Release note

πŸ› Bugfix

  • fix #560 when using limit, new toast is displayed only when exit animation is done.

v7.0.1

27 Jan 10:10
Compare
Choose a tag to compare

Release notes

πŸ› Bugfix

  • Closing animation showing twice if dismiss is called after a very short time after showing the toast #559

v7.0.0

25 Jan 14:48
Compare
Choose a tag to compare

Release Notes

πŸ’₯ Breaking changes

  • dependency to react-transition-group has been removed #514
  • the duration parameter has been removed from cssTransition. Css animations just works now out of the box. Check the codesanbox below
  • the border-radius has been increased a bit

πŸš€ Features

  • Css animation just works!
    View

  • add a way to load the CSS without a CSS loader
    Edit react-toastify-inject-style

  • specify swipe direction, close #512 . Thanks to @denydavy
    Edit react-toastify-drag-y

  • bundle size reduced from ~7k to ~5k!

  • remove the dependency on prop-types.

πŸ› Bugfix

  • fix #541 apply pauseOnFocusLoss on first render
  • fix #538 react-dom should be a peer dep
  • fix #530 change id generation
  • fix #534 #483 toastId cannot be reused
  • fix #511 by removing react-transition-group
  • fix #550 Unable to select text inside inputs when a toast is open
  • fix #555 The toast timer starts after you click on the toast

v6.2.0

08 Dec 09:54
Compare
Choose a tag to compare

Release notes

πŸš€ Features

  • Add toast props to content callback #517

πŸ› Bug fixes

  • Fix notification stuck on dragging #543
  • Fix Inline styles passed to toast function disappear after a second #536

Thanks to @martinadamec, @sergeycw and @thomasjm for this release πŸ™

v6.1.0

06 Nov 08:07
Compare
Choose a tag to compare

Release notes

πŸš€ Features

  • className support functional form. Useful for things like tailwind #533
  • replace classnames by clsx

Thanks to @rhdeck and @NeoLegends for this release