diff --git src/bp-activity/bp-activity-filters.php src/bp-activity/bp-activity-filters.php
index c9e236b..c94dee7 100644
--- src/bp-activity/bp-activity-filters.php
+++ src/bp-activity/bp-activity-filters.php
@@ -550,6 +550,14 @@ add_filter( 'bp_get_activity_css_class', 'bp_activity_timestamp_class', 9, 1 );
  * @return array $response
  */
 function bp_activity_heartbeat_last_recorded( $response = array(), $data = array() ) {
+	if ( ! empty( $data['bp_activity_timestamps'] ) ) {
+		foreach ( (array) $data['bp_activity_timestamps'] as $activity_item ) {
+			if ( ! empty( $activity_item['since'] ) ) {
+				$response['bp_activity_refresh_items'][ $activity_item['activity_id'] ] = bp_core_time_since( (int) $activity_item['since'] );
+			}
+		}
+	}
+
 	if ( empty( $data['bp_activity_last_recorded'] ) ) {
 		return $response;
 	}
diff --git src/bp-templates/bp-legacy/js/buddypress.js src/bp-templates/bp-legacy/js/buddypress.js
index 4c5e139..0afa10a 100644
--- src/bp-templates/bp-legacy/js/buddypress.js
+++ src/bp-templates/bp-legacy/js/buddypress.js
@@ -1760,17 +1760,27 @@ jq(document).ready( function() {
 	// Set the last id to request after
 	var first_item_recorded = 0;
 	jq( document ).on( 'heartbeat-send.buddypress', function( e, data ) {
-
+		var timestamps = [];
 		first_item_recorded = 0;
 
-		// First row is default latest activity id
-		if ( jq( '#buddypress ul.activity-list li' ).first().prop( 'id' ) ) {
-			// getting the timestamp
-			timestamp = jq( '#buddypress ul.activity-list li' ).first().prop( 'class' ).match( /date-recorded-([0-9]+)/ );
+		jq( '#buddypress ul.activity-list li' ).each( function( i ) {
+			var item = this, timestamp;
+
+			timestamp = jq( item ).prop( 'class' ).match( /date-recorded-([0-9]+)/ );
 
-			if ( timestamp ) {
-				first_item_recorded = timestamp[1];
+			if ( timestamp && null !== timestamp[1] ) {
+				// First row is default latest activity id
+				if ( 0 === i ) {
+					first_item_recorded = timestamp[1];
+				}
+
+				timestamps.push( { 'activity_id': jq( item ).prop( 'id' ), 'since': timestamp[1] } );
 			}
+		} );
+
+		// Send the displayed activity timestamps
+		if ( 0 !== timestamps.length ) {
+			data.bp_activity_timestamps = timestamps;
 		}
 
 		if ( 0 === activity_last_recorded || Number( first_item_recorded ) > activity_last_recorded ) {
@@ -1789,6 +1799,13 @@ jq(document).ready( function() {
 	// Increment newest_activities and activity_last_recorded if data has been returned
 	jq( document ).on( 'heartbeat-tick', function( e, data ) {
 
+		// Refresh displayed activities time since
+		if ( data.bp_activity_refresh_items ) {
+			jq.each( data.bp_activity_refresh_items, function( activity_id, since ) {
+				jq( '#buddypress ul.activity-list li#' + activity_id + ' .activity-header .time-since' ).html( since );
+			} );
+		}
+
 		// Only proceed if we have newest activities
 		if ( ! data.bp_activity_newest_activities ) {
 			return;
