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.