diff --git src/bp-core/admin/js/bp-thickbox.js src/bp-core/admin/js/bp-thickbox.js
index e69de29bb..0bafd38fa 100644
--- src/bp-core/admin/js/bp-thickbox.js
+++ src/bp-core/admin/js/bp-thickbox.js
@@ -0,0 +1,52 @@
+/**
+ * Improves the Thickbox library for BuddyPress needs.
+ *
+ * @since 10.0.0
+ */
+( function( $ ) {
+	window.bpAdjustThickbox = function( label, padding ) {
+		$( '#TB_window' ).attr( {
+							'role': 'dialog',
+							'aria-label': label
+						} )
+						.addClass( 'plugin-details-modal' )
+						.removeClass( 'thickbox-loading' );
+
+
+		if ( ! padding ) {
+			padding = 0;
+		}
+
+		$( '#TB_ajaxContent' ).prop( 'style', 'height: 100%; width: auto; padding: ' + padding + '; border: none;' );
+
+		try {
+			var tabbables = $( ':tabbable', '#TB_ajaxContent' ), lastTabbable = tabbables.last();
+
+			// Move the focus to the Modal's close button once the last Hello link was tabbed out.
+			$( '#TB_window' ).on( 'keydown', function( event ) {
+				var keyCode;
+
+				if ( event.key !== undefined ) {
+					keyCode = event.key;
+				} else {
+					// event.keyCode is deprecated.
+					keyCode = event.keyCode;
+				}
+
+				if ( 9 === keyCode && ! event.shiftKey && $( lastTabbable ).prop( 'classList' ).value === $( event.target ).prop( 'classList' ).value ) {
+					event.preventDefault();
+
+					$( '#TB_closeWindowButton' ).trigger( 'focus' );
+				}
+
+				if ( 9 === keyCode && event.shiftKey && 'TB_closeWindowButton' === $( event.target ).prop( 'id' ) ) {
+					event.preventDefault();
+
+					$( lastTabbable ).trigger( 'focus' );
+				}
+			} );
+		} catch ( error ) {
+			return;
+		}
+	};
+} ( jQuery ) );
diff --git src/bp-core/admin/js/hello.js src/bp-core/admin/js/hello.js
index 47c996579..77461a559 100644
--- src/bp-core/admin/js/hello.js
+++ src/bp-core/admin/js/hello.js
@@ -19,32 +19,7 @@
 		}
 
 		window.tb_show( 'BuddyPress', '#TB_inline?inlineId=bp-hello-container' );
-
-		$( '#TB_window' ).attr( {
-							'role': 'dialog',
-							'aria-label': bpHelloStrings.modalLabel
-						} )
-						.addClass( 'plugin-details-modal' )
-						.removeClass( 'thickbox-loading' );
-
-		$( '#TB_ajaxContent' ).prop( 'style', 'height: 100%; width: auto; padding: 0; border: none;' );
-
-		var tabbables = $( ':tabbable', '#TB_ajaxContent' ), lastTabbable = tabbables.last();
-
-		// Move the focus to the Modal's close button once the last Hello link was tabbed out.
-		$( '#TB_window' ).on( 'keydown', function( event ) {
-			if ( 9 === event.keyCode && ! event.shiftKey && $( lastTabbable ).prop( 'classList' ).value === $( event.target ).prop( 'classList' ).value ) {
-				event.preventDefault();
-
-				$( '#TB_closeWindowButton' ).focus();
-			}
-
-			if ( 9 === event.keyCode && event.shiftKey && 'TB_closeWindowButton' === $( event.target ).prop( 'id' ) ) {
-				event.preventDefault();
-
-				$( lastTabbable ).focus();
-			}
-		} );
+		window.bpAdjustThickbox( bpHelloStrings.modalLabel );
 	};
 
 	/**
diff --git src/bp-core/classes/class-bp-admin.php src/bp-core/classes/class-bp-admin.php
index 24d3678ee..0fe584430 100644
--- src/bp-core/classes/class-bp-admin.php
+++ src/bp-core/classes/class-bp-admin.php
@@ -1288,10 +1288,17 @@ class BP_Admin {
 				'footer'       => true,
 			),
 
+			// 10.0
+			'bp-thickbox' => array(
+				'file'         => "{$url}bp-thickbox{$min}.js",
+				'dependencies' => array( 'thickbox' ),
+				'footer'       => true,
+			),
+
 			// 3.0
 			'bp-hello-js' => array(
 				'file'         => "{$url}hello{$min}.js",
-				'dependencies' => array( 'thickbox', 'wp-api-request' ),
+				'dependencies' => array( 'bp-thickbox', 'wp-api-request' ),
 				'footer'       => true,
 			),
 		) );
diff --git src/bp-members/admin/js/signup-preview.js src/bp-members/admin/js/signup-preview.js
index e69de29bb..15c200ea7 100644
--- src/bp-members/admin/js/signup-preview.js
+++ src/bp-members/admin/js/signup-preview.js
@@ -0,0 +1,23 @@
+/* global bpSignupPreview */
+/**
+ * Opens a modal to preview a signup/membership request.
+ *
+ * @since 10.0.0
+ */
+( function( $ ) {
+	// Bail if not set or if Thickbox is not available.
+	if ( typeof bpSignupPreview === 'undefined' || 'function' !== typeof window.tb_show ) {
+		return;
+	}
+
+	$( function() {
+		$( '.bp-thickbox' ).on( 'click', function( e ) {
+			e.preventDefault();
+
+			var fragment = $( e.target ).prop( 'href' ).split( '#TB_inline&' )[1];
+
+			window.tb_show( 'BuddyPress', '#TB_inline?' + fragment );
+			window.bpAdjustThickbox( bpSignupPreview.modalLabel, '1em' );
+		} );
+	} );
+}( jQuery ) );
diff --git src/bp-members/bp-members-admin.php src/bp-members/bp-members-admin.php
index 1b80fe190..3aa4e01d7 100644
--- src/bp-members/bp-members-admin.php
+++ src/bp-members/bp-members-admin.php
@@ -112,3 +112,67 @@ function bp_members_type_admin_updated_messages( $messages = array() ) {
 	return $messages;
 }
 add_filter( 'term_updated_messages', 'bp_members_type_admin_updated_messages' );
+
+/**
+ * Formats xprofile field data about a signup/membership request for display.
+ *
+ * Operates recursively on arrays, which are then imploded with commas.
+ *
+ * @since 10.0.0
+ *
+ * @param string|array $value Field value.
+ */
+function bp_members_admin_format_xprofile_field_for_display( $value ) {
+	if ( is_array( $value ) ) {
+		$value = array_map( 'bp_signup_format_xprofile_field_for_display', $value );
+		$value = implode( ', ', $value );
+	} else {
+		$value = stripslashes( $value );
+		$value = esc_html( $value );
+	}
+
+	return $value;
+}
+
+/**
+ * Outputs Informations about a signup/membership request into a modal inside the Signups Admin Screen.
+ *
+ * @since 10.0.0
+ *
+ * @param array $signup_field_labels The Signup field labels.
+ * @param object|null $signup_object The signup data object.
+ */
+function bp_members_admin_preview_signup_profile_info( $signup_field_labels = array(), $signup_object = null ) {
+	if ( ! isset( $signup_object->meta ) || ! $signup_field_labels ) {
+		return;
+	}
+
+	// Init ids.
+	$profile_field_ids = array();
+
+	// Get all xprofile field IDs except field 1.
+	if ( ! empty( $signup_object->meta['profile_field_ids'] ) ) {
+		$profile_field_ids = array_flip( explode( ',', $signup_object->meta['profile_field_ids'] ) );
+		unset( $profile_field_ids[1] );
+	}
+	?>
+	<div id="signup-info-modal-<?php echo $signup_object->id; ?>" style="display:none;">
+		<h1><?php printf( '%1$s (%2$s)', esc_html( $signup_object->user_name ), esc_html( $signup_object->user_email ) ); ?></h1>
+		<h2><?php esc_html_e( 'Extended Profile Information', 'buddypress' ); ?></h2>
+
+		<table class="signup-profile-data-drawer wp-list-table widefat fixed striped">
+			<?php if ( 1 <= count( $profile_field_ids ) ): foreach ( array_keys( $profile_field_ids ) as $profile_field_id ) :
+				$field_value = isset( $signup_object->meta[ "field_{$profile_field_id}" ] ) ? $signup_object->meta[ "field_{$profile_field_id}" ] : ''; ?>
+				<tr>
+					<td class="column-fields"><?php echo esc_html( $signup_field_labels[ $profile_field_id ] ); ?></td>
+					<td><?php echo bp_members_admin_format_xprofile_field_for_display( $field_value ); ?></td>
+				</tr>
+			<?php endforeach; else:  ?>
+				<tr>
+					<td><?php esc_html_e( 'There is no additional information to display.', 'buddypress' ); ?></td>
+				</tr>
+			<?php endif; ?>
+		</table>
+	</div>
+	<?php
+}
diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index 141c545fa..9a389cdda 100644
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -2449,7 +2449,11 @@ function bp_core_signup_disable_inactive( $user = null, $username = '', $passwor
 	 * when membership requests are enabled.
 	 */
 	if ( bp_get_membership_requests_required() ) {
-		return new WP_Error( 'bp_account_not_activated', __( '<strong>Error</strong>: Your membership request has not yet been approved.', 'buddypress' ) );
+		$error_message = sprintf(
+			'<strong>%1$s</strong> %2$s',
+			esc_html_x( 'Error:', 'Warning used into the WP Login screen', 'buddypress' ),
+			esc_html_x( 'Your membership request has not yet been approved.', 'Error message used into the WP Login screen', 'buddypress' )
+		);
 	} else {
 		// Set up the feedback message.
 		$signup_id = $signup['signups'][0]->signup_id;
@@ -2464,13 +2468,23 @@ function bp_core_signup_disable_inactive( $user = null, $username = '', $passwor
 			'bp-resend-activation'
 		);
 
-		$resend_string = '<br /><br />';
-
-		/* translators: %s: the activation url */
-		$resend_string .= sprintf( __( 'If you have not received an email yet, <a href="%s">click here to resend it</a>.', 'buddypress' ), esc_url( $resend_url ) );
-
-		return new WP_Error( 'bp_account_not_activated', __( '<strong>Error</strong>: Your account has not been activated. Check your email for the activation link.', 'buddypress' ) . $resend_string );
+		$error_message = sprintf(
+			'<strong>%1$s</strong> %2$s<br /><br />%3$s',
+			esc_html_x( 'Error:', 'Warning used into the WP Login screen', 'buddypress' ),
+			esc_html_x( 'Your account has not been activated. Check your email for the activation link.', 'Error message used into the WP Login screen', 'buddypress' ),
+			sprintf(
+				/* translators: %s: the link to resend the activation email. */
+				esc_html_x( 'If you have not received an email yet, %s.', 'WP Login screen message', 'buddypress' ),
+				sprintf(
+					'<a href="%1$s">%2$s</a>',
+					esc_url( $resend_url ),
+					esc_html_x( 'click here to resend it', 'Text of the link to resend the activation email', 'buddypress' )
+				)
+			)
+		);
 	}
+
+	return new WP_Error( 'bp_account_not_activated', $error_message );
 }
 add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30, 3 );
 
@@ -3708,7 +3722,7 @@ function bp_get_members_invitation_from_request() {
  * @return bool|BP_Signup $signup Found signup, returns first found
  *                                if more than one is found.
  */
-function bp_members_get_signup_by( $field = 'activation_key', $value ) {
+function bp_members_get_signup_by( $field = 'activation_key', $value = '' ) {
 	switch ( $field ) {
 		case 'activation_key':
 		case 'user_email':
diff --git src/bp-members/bp-members-invitations.php src/bp-members/bp-members-invitations.php
index 7e95c791d..1924710cc 100644
--- src/bp-members/bp-members-invitations.php
+++ src/bp-members/bp-members-invitations.php
@@ -212,10 +212,12 @@ function bp_members_invitations_maybe_bypass_request_approval( $send, $details )
 			'invite_sent'   => 'sent'
 		)
 	);
+
 	// If pending invitations exist, send the verification mail.
 	if ( $invites ) {
 		$send = true;
 	}
+
 	return $send;
 }
 add_filter( 'bp_members_membership_requests_bypass_manual_approval', 'bp_members_invitations_maybe_bypass_request_approval', 10, 2 );
diff --git src/bp-members/bp-members-membership-requests.php src/bp-members/bp-members-membership-requests.php
index 2f217db7b..e1ab537ad 100644
--- src/bp-members/bp-members-membership-requests.php
+++ src/bp-members/bp-members-membership-requests.php
@@ -84,23 +84,26 @@ add_filter( 'bp_core_signup_send_activation_key', 'bp_members_membership_request
 function bp_members_membership_requests_notify_site_admins( $signup ) {
 
 	// Notify all site admins so the request can be handled.
-	$admins_query = new WP_User_Query( array(
-		'role'   => 'administrator',
-		'fields' => 'ids'
-	) );
-	$admin_ids   = $admins_query->get_results();
+	$admin_ids = get_users(
+		array(
+			'fields' => 'ids',
+			'role'   => 'administrator',
+		)
+	);
 
 	foreach ( $admin_ids as $admin_id ) {
 		// Trigger a BuddyPress Notification.
 		if ( bp_is_active( 'notifications' ) ) {
-			bp_notifications_add_notification( array(
-				'user_id'           => $admin_id,
-				'item_id'           => $signup->signup_id,
-				'component_name'    => buddypress()->members->id,
-				'component_action'  => 'membership_request_submitted',
-				'date_notified'     => bp_core_current_time(),
-				'is_new'            => 1,
-			) );
+			bp_notifications_add_notification(
+				array(
+					'user_id'          => $admin_id,
+					'item_id'          => $signup->signup_id,
+					'component_name'   => buddypress()->members->id,
+					'component_action' => 'membership_request_submitted',
+					'date_notified'    => bp_core_current_time(),
+					'is_new'           => 1,
+				)
+			);
 		}
 
 		// Bail if member opted out of receiving this email.
@@ -112,12 +115,17 @@ function bp_members_membership_requests_notify_site_admins( $signup ) {
 			'user_id'           => $admin_id,
 			'notification_type' => 'members-membership-request',
 		);
-		$manage_url = add_query_arg( array(
-			'mod_req'   => 1,
-			'page'      => 'bp-signups',
-			'signup_id' => $signup->signup_id,
-			'action'    => 'resend',
-		), bp_get_admin_url( 'users.php' ) );
+
+		$manage_url = add_query_arg(
+			array(
+				'mod_req'   => 1,
+				'page'      => 'bp-signups',
+				'signup_id' => $signup->signup_id,
+				'action'    => 'resend',
+			),
+			bp_get_admin_url( 'users.php' )
+		);
+
 		$args  = array(
 			'tokens' => array(
 				'admin.id'                   => $admin_id,
@@ -126,9 +134,9 @@ function bp_members_membership_requests_notify_site_admins( $signup ) {
 				'unsubscribe'                => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
 			),
 		);
+
 		bp_send_email( 'members-membership-request', (int) $admin_id, $args );
 	}
-
 }
 add_action( 'bp_members_membership_request_submitted', 'bp_members_membership_requests_notify_site_admins' );
 
@@ -146,9 +154,11 @@ function bp_members_membership_requests_send_rejection_mail( $signup_ids ) {
 			'include' => $signup_ids,
 		)
 	);
+
 	if ( empty( $signups['signups'] ) ) {
 		return;
 	}
+
 	foreach ( $signups['signups'] as $signup ) {
 		if ( ! empty( $signup->user_email ) ) {
 			bp_send_email( 'members-membership-request-rejected', $signup->user_email );
@@ -222,7 +232,7 @@ function bp_members_membership_requests_filter_signup_row_actions( $actions, $si
 
 	$resend_label = ( 0 === $signup_object->count_sent ) ? __( 'Approve Request', 'buddypress' ) : __( 'Resend Approval', 'buddypress' );
 
-	$actions['resend'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $email_link ), $resend_label );
+	$actions['resend'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $email_link ), esc_html( $resend_label ) );
 
 	// Add a link to view profile info when membership requests and xprofile are active.
 	if ( bp_is_active( 'xprofile' ) ) {
@@ -234,7 +244,7 @@ function bp_members_membership_requests_filter_signup_row_actions( $actions, $si
 			bp_get_admin_url( 'users.php' )
 		);
 
-		$actions['profile'] = sprintf( '<a href="%1$s" class="thickbox">%2$s</a>', esc_url( $profile_link ), __( 'Profile Info', 'buddypress' ) );
+		$actions['profile'] = sprintf( '<a href="%1$s" class="bp-thickbox">%2$s</a>', esc_url( $profile_link ), esc_html__( 'Profile Info', 'buddypress' ) );
 	}
 
 	return $actions;
@@ -246,11 +256,12 @@ add_filter( 'bp_members_ms_signup_row_actions', 'bp_members_membership_requests_
  *
  * @since 10.0.0
  *
- * @param array  $actions       Array of actions and corresponding links.
+ * @param array $actions Array of actions and corresponding links.
+ * @return array         List of actions and corresponding links.
  */
 function bp_members_membership_requests_filter_signup_bulk_actions( $actions ) {
 	// Rename the "email" resend option when membership requests are active.
-	$actions['resend'] = _x( 'Approve', 'Pending signup action', 'buddypress' );
+	$actions['resend'] = esc_html_x( 'Approve', 'Pending signup action', 'buddypress' );
 	return $actions;
 }
 add_filter( 'bp_members_ms_signup_bulk_actions', 'bp_members_membership_requests_filter_signup_bulk_actions' );
@@ -260,10 +271,11 @@ add_filter( 'bp_members_ms_signup_bulk_actions', 'bp_members_membership_requests
  *
  * @since 10.0.0
  *
-* @param array $value Array of columns to display.
+ * @param array $columns Array of columns to display.
+ * @return array List of columns to display.
  */
 function bp_members_membership_requests_filter_signup_table_date_sent_header( $columns ) {
-	$columns['date_sent'] = __( 'Approved', 'buddypress' );
+	$columns['date_sent'] = esc_html__( 'Approved', 'buddypress' );
 	return $columns;
 }
 add_filter( 'bp_members_signup_columns', 'bp_members_membership_requests_filter_signup_table_date_sent_header' );
@@ -276,11 +288,13 @@ add_filter( 'bp_members_ms_signup_columns', 'bp_members_membership_requests_filt
  *
  * @param string      $message "Not yet sent" message.
  * @param object|null $signup  Signup object instance.
+ * @return string              "Not yet approved" message, if needed. Unchanged message otherwise.
  */
 function bp_members_membership_requests_filter_signup_table_unsent_message( $message, $signup ) {
 	if ( 0 === $signup->count_sent ) {
-		$message = __( 'Not yet approved', 'buddypress' );
+		$message = esc_html__( 'Not yet approved', 'buddypress' );
 	}
+
 	return $message;
 }
 add_filter( 'bp_members_signup_date_sent_unsent_message', 'bp_members_membership_requests_filter_signup_table_unsent_message', 10, 2 );
@@ -288,10 +302,10 @@ add_filter( 'bp_members_ms_signup_date_sent_unsent_message', 'bp_members_members
 
 /**
  * Filter/add "Request Membership" links in the following locations:
- * BP login widget
- * sidebar register link
- * WP Toolbar
- * WP login form
+ * - BP login widget,
+ * - Sidebar register link,
+ * - WP Toolbar,
+ * - WP login form.
  *********************************************************************/
 
 /**
@@ -315,13 +329,14 @@ add_action( 'bp_login_widget_form', 'bp_members_membership_requests_add_link_to_
  * @since 10.0.0
  *
  * @param string $link The HTML code for the link to the Registration or Admin page.
+ * @return string      An empty string or the HTML code for the link to the Membership request page.
  */
 function bp_members_membership_requests_filter_sidebar_register_link( $link ) {
 	// $link should be an empty string when public registration is disabled.
 	if ( ! is_user_logged_in() && empty( $link ) ) {
-		// @TODO: How can we know what before and after tags should be?
-		$link = '<li><a href="' . esc_url( wp_registration_url() ) . '">' . __( 'Request Membership' ) . '</a><li>';
+		$link = '<a href="' . esc_url( wp_registration_url() ) . '">' . esc_html__( 'Request Membership', 'buddypress' ) . '</a>';
 	}
+
 	return $link;
 }
 add_filter( 'register', 'bp_members_membership_requests_filter_sidebar_register_link' );
@@ -341,13 +356,14 @@ function bp_members_membership_requests_add_toolbar_link( $wp_admin_bar ) {
 
 	$args = array(
 		'id'    => 'bp-request-membership',
-		'title' => __( 'Request Membership' ),
+		'title' => __( 'Request Membership', 'buddypress' ),
 		'href'  => wp_registration_url(),
 		'meta'  => array(
 			'class' => 'buddypress-request-membership',
-			'title' => __( 'Request Membership' )
+			'title' => __( 'Request Membership', 'buddypress' ),
 		),
 	);
+
 	$wp_admin_bar->add_node( $args );
 }
 add_action( 'admin_bar_menu', 'bp_members_membership_requests_add_toolbar_link', 21 );
@@ -358,8 +374,11 @@ add_action( 'admin_bar_menu', 'bp_members_membership_requests_add_toolbar_link',
  * @since 10.0.0
  *
  * @param string $link HTML link to the home URL of the current site.
+ * @return string      HTML link to the home URL of the current site and the one to request a membership.
  */
 function bp_members_membership_requests_add_link_wp_login( $link ) {
-	return $link . '&ensp;|&ensp;' . '<a href="' . esc_url( wp_registration_url() ) . '">' . __( 'Request Membership' ) . '</a>';
+	$link_separator = apply_filters( 'login_link_separator', ' | ' );
+
+	return $link . $link_separator . '<a href="' . esc_url( wp_registration_url() ) . '">' . esc_html__( 'Request Membership', 'buddypress' ) . '</a>';
 }
 add_action( 'login_site_html_link', 'bp_members_membership_requests_add_link_wp_login' );
diff --git src/bp-members/bp-members-notifications.php src/bp-members/bp-members-notifications.php
index 34c2677e9..b84a0938a 100644
--- src/bp-members/bp-members-notifications.php
+++ src/bp-members/bp-members-notifications.php
@@ -191,9 +191,9 @@ function bp_members_mark_read_accepted_invitation_notification() {
 			'is_new' => false,
 		),
 		array(
-			'user_id'           => bp_loggedin_user_id(),
-			'item_id'           => bp_displayed_user_id(),
-			'component_action'  => 'accepted_invitation',
+			'user_id'          => bp_loggedin_user_id(),
+			'item_id'          => bp_displayed_user_id(),
+			'component_action' => 'accepted_invitation',
 		)
 	);
 }
diff --git src/bp-members/classes/class-bp-members-admin.php src/bp-members/classes/class-bp-members-admin.php
index 7c352d0c1..6c94cf20c 100644
--- src/bp-members/classes/class-bp-members-admin.php
+++ src/bp-members/classes/class-bp-members-admin.php
@@ -1693,7 +1693,7 @@ class BP_Members_Admin {
 		 */
 		$allowed_actions = apply_filters( 'bp_signups_admin_allowed_actions', array( 'do_delete', 'do_activate', 'do_resend' ) );
 
-		// Prepare the display of the Community Profile screen.
+		// Prepare the display of the Signups screen.
 		if ( ! in_array( $doaction, $allowed_actions ) || ( -1 == $doaction ) ) {
 
 			if ( is_network_admin() ) {
@@ -1715,23 +1715,23 @@ class BP_Members_Admin {
 				'<p>' . __( 'Using the search form, you can find pending accounts more easily. The Username and Email fields will be included in the search.', 'buddypress' ) . '</p>'
 			) );
 
-			$signup_help_content = '<p>' . __( 'Hovering over a row in the pending accounts list will display action links that allow you to manage pending accounts. You can perform the following actions:', 'buddypress' ) . '</p>';
+			$signup_help_content = '<p>' . esc_html__( 'Hovering over a row in the pending accounts list will display action links that allow you to manage pending accounts. You can perform the following actions:', 'buddypress' ) . '</p>';
 
 			if ( bp_get_membership_requests_required() ) {
-				$signup_help_content .= '<ul><li>' . __( '"Activate" will activate the user immediately without requiring that they validate their email.', 'buddypress' ) .'</li>' .
-					'<li>' . __( '"Approve Request"/"Resend Apprival" takes you to the confirmation screen before being able to send the activation link to the desired pending request. You can only send the activation email once per day.', 'buddypress' ) . '</li>';
+				$signup_help_content .= '<ul><li>' . esc_html__( '"Activate" will activate the user immediately without requiring that they validate their email.', 'buddypress' ) .'</li>' .
+					'<li>' . esc_html__( '"Approve Request" or "Resend Approval" takes you to the confirmation screen before being able to send the activation link to the desired pending request. You can only send the activation email once per day.', 'buddypress' ) . '</li>';
 
 				if ( bp_is_active( 'xprofile' ) ) {
-					$signup_help_content .=	'<li>' . __( '"Profile Info" will display extended profile information for the request.', 'buddypress' ) . '</li>';
+					$signup_help_content .=	'<li>' . esc_html__( '"Profile Info" will display extended profile information for the request.', 'buddypress' ) . '</li>';
 				}
 
-				$signup_help_content .= '<li>' . __( '"Delete" allows you to delete a pending account from your site. You will be asked to confirm this deletion.', 'buddypress' ) . '</li></ul>';
+				$signup_help_content .= '<li>' . esc_html__( '"Delete" allows you to delete a pending account from your site. You will be asked to confirm this deletion.', 'buddypress' ) . '</li></ul>';
 			} else {
-				$signup_help_content .= '<ul><li>' . __( '"Email" takes you to the confirmation screen before being able to send the activation link to the desired pending account. You can only send the activation email once per day.', 'buddypress' ) . '</li>' .
+				$signup_help_content .= '<ul><li>' . esc_html__( '"Email" takes you to the confirmation screen before being able to send the activation link to the desired pending account. You can only send the activation email once per day.', 'buddypress' ) . '</li>' .
 					'<li>' . __( '"Delete" allows you to delete a pending account from your site. You will be asked to confirm this deletion.', 'buddypress' ) . '</li></ul>';
 			}
 
-			$signup_help_content .= '<p>' . __( 'By clicking on a Username you will be able to activate a pending account from the confirmation screen.', 'buddypress' ) . '</p>' .
+			$signup_help_content .= '<p>' . esc_html__( 'By clicking on a Username you will be able to activate a pending account from the confirmation screen.', 'buddypress' ) . '</p>' .
 				'<p>' . __( 'Bulk actions allow you to perform these 3 actions for the selected rows.', 'buddypress' ) . '</p>';
 
 			get_current_screen()->add_help_tab( array(
@@ -1742,7 +1742,7 @@ class BP_Members_Admin {
 
 			// Help panel - sidebar links.
 			get_current_screen()->set_help_sidebar(
-				'<p><strong>' . __( 'For more information:', 'buddypress' ) . '</strong></p>' .
+				'<p><strong>' . esc_html__( 'For more information:', 'buddypress' ) . '</strong></p>' .
 				'<p>' . __( '<a href="https://buddypress.org/support/">Support Forums</a>', 'buddypress' ) . '</p>'
 			);
 
@@ -1756,6 +1756,25 @@ class BP_Members_Admin {
 				'heading_list'       => __( 'Pending users list', 'buddypress' ),
 			) );
 
+			// Use thickbox to display the extended profile information.
+			if ( bp_is_active( 'xprofile' ) ) {
+				wp_enqueue_style( 'thickbox' );
+				wp_enqueue_script(
+					'bp-signup-preview',
+					$this->js_url . 'signup-preview' . bp_core_get_minified_asset_suffix() . '.js',
+					array( 'bp-thickbox', 'jquery' ),
+					bp_get_version(),
+					true
+				);
+				wp_localize_script(
+					'bp-signup-preview',
+					'bpSignupPreview',
+					array(
+						'modalLabel' => __( 'Profile info preview', 'buddypress' ),
+					)
+				);
+			}
+
 		} else {
 			if ( ! empty( $_REQUEST['signup_ids' ] ) ) {
 				$signups = wp_parse_id_list( $_REQUEST['signup_ids' ] );
@@ -2351,7 +2370,7 @@ class BP_Members_Admin {
 										$field_value = isset( $signup->meta[ "field_{$pid}" ] ) ? $signup->meta[ "field_{$pid}" ] : ''; ?>
 										<tr>
 											<td class="column-fields"><?php echo esc_html( $fdata[ $pid ] ); ?></td>
-											<td><?php echo $this->format_xprofile_field_for_display( $field_value ); ?></td>
+											<td><?php echo bp_members_admin_format_xprofile_field_for_display( $field_value ); ?></td>
 										</tr>
 
 									<?php endforeach;  ?>
@@ -2657,20 +2676,15 @@ class BP_Members_Admin {
 	 * Operates recursively on arrays, which are then imploded with commas.
 	 *
 	 * @since 2.8.0
+	 * @deprecated 10.0.0
 	 *
 	 * @param string|array $value Field value.
 	 * @return string
 	 */
 	protected function format_xprofile_field_for_display( $value ) {
-		if ( is_array( $value ) ) {
-			$value = array_map( array( $this, 'format_xprofile_field_for_display' ), $value );
-			$value = implode( ', ', $value );
-		} else {
-			$value = stripslashes( $value );
-			$value = esc_html( $value );
-		}
+		_deprecated_function( __METHOD__, '10.0.0', 'bp_members_admin_format_xprofile_field_for_display' );
 
-		return $value;
+		return bp_members_admin_format_xprofile_field_for_display( $value );
 	}
 
 	/**
diff --git src/bp-members/classes/class-bp-members-component.php src/bp-members/classes/class-bp-members-component.php
index 135fb10ca..dca58193e 100644
--- src/bp-members/classes/class-bp-members-component.php
+++ src/bp-members/classes/class-bp-members-component.php
@@ -40,7 +40,7 @@ class BP_Members_Component extends BP_Component {
 			array(
 				'adminbar_myaccount_order' => 20,
 				'search_query_arg'         => 'members_search',
-				'features'                 => array( 'invitations', 'membership_requests' )
+				'features'                 => array( 'invitations', 'membership_requests' ),
 			)
 		);
 	}
diff --git src/bp-members/classes/class-bp-members-list-table.php src/bp-members/classes/class-bp-members-list-table.php
index d9922b1fe..0dcf21d7c 100644
--- src/bp-members/classes/class-bp-members-list-table.php
+++ src/bp-members/classes/class-bp-members-list-table.php
@@ -26,6 +26,15 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 	 */
 	public $signup_counts = 0;
 
+	/**
+	 * Signup profile fields.
+	 *
+	 * @since 10.0.0
+	 *
+	 * @var array
+	 */
+	public $signup_field_labels = array();
+
 	/**
 	 * Constructor.
 	 *
@@ -113,11 +122,6 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 
 		// Reset the screen id.
 		$this->screen->id = $reset_screen_id;
-
-		// Use thickbox to display the extended profile information.
-		if ( bp_is_active( 'xprofile' ) ) {
-			add_thickbox();
-		}
 	}
 
 	/**
@@ -364,45 +368,23 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 
 		$profile_field_ids = array();
 
-		// Prefetch registration field data.
-		$fdata = array();
-		$field_groups = bp_xprofile_get_groups( array(
-			'exclude_fields'    => 1,
-			'update_meta_cache' => false,
-			'fetch_fields'      => true,
-		) );
-
-		foreach( $field_groups as $fg ) {
-			foreach( $fg->fields as $f ) {
-				$fdata[ $f->id ] = $f->name;
+		// Fetch registration field data once only.
+		if ( ! $this->signup_field_labels ) {
+			$field_groups = bp_xprofile_get_groups(
+				array(
+					'fetch_fields'       => true,
+					'signup_fields_only' => true,
+				)
+			);
+
+			foreach( $field_groups as $field_group ) {
+				foreach( $field_group->fields as $field ) {
+					$this->signup_field_labels[ $field->id ] = $field->name;
+				}
 			}
 		}
 
-		// Get all xprofile field IDs except field 1.
-		if ( ! empty( $signup_object->meta['profile_field_ids'] ) ) {
-			$profile_field_ids = array_flip( explode( ',', $signup_object->meta['profile_field_ids'] ) );
-			unset( $profile_field_ids[1] );
-		}
-		?>
-		<div id="signup-info-modal-<?php echo $signup_object->id; ?>" style="display:none;">
-			<h1><?php printf( esc_html__( '%1$s (%2$s)', 'buddypress' ), esc_html( $signup_object->user_name ), esc_html( $signup_object->user_email ) ); ?></h1>
-			<h2><?php echo esc_html__( 'Extended Profile Information', 'buddypress' ); ?></h2>
-
-			<table class="signup-profile-data-drawer wp-list-table widefat fixed striped">
-				<?php if ( 1 <= count( $profile_field_ids ) ): foreach ( $profile_field_ids as $pid => $noop ) :
-					$field_value = isset( $signup_object->meta[ "field_{$pid}" ] ) ? $signup_object->meta[ "field_{$pid}" ] : ''; ?>
-					<tr>
-						<td class="column-fields"><?php echo esc_html( $fdata[ $pid ] ); ?></td>
-						<td><?php echo $this->format_xprofile_field_for_display( $field_value ); ?></td>
-					</tr>
-				<?php endforeach; else:  ?>
-					<tr>
-						<td><?php esc_html_e( 'There is no additional information to display.', 'buddypress' ); ?></td>
-					</tr>
-				<?php endif; ?>
-			</table>
-		</div>
-		<?php
+		bp_members_admin_preview_signup_profile_info( $this->signup_field_labels, $signup_object );
 	}
 
 	/**
@@ -424,7 +406,7 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 	 * @param object|null $signup_object The signup data object.
 	 */
 	public function column_registered( $signup_object = null ) {
-		echo mysql2date( 'Y/m/d', $signup_object->registered );
+		echo mysql2date( 'Y/m/d g:i:s a', $signup_object->registered );
 	}
 
 	/**
@@ -436,7 +418,7 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 	 */
 	public function column_date_sent( $signup_object = null ) {
 		if ( $signup_object->count_sent > 0 ) {
-			echo mysql2date( 'Y/m/d', $signup_object->date_sent );
+			echo mysql2date( 'Y/m/d g:i:s a', $signup_object->date_sent );
 		} else {
 			$message = __( 'Not yet notified', 'buddypress' );
 
@@ -487,27 +469,4 @@ class BP_Members_List_Table extends WP_Users_List_Table {
 		 */
 		return apply_filters( 'bp_members_signup_custom_column', '', $column_name, $signup_object );
 	}
-
-	/**
-	 * Formats a signup's xprofile field data for display.
-	 *
-	 * Operates recursively on arrays, which are then imploded with commas.
-	 *
-	 * @since 10.0.0
-	 * @see BP_Members_Admin::format_xprofile_field_for_display()
-	 *
-	 * @param string|array $value Field value.
-	 * @return string
-	 */
-	protected function format_xprofile_field_for_display( $value ) {
-		if ( is_array( $value ) ) {
-			$value = array_map( array( $this, 'format_xprofile_field_for_display' ), $value );
-			$value = implode( ', ', $value );
-		} else {
-			$value = stripslashes( $value );
-			$value = esc_html( $value );
-		}
-
-		return $value;
-	}
 }
diff --git src/bp-members/classes/class-bp-members-ms-list-table.php src/bp-members/classes/class-bp-members-ms-list-table.php
index 662146c78..318506ae1 100644
--- src/bp-members/classes/class-bp-members-ms-list-table.php
+++ src/bp-members/classes/class-bp-members-ms-list-table.php
@@ -350,45 +350,23 @@ class BP_Members_MS_List_Table extends WP_MS_Users_List_Table {
 
 		$profile_field_ids = array();
 
-		// Prefetch registration field data.
-		$fdata = array();
-		$field_groups = bp_xprofile_get_groups( array(
-			'exclude_fields'    => 1,
-			'update_meta_cache' => false,
-			'fetch_fields'      => true,
-		) );
-
-		foreach( $field_groups as $fg ) {
-			foreach( $fg->fields as $f ) {
-				$fdata[ $f->id ] = $f->name;
+		// Fetch registration field data once only.
+		if ( ! $this->signup_field_labels ) {
+			$field_groups = bp_xprofile_get_groups(
+				array(
+					'fetch_fields'       => true,
+					'signup_fields_only' => true,
+				)
+			);
+
+			foreach( $field_groups as $field_group ) {
+				foreach( $field_group->fields as $field ) {
+					$this->signup_field_labels[ $field->id ] = $field->name;
+				}
 			}
 		}
 
-		// Get all xprofile field IDs except field 1.
-		if ( ! empty( $signup_object->meta['profile_field_ids'] ) ) {
-			$profile_field_ids = array_flip( explode( ',', $signup_object->meta['profile_field_ids'] ) );
-			unset( $profile_field_ids[1] );
-		}
-		?>
-		<div id="signup-info-modal-<?php echo $signup_object->id; ?>" style="display:none;">
-			<h1><?php printf( esc_html__( '%1$s (%2$s)', 'buddypress' ), esc_html( $signup_object->user_name ), esc_html( $signup_object->user_email ) ); ?></h1>
-			<h2><?php echo esc_html__( 'Extended Profile Information', 'buddypress' ); ?></h2>
-
-			<table class="signup-profile-data-drawer wp-list-table widefat fixed striped">
-				<?php if ( 1 <= count( $profile_field_ids ) ): foreach ( $profile_field_ids as $pid => $noop ) :
-					$field_value = isset( $signup_object->meta[ "field_{$pid}" ] ) ? $signup_object->meta[ "field_{$pid}" ] : ''; ?>
-					<tr>
-						<td class="column-fields"><?php echo esc_html( $fdata[ $pid ] ); ?></td>
-						<td><?php echo $this->format_xprofile_field_for_display( $field_value ); ?></td>
-					</tr>
-				<?php endforeach;else:  ?>
-					<tr>
-						<td><?php esc_html_e( 'There is no additional information to display.', 'buddypress' ); ?></td>
-					</tr>
-				<?php endif; ?>
-			</table>
-		</div>
-		<?php
+		bp_members_admin_preview_signup_profile_info( $this->signup_field_labels, $signup_object );
 	}
 
 	/**
@@ -489,27 +467,4 @@ class BP_Members_MS_List_Table extends WP_MS_Users_List_Table {
 		 */
 		return apply_filters( 'bp_members_ms_signup_custom_column', '', $column_name, $signup_object );
 	}
-
-	/**
-	 * Formats a signup's xprofile field data for display.
-	 *
-	 * Operates recursively on arrays, which are then imploded with commas.
-	 *
-	 * @since 10.0.0
-	 * @see BP_Members_Admin::format_xprofile_field_for_display()
-	 *
-	 * @param string|array $value Field value.
-	 * @return string
-	 */
-	protected function format_xprofile_field_for_display( $value ) {
-		if ( is_array( $value ) ) {
-			$value = array_map( array( $this, 'format_xprofile_field_for_display' ), $value );
-			$value = implode( ', ', $value );
-		} else {
-			$value = stripslashes( $value );
-			$value = esc_html( $value );
-		}
-
-		return $value;
-	}
 }
