Why Your Zoho Creator Widget Works on Desktop but Breaks on Mobile

Author
Nam Pham
Things That Broke When I Built Widgets in Zoho Creator (Especially on Mobile)
Works perfectly on desktop… until you open the mobile app
I thought building widgets in Zoho Creator would be straightforward.
And to be fair — on desktop, it kind of is.
Everything worked:
- API calls were fine
- UI rendered correctly
- Data loaded as expected
Then I opened the mobile app.
And things started breaking in ways I didn’t expect.
This post is basically a collection of those “why is this happening?” moments.
1. Multiple API Requests = Freeze on Mobile
On desktop:
- You can fire multiple requests (Promise.all, parallel fetch, etc.)
- Everything loads fine
On mobile app:
It can freeze. Literally just hangs.
At first I thought:
- bad network?
- API too slow?
But no — it’s the way the mobile environment handles multiple concurrent requests.
What I learned:
- Avoid parallel API calls on mobile widgets
- Sequence them instead (even if slower)
- Or batch data from backend into a single API
So instead of:
Promise.all([api1(), api2(), api3()])
I now do:
await api1()await api2()await api3()
Not pretty. But stable.
2. Images Don’t Just “Work”
This one confused me a lot.
On desktop:
- Load image from URL → works
On mobile:
Image just doesn’t show
Turns out:
- You can’t just load images freely
- Especially if they are private or restricted
What actually works:
- Public image URLs
- Or route through a middleware that serves the image
So now my options are:
- Make images public (not always ideal)
- Or build a proxy API to fetch and return images
Feels a bit hacky, but that’s the constraint.
3. CORS Will Block You (More Than You Expect)
Classic problem, but easier to forget in Zoho.
When calling external APIs:
You’ll hit CORS issues if not configured properly
In Zoho Creator:
- You must define allowed domains
- Specifically in connect-src
And yes… I forgot that multiple times.
Result:
- API works in Postman
- Works in backend
- Fails in widget
The fix is simple:
- Add domain properly in Zoho settings
- Double-check environment differences (dev vs prod)
4. Desktop ≠ Mobile (Even If It Looks Like It)
This is probably the biggest mindset shift.
I used to assume:
If it works on desktop, it should work on mobile
Not true here.
Zoho Creator mobile app behaves more like:
- a constrained runtime
- with stricter limits
- and less forgiving behavior
So now I test:
- mobile first (or at least early)
- not after everything is done
Some Newer Things I’m Trying
After hitting these issues, I started adjusting how I build:
- Move more logic to backend (reduce frontend complexity)
- Aggregate APIs into one endpoint
- Use lightweight UI instead of heavy rendering
- Add loading states to avoid “feels frozen”
Also experimenting with:
- edge functions as middleware
- caching responses to reduce API calls
- simplifying widget responsibilities
Final Thought
Zoho Creator widgets are powerful — but they come with hidden constraints.
Especially on mobile:
- parallel requests can break things
- images aren’t straightforward
- CORS needs careful setup
It’s not about writing “better code”
It’s about understanding the environment you’re running in.
And honestly… I learned most of this the hard way 😅