# Custom JavaScript functions in Make

**URL:** <https://air.tableforums.com/t/custom-javascript-functions-in-make/405>\
**Category:** Integration Platforms\
**Created:** [March 13, 2023, 6:05pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405 "2023-03-13T18:05:25Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 13, 2023, 6:05pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/1 "2023-03-13T18:05:25Z")

</div>

Here’s something that I believe @Justin_Barrett has been waiting for!

The ability to create custom Javascript functions in Make! Some resources below:

Documentation:  
[https://www.make.com/en/help/functions/custom-functions](https://www.make.com/en/help/functions/custom-functions))

YouTube video:

[![](https://canada1.discourse-cdn.com/flex029/uploads/tableforums/original/1X/d7c2a1f85ecaaefe3959ec3b3988733b42b3fd14.jpeg "Custom Functions - Enterprise Plan Feature") ](https://www.youtube.com/watch?v=pGFRfPV7ImE)

Here’s what the CEO of Make had to say about this in [this thread](https://make.canny.io/platform-ideas/p/code-javascript-python-php):

> Thank you all for your inputs and allow me to announce that based on your feedback we have developed and introduced a new capability that is called Custom functions.
> 
> Custom functions allow you to enhance the built-in data transformation capabilities available in the scenario designer using JavaScript.
> 
> Details are to be found in our documentation: [https://www.make.com/en/help/functions/custom-functions](https://www.make.com/en/help/functions/custom-functions)
> 
> or you can check how custom functions work here:
> 
> [https://www.youtube.com/watch?v=pGFRfPV7ImE](https://www.youtube.com/watch?v=pGFRfPV7ImE)
> 
> We are looking forward to your further feedback and insights.

Hope this helps! If you’d like to hire the [best Airtable consultant](https://www.scottworld.com/airtable) to help you with anything Airtable-related, please feel free to contact me through my website: [Airtable consultant — ScottWorld](https://www.scottworld.com/airtable)

---

<div class="post-metadata">

**Author:** ![parkwestdigital](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/parkwestdigital/32/75_2.png) [@parkwestdigital](https://air.tableforums.com/u/parkwestdigital)\
**Post date:** [March 13, 2023, 6:26pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/2 "2023-03-13T18:26:11Z")

</div>

Wow, this is an amazing update! And even better implemented then Zapier’s JavaScript functions IMO. Really adds a powerful layer of robustness and just another reason why I choose Make \> Zapier 😊

---

<div class="post-metadata">

**Author:** ![Justin\_Barrett](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/justin_barrett/32/14_2.png) [@Justin\_Barrett](https://air.tableforums.com/u/Justin_Barrett)\
**Post date:** [March 13, 2023, 9:20pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/3 "2023-03-13T21:20:28Z")

</div>

Thanks for the heads up, @ScottWorld, but unfortunately it’s only available on their Enterprise plan.

---

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 13, 2023, 9:38pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/4 "2023-03-13T21:38:00Z")

</div>

Whaaaaat!?! Oh, wow, that’s really sad news. Tragic. 😭 😢 🥹

---

<div class="post-metadata">

**Author:** ![bfrench](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/bfrench/32/46_2.png) [@bfrench](https://air.tableforums.com/u/bfrench)\
**Post date:** [March 13, 2023, 10:44pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/5 "2023-03-13T22:44:59Z")

</div>

> [@ScottWorld](#):
>
> that’s really sad news. Tragic

You’re mistaken - tragic is what’s coming.

The glue factories are gunning for more than just customers thrilled by custom functions; they want most, if not all, of the no-code market. They stand to become the tail that wags the dog.

By creating massive dependencies by exploiting the sizeable shortcomings of the no-code/low-code platform movement, they will succeed in becoming the biggest lynchpin in the machinery of democratized data management. Some analysts believe this has already happened.

> [@Justin\_Barrett](#):
>
> … it’s only available on their Enterprise plan.

And we thought ransomware was despicable. Free markets can be very efficient at separating you from your cash. Choose wisely who you entrust your data flows to.

---

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 13, 2023, 10:59pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/6 "2023-03-13T22:59:42Z")

</div>

> [@bfrench](#):
>
> By creating massive dependencies by exploiting the sizeable shortcomings of the no-code/low-code platform movement, they will succeed in becoming the biggest lynchpin in the machinery of democratized data management.

You’re so right. I didn’t even see this coming. But the most important players in this new world of “no-code” are the glue factories!!

> [@bfrench](#):
>
> And we thought ransomware was despicable. Free markets can be very efficient at separating you from your cash. Choose wisely who you entrust your data flows to.

The strange thing here is that Make is so much cheaper than Zapier on all other counts, and then they decided to slap users in the face with this one.

---

<div class="post-metadata">

**Author:** ![bfrench](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/bfrench/32/46_2.png) [@bfrench](https://air.tableforums.com/u/bfrench)\
**Post date:** [March 13, 2023, 11:01pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/7 "2023-03-13T23:01:38Z")

</div>

> [@ScottWorld](#):
>
> and then they decided to slap users in the face with this one.

It might be unintentional. Perhaps they believe that only low-coding is in the enterprise wheelhouse.

---

<div class="post-metadata">

**Author:** ![Kuovonne](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/kuovonne/32/17_2.png) [@Kuovonne](https://air.tableforums.com/u/Kuovonne)\
**Post date:** [March 14, 2023, 2:37am UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/8 "2023-03-14T02:37:13Z")

</div>

Some general thoughts

- I won’t be able to try this out given that it is limited to enterprise. How likely is it that Make is trying out the feature with enterprise before giving access to everyone so that they can get a better idea of the impact on their servers and support staff? Enterprise accounts are also more likely to have access to someone who is capable of writing custom functions.

- No renaming of custom functions. This really, really surprises me. At least they are up front about this limitation and don’t bury it. I hate the idea of not being able to rename stuff. Maybe this is to protect people from themselves?

- I like the inclusion of a version history. I wish that Airtable had that. I wonder if there is a way to identify the function version in the run history of the scenario. I also wonder if there are ways to compress the history to remove versions for which there are no runs.

- I wonder how it will handle functions that uses the spread operator in its parameters in order to take an arbitrary number of inputs. My original guess would be that they would not be allowed.

Some thoughts on limitations:

- No HTTP requests and no asynchronous code. This makes sense because Make would rather that people use a no-code modules for these types of requests.

- 300 milliseconds run time. This makes Airtable’s 30 second run time / 1 second of processing time look really generous.

- exactly one return statement. This seems strange to me, but it probably makes things easier for Make behind the scenes so that there is more predictability in the top level shape of the return value, although there are no guarantees. There are also easy workarounds.

- No calling other custom functions inside custom functions. That makes reusing code harder, but given that Make probably wants these functions to be relatively short, this probably isn’t an issue. You can have partial workarounds by defining functions inside your function, and then copy/paste when reusing code.

- You can not use recursion in your custom functions. I find this surprising. Maybe it is related to the inability to call a custom function from inside a custom function? Maybe they do not trust people to write recursive functions properly? But even if people wrote recursive functions that never ended, wouldn’t the 300 millisecond run time take care of that problem?

---

<div class="post-metadata">

**Author:** ![Kuovonne](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/kuovonne/32/17_2.png) [@Kuovonne](https://air.tableforums.com/u/Kuovonne)\
**Post date:** [March 14, 2023, 2:40am UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/9 "2023-03-14T02:40:37Z")

</div>

> [@Justin\_Barrett](#):
>
> unfortunately it’s only available on their Enterprise plan.

Any idea how expensive Enterprise is?

It might make the [CustomJS](https://www.customjs.space) module look affordable.

---

<div class="post-metadata">

**Author:** ![Greg\_vonF](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/greg_vonf/32/108_2.png) [@Greg\_vonF](https://air.tableforums.com/u/Greg_vonF)\
**Post date:** [March 14, 2023, 3:44am UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/10 "2023-03-14T03:44:11Z")

</div>

> [@Kuovonne](#):
>
> It might make the [CustomJS](https://www.customjs.space) module look affordable.

That is cool! I have not noticed that module. Interestingly it runs RapidAPI at the back? 🤔

I think a separate module for JS would be much powerful than functions - It would be great to be able to run a complete node module with ability to import dependencies just like [https://pipedream.com/](https://pipedream.com/)

---

<div class="post-metadata">

**Author:** ![bfrench](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/bfrench/32/46_2.png) [@bfrench](https://air.tableforums.com/u/bfrench)\
**Post date:** [March 14, 2023, 11:38am UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/11 "2023-03-14T11:38:51Z")

</div>

> [@Kuovonne](#):
>
> 300 milliseconds run time. This makes Airtable’s 30 second run time / 1 second of processing time look really generous.

Looks can be deceiving. It would only need to run 10x faster than Airtable to maintain parity. Airtable is known (by virtue of its containerized constraints) to run exceedingly slow.

You don’t need 30 seconds to perform a task that under a microservices architecture, takes only 20ms.

---

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 14, 2023, 3:15pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/12 "2023-03-14T15:15:50Z")

</div>

> [@Kuovonne](#):
>
> Any idea how expensive Enterprise is?

Make’s Enterprise Plan starts at a minimum of $16,000 USD per year. There is no cheaper plan than that.

---

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 14, 2023, 3:19pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/13 "2023-03-14T15:19:25Z")

</div>

Some much cheaper alternatives for writing Javascript code in Make:

Make offers native support for [1Saas](https://www.1saas.co/saas-collection/javascript), which lets you write JavaScript code within your scenarios — and it lets you do a whole bunch of other [cool things](https://www.1saas.co/services), too:

> **[Services and Products](https://www.1saas.co/services)**
>
> Discover the full range of services and products offered by 1SaaS. From powerful automation tools to cutting-edge technology, we have everything you need to streamline your workflows, improve your processes, and take your business to the next level....

> **[How to use JavaScript in Make.com or n8n? Via 1SaaS API!](https://www.1saas.co/saas-collection/javascript)**
>
> It’s finally here! The easy way to use JavaScript (JS) in your Make.com scenarios and Zapier Zaps. Expand your automation with powerful JS via our pre-built API.

There is also at least one competitor to 1Saas, called [CustomJS](https://www.customjs.space/), that works natively in Make for writing JavaScript code:

> **[Run your custom js code | customjs](https://www.customjs.space)**
>
> With customJS service we enable you to execute your own JavaScript code in no-code tools like integromat or make, because this feature is unfortunately not natively supported by them.

---

<div class="post-metadata">

**Author:** ![ScottWorld](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/scottworld/32/5_2.png) [@ScottWorld](https://air.tableforums.com/u/ScottWorld)\
**Post date:** [March 14, 2023, 6:52pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/14 "2023-03-14T18:52:39Z")

</div>

> [@Kuovonne](#):
>
> Some general thoughts

This is a great list that you typed up, @Kuovonne!

You might want to consider typing up your comments in the 2 threads below, which might be the only place where Make is monitoring for feedback on these issues.

If you decide to do it, I would probably tag that Ondrej guy in your responses, so he gets an email notification of your comments:

> **[Code (JavaScript, Python, PHP) | Platform Ideas and Improvements | Make](https://make.canny.io/platform-ideas/p/code-javascript-python-php)**
>
> Allow users to leverage JS inside a module and output the values as a JSON object ------------------------- BESTPRACTICE: Amazon Lambda: Modules: https://www.

> **[Custom IML (JavaScript) functions | Platform Ideas and Improvements | Make](https://make.canny.io/platform-ideas/p/custom-iml-javascript-functions)**
>
> \------------------------------- BEST PRACTICE: Amazon Lambda: Modules: https://www.integromat.com/en/integrations/amazon-lambda Documentation: https://www.

---

<div class="post-metadata">

**Author:** ![Justin\_Barrett](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/justin_barrett/32/14_2.png) [@Justin\_Barrett](https://air.tableforums.com/u/Justin_Barrett)\
**Post date:** [March 15, 2023, 2:22am UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/15 "2023-03-15T02:22:48Z")

</div>

> [@Kuovonne](#):
>
> No HTTP requests and no asynchronous code.

Looks like this new feature wouldn’t have solved anything even if we did have an Enterprise account. Most of the Autocode endpoints that we’ve created to be called from Make are doing both of those forbidden things.

---

<div class="post-metadata">

**Author:** ![bfrench](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/bfrench/32/46_2.png) [@bfrench](https://air.tableforums.com/u/bfrench)\
**Post date:** [March 15, 2023, 12:05pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/16 "2023-03-15T12:05:23Z")

</div>

There’s something about this entire approach to taking a data integration layer and embellishing its capabilities with yet another data manipulation layer. The layers seem problematic to me and only serve to increase the angle of the slippery slope you already stepped onto by embracing the glue-factory layer.

I can’t put a finger on precisely the nature of additional risk factors from adding script runners adjacent to a glue factory, but I’d be cautious of approaches that fix the fixer. 😉

---

<div class="post-metadata">

**Author:** ![Ambroise](https://yyz1.discourse-cdn.com/flex029/user_avatar/air.tableforums.com/ambroise/32/134_2.png) [@Ambroise](https://air.tableforums.com/u/Ambroise)\
**Post date:** [March 20, 2023, 4:31pm UTC](https://air.tableforums.com/t/custom-javascript-functions-in-make/405/17 "2023-03-20T16:31:51Z")

</div>

Yeah, I love PipeDream and I really am cautious with Make, and this thread only re-enforce this sentiment.

Unrelated, but I’ve always struggled with Make to debug anything, I find their UX to be so poor. While PipeDream just “ticks”. And they have really advanced coding capabilities (and is open source).
