Free plan business logic limits unclear


I don’t really understand. Since you guys changed free plan limits, I’m trying to update my project to work on a free plan, but it seems it is still hitting the limits. In the below screenshot you can see I am using only 1 event handler and no timers, and it fails. I am also using two ‘services’ scripts, but from the description, it doesn’t mention ‘services’ to be included in the limits.

Screenshot 2024-04-03 at 20.01.57

So what should be changed to conform to the free plan limits here?

Tried uploading for the App ID: F2FE78BB-5D08-44FE-B074-6E7C29B49B03
but I will also need this for 3814A184-21FB-4269-A3B8-C656C0C4BC36 too


The free plan includes up to two Cloud Code “scripts”; these include event handlers and timers. API Services are not counted towards the limit.

This app F2FE78BB-5D08-44FE-B074-6E7C29B49B03 has two event handlers. One is in the Draft mode and the other is in the Prod mode.

This app 3814A184-21FB-4269-A3B8-C656C0C4BC36 has only one event handler.


Hi Mark,

Thanks for the clarification. While I was under the assumption that the number of scripts is the issue, it’s actually the “Business Logic deployment size”.

I checked it and tried to get it under the limits of the free plan, but doing a simple npm run deploy -- --verbose --keep-zip command, it says the event handlers and service scripts already exists. I used to do this, and it used to simply override the files to the newest. Should I approach this somehow different this time?

Also, are you guys counting the size, or size on disk? Apparently, I am back on the same error now after trying a few times with the following deploy size (unpacked

Hi @Justinas_Grazulis

According to the following errors:

  • event handler already exists …
  • services already exist

it happens when in the code you are trying to deploy there are duplicates of handlers/services.
perhaps you unzip the zip file into the root directory of the project
so make sure you have no duplicates


Hi @Justinas_Grazulis

We count the “size on disk,” which means that each file, regardless of its actual size, occupies a minimum of 4096 bytes due to our system’s allocation unit. If a file is smaller than 4096 bytes, it will still be counted as occupying 4096 bytes. This approach ensures that we are consistent with how disk storage space is managed in blocks.


Thanks Vladimir,

It looks like I left the ‘deploy’ directory undeleted after the unzipping deployment zip, and it showed the “already exists” message. Thanks!

Are you able to comment on the deployment size, how it’s calculated? I don’t really have anywhere to go after 603 KB, and it still shows the same message about exceeding deployment size.


1 Like

Oh, just saw this message. Thanks for confirming.

Wow, it all in tandem makes it so annoying to make it work. I am just using two additional libs (Stripe and config). I removed any excess node_modules, even the nested dependencies used by Stripe’s lib and it still is above the limit. I HOPE I can fit to limits by removing the “config” lib, but coming from using it on free plan previously, it is really annoying to need to do this…

try to exclude all unnecessary files from the build

1 Like

Hi @vladimir-upirov ,

Thanks for the suggestion. I’m already following info from this link, but this time I tried removing the config library for further size reduction. Deployment should be now for sure under 1MB, but still says it’s above the limit. I am even stripping down the nested dependencies that are similar for pre-installed libraries to save size.

Could you advise?

App id is: F2FE78BB-5D08-44FE-B074-6E7C29B49B03


could you please send us the project we will try to deploy it from our side

Hi @vladimir-upirov , just sent it you privately