Overview
Apps are comprehensive offerings that provide rich user interfaces and extensive functionality. They can implement multiple interface surfaces and deeply integrate with the platform’s capabilities.Prerequisites
Before you begin developing your app, ensure you have:- Created a developer account on the Vibing AI Developer Portal
- Installed the Vibing AI SDK and CLI tools
- Familiarized yourself with the key concepts
Project Initialization
Start by creating a new app project using the Vibing AI CLI:App Configuration
The main configuration for your app is invibe.config.js:
Core App Development
Main App Implementation
The main app implementation is insrc/index.ts:
Implementing Surface-Specific UI
Create separate modules for each interface surface:App Tab (src/surfaces/appTab.ts)
Conversation Card (src/surfaces/conversationCard.ts)
Sidebar Panel (src/surfaces/sidebarPanel.ts)
Working with Memory
Apps often need to store and retrieve data. Use the Unified Memory System for this purpose:Handling Permissions
If your app requires additional permissions at runtime:Event System Integration
Connect your app with the platform’s event system:Testing Your App
Test your app using the built-in testing utilities:tests directory:
Debugging Your App
Run your app in development mode for hot-reloading and debugging:- Open your app in the development environment
- Use the browser’s developer tools (F12 or Cmd+Option+I)
- Check the “Vibing” tab for platform-specific debugging
- View logs, memory state, and permission status
Deployment & Publication
When ready to publish your app:Best Practices
Performance
- Lazy-load resources and components
- Optimize memory usage with appropriate TTLs
- Use efficient rendering patterns
- Cache results for expensive operations
User Experience
- Follow the Vibing AI design guidelines
- Ensure accessibility compliance
- Support responsive layouts
- Provide clear feedback for user actions
- Implement progressive enhancement
Security
- Request minimal permissions
- Never store sensitive data in unprotected memory
- Validate all user inputs
- Implement secure authentication for external services
- Follow the principle of least privilege
Troubleshooting
Common Issues
Issue: App fails to render on a specific surface. Solution: Check that the surface is properly registered invibe.config.js and that your render function handles that surface.
Issue: Permission errors when accessing memory.
Solution: Verify your app has requested the necessary permissions with appropriate purpose statements and TTLs.
Issue: Block Kit components not displaying correctly.
Solution: Ensure you’re using the latest version of Block Kit and check the component documentation for proper usage.