diff --git src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
index 8aa71cf83..ac0b5a842 100644
--- src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
+++ src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
@@ -93,16 +93,7 @@
 <script type="text/html" id="tmpl-bp-messages-filters">
 	<li class="user-messages-search" role="search" data-bp-search="{{data.box}}">
 		<div class="bp-search messages-search">
-			<form action="" method="get" id="user_messages_search_form" class="bp-messages-search-form" data-bp-search="messages">
-				<label for="user_messages_search" class="bp-screen-reader-text">
-					<?php _e( 'Search Messages', 'buddypress' ); ?>
-				</label>
-				<input type="search" id="user_messages_search" placeholder="<?php echo esc_attr_x( 'Search', 'search placeholder text', 'buddypress' ); ?>"/>
-				<button type="submit" id="user_messages_search_submit">
-					<span class="dashicons dashicons-search" aria-hidden="true"></span>
-					<span class="bp-screen-reader-text"><?php echo esc_html_x( 'Search', 'button', 'buddypress' ); ?></span>
-				</button>
-			</form>
+			<?php bp_nouveau_message_search_form(); ?>
 		</div>
 	</li>
 	<li class="user-messages-bulk-actions"></li>
diff --git src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/search-form.php src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/search-form.php
index e69de29bb..bff11037c 100644
--- src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/search-form.php
+++ src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/search-form.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * BP Nouveau Messages search form template.
+ *
+ * @since 3.2.0
+ * @version 3.2.0
+ */
+?>
+<form action="" method="get" id="user_messages_search_form" class="bp-messages-search-form" data-bp-search="messages">
+	<label for="user_messages_search" class="bp-screen-reader-text">
+		<?php _e( 'Search Messages', 'buddypress' ); ?>
+	</label>
+	<input type="search" id="user_messages_search" placeholder="<?php echo esc_attr_x( 'Search', 'search placeholder text', 'buddypress' ); ?>"/>
+	<button type="submit" id="user_messages_search_submit">
+		<span class="dashicons dashicons-search" aria-hidden="true"></span>
+		<span class="bp-screen-reader-text"><?php echo esc_html_x( 'Search', 'button', 'buddypress' ); ?></span>
+	</button>
+</form>
diff --git src/bp-templates/bp-nouveau/includes/messages/functions.php src/bp-templates/bp-nouveau/includes/messages/functions.php
index 8e697cd6b..93cfaab2e 100644
--- src/bp-templates/bp-nouveau/includes/messages/functions.php
+++ src/bp-templates/bp-nouveau/includes/messages/functions.php
@@ -137,29 +137,6 @@ function bp_nouveau_messages_localize_scripts( $params = array() ) {
 	return $params;
 }
 
-/**
- * @since 3.0.0
- */
-function bp_nouveau_message_search_form() {
-	$query_arg   = bp_core_get_component_search_query_arg( 'messages' );
-	$placeholder = bp_get_search_default_text( 'messages' );
-
-	$search_form_html = '<form action="" method="get" id="search-messages-form">
-		<label for="messages_search"><input type="text" name="' . esc_attr( $query_arg ) . '" id="messages_search" placeholder="' . esc_attr( $placeholder ) . '" /></label>
-		<input type="submit" id="messages_search_submit" name="messages_search_submit" value="' . esc_attr_x( 'Search', 'button', 'buddypress' ) . '" />
-	</form>';
-
-	/**
-	 * Filters the private message component search form.
-	 *
-	 * @since 3.0.0
-	 *
-	 * @param string $search_form_html HTML markup for the message search form.
-	 */
-	echo apply_filters( 'bp_nouveau_message_search_form', $search_form_html );
-}
-add_filter( 'bp_message_search_form', 'bp_nouveau_message_search_form', 10, 1 );
-
 /**
  * @since 3.0.0
  */
diff --git src/bp-templates/bp-nouveau/includes/messages/template-tags.php src/bp-templates/bp-nouveau/includes/messages/template-tags.php
index 2176661f1..9dcc4ea64 100644
--- src/bp-templates/bp-nouveau/includes/messages/template-tags.php
+++ src/bp-templates/bp-nouveau/includes/messages/template-tags.php
@@ -61,3 +61,22 @@ function bp_nouveau_messages_member_interface() {
 	 */
 	do_action( 'bp_after_member_messages_content' );
 }
+
+/**
+ * Output the Member's messages search form.
+ *
+ * @since  3.0.0
+ * @since  3.2.0 Move the function into Template Tags and use a template part.
+ */
+function bp_nouveau_message_search_form() {
+	$search_form_html = bp_buffer_template_part( 'common/js-templates/messages/search-form', null, false );
+
+	/**
+	 * Filters the private message component search form.
+	 *
+	 * @since 2.2.0
+	 *
+	 * @param string $search_form_html HTML markup for the message search form.
+	 */
+	echo apply_filters( 'bp_message_search_form', $search_form_html );
+}
diff --git src/bp-templates/bp-nouveau/includes/template-tags.php src/bp-templates/bp-nouveau/includes/template-tags.php
index 6526378aa..fb8984546 100644
--- src/bp-templates/bp-nouveau/includes/template-tags.php
+++ src/bp-templates/bp-nouveau/includes/template-tags.php
@@ -1849,14 +1849,29 @@ function bp_nouveau_search_default_text( $text = '', $is_attr = true ) {
  * @since 3.0.0
  */
 function bp_nouveau_search_form() {
-	bp_get_template_part( 'common/search/search-form' );
+	$search_form_html = bp_buffer_template_part( 'common/search/search-form', null, false );
 
 	$objects = bp_nouveau_get_search_objects();
 	if ( empty( $objects['primary'] ) || empty( $objects['secondary'] ) ) {
+		echo $search_form_html;
 		return;
 	}
 
 	if ( 'dir' === $objects['primary'] ) {
+		/**
+		 * Filter here to edit the HTML output of the directory search form.
+		 *
+		 * NB: This will take in charge the following BP Core Components filters
+		 *     - bp_directory_members_search_form
+		 *     - bp_directory_blogs_search_form
+		 *     - bp_directory_groups_search_form
+		 *
+		 * @since 1.9.0
+		 *
+		 * @param string $search_form_html The HTML output for the directory search form.
+		 */
+		echo apply_filters( "bp_directory_{$objects['secondary']}_search_form", $search_form_html );
+
 		if ( 'activity' === $objects['secondary'] ) {
 			/**
 			 * Fires before the display of the activity syndication options.
