Index: src/bp-members/bp-members-functions.php
===================================================================
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -2020,9 +2020,6 @@
 
 			bp_delete_user_meta( $user_id, 'activation_key' );
 
-			$member = get_userdata( $user_id );
-			$member->set_role( get_option('default_role') );
-
 			$user_already_created = true;
 
 		} else {
@@ -2144,6 +2141,33 @@
 	return $user_id;
 }
 
+/**
+ * Add default WordPress role for new signups on the BP root blog.
+ *
+ * @since 3.0.0
+ *
+ * @param int $user_id The user ID to add the default role for.
+ */
+function bp_members_add_role_after_activation( $user_id ) {
+	if ( ! is_numeric( $user_id ) ) {
+		return;
+	}
+
+	// Get default role to add.
+	$role = bp_get_option( 'default_role' );
+
+	// Multisite.
+	if ( is_multisite() && ! is_user_member_of_blog( $user_id, bp_get_root_blog_id() ) ) {
+		add_user_to_blog( bp_get_root_blog_id(), $user_id, $role );
+
+	// Single-site.
+	} elseif ( ! is_multisite() ) {
+		$member = get_userdata( $user_id );
+		$member->set_role( $role );
+	}
+}
+add_action( 'bp_core_activated_user', 'bp_members_add_role_after_activation', 1 );
+
 /**
  * Migrate signups from pre-2.0 configuration to wp_signups.
  *
Index: tests/phpunit/testcases/members/functions.php
===================================================================
--- tests/phpunit/testcases/members/functions.php
+++ tests/phpunit/testcases/members/functions.php
@@ -670,4 +670,29 @@
 			'buddypress',
 		);
 	}
+
+	/**
+	 * @group bp_core_activate_signup
+	 */
+	public function test_bp_core_activate_signup_should_add_user_role() {
+		$key = 'test';
+
+		// Create the signup.
+		$this->factory->signup->create( array(
+			'user_login'     => 'test',
+			'user_email'     => 'test@example.com',
+			'activation_key' => $key,
+			'meta' => array(
+				'field_1' => 'Foo Bar',
+				'password' => 'foobar',
+			),
+		) );
+
+		// Activate user.
+		$user_id = bp_core_activate_signup( $key );
+
+		// Assert that user has a role.
+		$user = get_userdata( $user_id );
+		$this->assertNotEmpty( $user->roles );
+	}
 }
