Automation Apr 09, 2026

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

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 😅