Skip to content

Registering Bridge Components ​

This guide explains how to register native bridge components in your Android application.

Basic Info ​

Overview ​

Bridge components must be registered with the BridgeNavigator to be accessible from the web layer. This registration maps a component ID to its native implementation.

Registration Process ​

1. Initialize Bridge Navigator ​

In your MainActivity.kt:

kotlin
class MainActivity : AppCompatActivity() {
    
    private lateinit var navigator: BridgeNavigator
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // Initialize the bridge navigator
        navigator = BridgeNavigator(this)
        
        // Register components
        registerComponents()
        
        // Load web content
        loadWebContent()
    }
    
    private fun registerComponents() {
        // Core components
        navigator.registerBridgeComponent("alert", AlertComponent(this))
        navigator.registerBridgeComponent("toast", ToastComponent(this))
        navigator.registerBridgeComponent("button", ButtonComponent(this))
        navigator.registerBridgeComponent("menu", MenuComponent(this))
        
        // Navigation components
        navigator.registerBridgeComponent("navigationHistory", NavigationHistoryComponent(this))
        navigator.registerBridgeComponent("navbarButton", NavbarButtonComponent(this))
        
        // Device features
        navigator.registerBridgeComponent("location", LocationComponent(this))
        navigator.registerBridgeComponent("barcodeScanner", BarcodeScannerComponent(this))
        navigator.registerBridgeComponent("imageSearch", ImageSearchComponent(this))
        navigator.registerBridgeComponent("haptic", HapticComponent(this))
        
        // Media & files
        navigator.registerBridgeComponent("downloadFile", DownloadFileComponent(this))
        navigator.registerBridgeComponent("share", ShareComponent(this))
        navigator.registerBridgeComponent("search", SearchComponent(this))
        
        // UX components
        navigator.registerBridgeComponent("theme", ThemeComponent(this))
        navigator.registerBridgeComponent("themeMode", ThemeModeComponent(this))
        navigator.registerBridgeComponent("reviewPrompt", ReviewPromptComponent(this))
        
        // Account
        navigator.registerBridgeComponent("logout", LogoutComponent(this))
        navigator.registerBridgeComponent("form", FormComponent(this))
    }
    
    private fun loadWebContent() {
        // Load your web app
        webView.loadUrl("https://your-app.com")
    }
}

2. Component ID Naming ​

Use consistent naming conventions:

CategoryPrefixExample
CoreNonealert, toast, menu
Navigationnavigation, navbarnavigationHistory, navbarButton
DeviceNonelocation, camera
MediaNoneshare, downloadFile

Required Permissions ​

Add to AndroidManifest.xml:

xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />

Web Layer Usage ​

After registration, components are accessible from JavaScript:

javascript
import { useAlert } from '@bagisto-native/react';

const MyComponent = () => {
    const { showAlert } = useAlert();
    
    showAlert({
        title: "Hello",
        message: "This is a native alert!"
    });
};

Troubleshooting ​

Component Not Found ​

If you get "component not registered" errors:

  1. Verify the component is registered in onCreate()
  2. Check the component ID matches exactly
  3. Ensure the component class is imported

Permission Errors ​

If native features don't work:

  1. Check required permissions in manifest
  2. Request runtime permissions in code
  3. Verify component is initialized before use

Next Steps ​

Released under the MIT License.