Recently completed working on a complex UI extension project for my company. While HubSpot’s GitHub repository provided useful examples for getting started, I found myself struggling once I moved beyond the basic tutorials.
Ran into several challenges that took significant time to resolve:
Implementing proper error handling and loading indicators
Building complex forms that work with HubSpot properties
Connecting third-party APIs without breaking user experience
Handling state management across different CRM sections and authentication
I understand this functionality is still in beta phase, but I’m curious if others at their companies are experimenting with it yet?
Have you discovered any solid resources or boilerplate code for advanced scenarios? The transition from basic examples to something ready for production use seemed quite challenging, particularly when working with custom object APIs.
What types of UI extensions has your team developed, and what obstacles did you encounter during development? I’m wondering whether this difficulty is typical for custom development work or if there are more effective strategies available.
Been working with HubSpot UI extensions for six months - totally get your frustrations. There’s a huge gap between their basic setup docs and what you need for actual production apps. What helped me: I reverse engineered some of HubSpot’s native components to figure out how they handle errors and state management. Built my own wrapper functions for API calls with consistent loading states and error boundaries. For auth issues - store your tokens in HubSpot’s serverless functions instead of frontend. Fixed most of my session headaches. The beta tooling is rough, especially debugging without proper dev tools. But honestly? Hit up HubSpot’s developer support directly. They were way more helpful than expected when I got stuck on custom object permissions.
Hit the same roadblocks last year building extensions for our sales team. The documentation lacks clarity, particularly for production patterns. What saved me was setting up HubSpot CLI locally and building reusable components from day one. For complex forms, I created a custom validation layer that adheres to HubSpot’s property rules, which helped me avoid debugging issues later. State persistence was a nightmare until I discovered their user preferences API to maintain context across pages. However, integrating custom objects still presents challenges. I recommend starting with standard contact and company objects first to establish your patterns, then progressing to custom objects. Although the beta limitations can be frustrating, the improvements over the past year are notable.