Index: src/bp-core/bp-core-buddybar.php
===================================================================
--- src/bp-core/bp-core-buddybar.php
+++ src/bp-core/bp-core-buddybar.php
@@ -90,10 +90,14 @@
  * Add a link to the main BuddyPress navigation.
  *
  * @since 2.4.0
- * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Core_Nav_Item object on success.
+ * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Core_Nav_Item
+ *              object on success.
+ * @since 3.3.0 Introduced $args['component_id'] parameter so developers can determine what
+ *              component is registering the nav.
  *
  * @param array|string $args {
  *     Array describing the new nav item.
+ *     @type string      $component_id            The component ID registering this nav item.
  *     @type string      $name                    Display name for the nav item.
  *     @type string      $slug                    Unique URL slug for the nav item.
  *     @type bool|string $item_css_id             Optional. 'id' attribute for the nav item. Default: the value of `$slug`.
@@ -114,6 +118,7 @@
 	$bp = buddypress();
 
 	$defaults = array(
+		'component_id'            => '',    // The component ID registering this nav item.
 		'name'                    => false, // Display name for the nav item.
 		'slug'                    => false, // URL slug for the nav item.
 		'item_css_id'             => false, // The CSS ID to apply to the HTML of the nav item.
@@ -141,6 +146,7 @@
 	}
 
 	$nav_item = array(
+		'component_id'            => $r['component_id'],
 		'name'                    => $r['name'],
 		'slug'                    => $r['slug'],
 		'link'                    => trailingslashit( bp_loggedin_user_domain() . $r['slug'] ),
@@ -342,6 +348,19 @@
 		// No subnav item has been requested in the URL, so set a new nav default.
 		if ( empty( $unfiltered_action ) ) {
 			if ( ! bp_is_current_action( $r['subnav_slug'] ) ) {
+				/*
+				 * If the screen function isn't available, attempt to find it.
+				 *
+				 * This is due to our conditional-loading code since v3.0.0.
+				 */
+				if ( ! is_callable( $r['screen_function'] ) && ! empty( $parent_nav->component_id ) ) {
+					$file = $bp->core->path . 'bp-' . $parent_nav->component_id . '/screens/' . $r['subnav_slug'] . '.php';
+					// Found the file, so require it.
+					if ( file_exists( $file ) ) {
+						require_once $file;
+					}
+				}
+
 				if ( is_callable( $r['screen_function'] ) ) {
 					add_action( 'bp_screens', $r['screen_function'], 3 );
 				}
Index: src/bp-core/classes/class-bp-component.php
===================================================================
--- src/bp-core/classes/class-bp-component.php
+++ src/bp-core/classes/class-bp-component.php
@@ -498,6 +498,9 @@
 
 		// No sub nav items without a main nav item.
 		if ( !empty( $main_nav ) ) {
+			// Always set the component ID.
+			$main_nav['component_id'] = $this->id;
+
 			bp_core_new_nav_item( $main_nav, 'members' );
 
 			// Sub nav items are not required.
