Services Plugins FAQs

🐛 Weird bug: "circular reference" on AirCalendar — started out of nowhere, spreading client by client

Hey everyone, need some help figuring out what’s going on here.

What’s happening: The agenda page of my app started throwing this error on load for some clients:

Element AirCalendar Main_v2 - AAF Property contains circular reference to this element
Tried to update an autorun while it was already updating, cyclic

The error appears immediately on page load and keeps repeating every 2-3 seconds in the console.

What makes this weird:

  • Works perfectly on the dev’s machine
  • Fails on the client’s machine
  • Cleared cache, incognito mode, updated Chrome — nothing fixes it
  • Doesn’t seem to be data-related (clearing localStorage didn’t help either)

What worries me the most: Last Bubble update was ~7 days ago. The problem started today, but it’s spreading client by client in a cascade — some users still have normal access, but they’re gradually losing it. This makes me think it might be something on Bubble’s end (did the update break something in the plugin?) rather than a misconfiguration in my app.

Relevant stack:

  • Bubble + AirCalendar Main_v2 plugin
  • Data source via Supabase Realtime (WebSocket)

My suspicions:

  1. The last Bubble update introduced some change in the reactive system that broke compatibility with AirCalendar
  2. The plugin has a property AAF that’s somehow becoming self-referential
  3. The Supabase Realtime connection might be triggering an update cycle in the element

Has anyone seen this kind of gradual cascade pattern before? Could it really be tied to the Bubble update? Any experience with AirCalendar behaving like this?

Hello @williamkorkschmitt ,

We actually documented this exact class of error (Recursion / “Property contains circular reference”). The typical cause is when the plugin element references its own state inside its own Conditional tab, which creates a self-referential loop. (link)

Recommended approach is to break the dependency chain: move whatever logic you’re driving from the calendar’s state into a separate custom state (on any element), set that state via a workflow/event, then use that custom state for the conditions instead of the calendar’s own states.

In your case, I’d inspect AirCalendar Main_v2’s Conditional tab and any dynamic properties/workflows that read a calendar state and then write back into the calendar (directly or indirectly). Websocket/Realtime updates can amplify the issue by constantly re-triggering the reactive evaluation.

Best regards,
Egor Smorodinov,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3