diff --git src/bp-activity/bp-activity-functions.php src/bp-activity/bp-activity-functions.php
index 8070864..5db4612 100644
--- src/bp-activity/bp-activity-functions.php
+++ src/bp-activity/bp-activity-functions.php
@@ -1329,6 +1329,13 @@ function bp_activity_post_update( $args = '' ) {
  * @return int|bool The ID of the comment on success, otherwise false.
  */
 function bp_activity_new_comment( $args = '' ) {
+	$bp       = buddypress();
+	$errors   = new WP_Error();
+	$feedback = __( 'There was an error posting that reply, please try again.', 'buddypress' );
+
+	if ( empty( $bp->activity->errors ) ) {
+		$bp->activity->errors = array();
+	}
 
 	$r = wp_parse_args( $args, array(
 		'id'          => false,
@@ -1340,6 +1347,9 @@ function bp_activity_new_comment( $args = '' ) {
 
 	// Bail if missing necessary data
 	if ( empty( $r['content'] ) || empty( $r['user_id'] ) || empty( $r['activity_id'] ) ) {
+		$errors->add( 'missing_data', $feedback );
+		$bp->activity->errors['new_comment'] = $errors;
+
 		return false;
 	}
 
@@ -1355,6 +1365,9 @@ function bp_activity_new_comment( $args = '' ) {
 
 	// Bail if the parent activity does not exist
 	if ( empty( $activity->date_recorded ) ) {
+		$errors->add( 'missing_activity', __( 'Sorry, the update you are replying to does not exist anymore.', 'buddypress' ) );
+		$bp->activity->errors['new_comment'] = $errors;
+
 		return false;
 	}
 
@@ -1387,6 +1400,11 @@ function bp_activity_new_comment( $args = '' ) {
 
 	do_action( 'bp_activity_comment_posted', $comment_id, $r, $activity );
 
+	if ( empty( $comment_id ) ) {
+		$errors->add( 'comment_failed', $feedback );
+		$bp->activity->errors['new_comment'] = $errors;
+	}
+
 	return $comment_id;
 }
 
diff --git src/bp-templates/bp-legacy/buddypress-functions.php src/bp-templates/bp-legacy/buddypress-functions.php
index 98f7901..bfa462d 100644
--- src/bp-templates/bp-legacy/buddypress-functions.php
+++ src/bp-templates/bp-legacy/buddypress-functions.php
@@ -754,22 +754,29 @@ function bp_legacy_theme_post_update() {
  */
 function bp_legacy_theme_new_activity_comment() {
 	global $activities_template;
+	$bp = buddypress();
 
 	// Bail if not a POST action
-	if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
+	if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
 		return;
+	}
 
 	// Check the nonce
 	check_admin_referer( 'new_activity_comment', '_wpnonce_new_activity_comment' );
 
-	if ( ! is_user_logged_in() )
+	if ( ! is_user_logged_in() ) {
 		exit( '-1' );
+	}
 
-	if ( empty( $_POST['content'] ) )
-		exit( '-1<div id="message" class="error"><p>' . __( 'Please do not leave the comment area blank.', 'buddypress' ) . '</p></div>' );
+	$feedback = __( 'There was an error posting that reply, please try again.', 'buddypress' );
 
-	if ( empty( $_POST['form_id'] ) || empty( $_POST['comment_id'] ) || ! is_numeric( $_POST['form_id'] ) || ! is_numeric( $_POST['comment_id'] ) )
-		exit( '-1<div id="message" class="error"><p>' . __( 'There was an error posting that reply, please try again.', 'buddypress' ) . '</p></div>' );
+	if ( empty( $_POST['content'] ) ) {
+		exit( '-1<div id="message" class="error"><p>' . esc_html__( 'Please do not leave the comment area blank.', 'buddypress' ) . '</p></div>' );
+	}
+
+	if ( empty( $_POST['form_id'] ) || empty( $_POST['comment_id'] ) || ! is_numeric( $_POST['form_id'] ) || ! is_numeric( $_POST['comment_id'] ) ) {
+		exit( '-1<div id="message" class="error"><p>' . esc_html( $feedback ) . '</p></div>' );
+	}
 
 	$comment_id = bp_activity_new_comment( array(
 		'activity_id' => $_POST['form_id'],
@@ -777,8 +784,14 @@ function bp_legacy_theme_new_activity_comment() {
 		'parent_id'   => $_POST['comment_id'],
 	) );
 
-	if ( ! $comment_id )
-		exit( '-1<div id="message" class="error"><p>' . __( 'There was an error posting that reply, please try again.', 'buddypress' ) . '</p></div>' );
+	if ( ! $comment_id ) {
+		if ( ! empty( $bp->activity->errors['new_comment'] ) && is_wp_error( $bp->activity->errors['new_comment'] ) ) {
+			$feedback = $bp->activity->errors['new_comment']->get_error_message();
+			unset( $bp->activity->errors['new_comment'] );
+		}
+
+		exit( '-1<div id="message" class="error"><p>' . esc_html( $feedback ) . '</p></div>' );
+	}
 
 	// Load the new activity item into the $activities_template global
 	bp_has_activities( 'display_comments=stream&hide_spam=false&show_hidden=true&include=' . $comment_id );
