Extension Architecture
UI extensions are loaded dynamically using the@paciolan/remote-component library, which fetches JavaScript bundles from URLs and renders them within the Meshery UI context.
Extension Points
Meshery supports five extension points defined in provider capabilities:1. Navigator Extensions
Add items to the left sidebar navigation menu.2. User Preferences Extensions
Add panels to the user preferences page.3. Account Extensions
Add items to the account dropdown menu.4. GraphQL Extensions
Extend the GraphQL schema with custom queries and mutations.5. Collaborator Extensions
Add collaboration features.Building Extension Components
Project Setup
Component Props
All extension components receive these props:Using Shared Dependencies
Extensions have access to dependencies defined inui/remote-component.config.js:
Making API Requests
Use the Meshery Server API from extensions:Using GraphQL
Deployment
1. Build Extension
2. Host Extension Bundle
Serve the bundle from your provider server:3. Update Provider Capabilities
Ensure your capabilities endpoint returns the extension URLs:Testing
Local Development
Configure Meshery for Local Testing
Best Practices
-
Performance:
- Minimize bundle size (use webpack code splitting)
- Lazy load heavy dependencies
- Implement loading states
-
Error Handling:
- Always handle API errors gracefully
- Show user-friendly error messages
- Log errors for debugging
-
Accessibility:
- Use semantic HTML
- Provide ARIA labels
- Support keyboard navigation
-
Styling:
- Use MUI theme for consistency
- Respect user’s dark/light mode preference
- Avoid hardcoded colors
-
Security:
- Validate all user inputs
- Sanitize data before rendering
- Use HTTPS for all requests
Troubleshooting
Component Not Loading
- Check browser console for CORS errors
- Verify component URL is accessible
- Check provider capabilities are loaded
- Ensure bundle exports component correctly
Dependency Errors
- Verify all dependencies are in
remote-component.config.js - Check webpack externals configuration
- Use exact import paths from config
Next Steps
Provider Plugins
Learn about provider system
Meshery Operator
Deploy operator components