Notifications and equality

Subscribers run only when the operation accepts a new snapshot. The default comparison checks every public state field:

previous.status === next.status &&
  Object.is(previous.data, next.data) &&
  Object.is(previous.error, next.error) &&
  previous.isLoading === next.isLoading;

Provide isEqual to define what counts as a meaningful update:

const operation = createAsync(loadUser, {
  isEqual(previous, next) {
    return (
      previous.status === next.status &&
      previous.data?.id === next.data?.id &&
      previous.error === next.error &&
      previous.isLoading === next.isLoading
    );
  },
});

Return true to keep the current snapshot and skip subscriber notifications. Return false to publish the next snapshot.

An equality function that ignores error, loading, or status changes can intentionally hide those updates from framework consumers. Include every field your UI observes.