A computing system (100, 800), comprising: user-defined functions that run in context of a web browser of a client device, the user-defined functions callable from a spreadsheet hosted in a webpage accessed via the web browser, the user-defined functions being written according to a scripting language, wherein the web browser and a backend calculation service share spreadsheet calculations of the user-defined functions; and a processor configured to execute computer-executable instructions associated with the user-defined functions; and a memory storing computer-executable components that, when executed by the processor, cause the computing system (100, 800) to perform a method comprising: rendering, via the web browser the spreadsheet hosted in the webpage of the backend calculation service; initiating from the web browser, a calculation operation at the backend calculation service, with the backend calculation service calculating as much of a calculation chain as it can perform by a calculation pass; adding the user-defined functions to a list of functions to be calculated in the web browser, as the backend calculation service encounters the user-defined functions that need to be calculated; sending back semi-calculated results to the web application in the web browser along with the list of the user-defined functions to be calculated in the web browser, once no more dependencies can be calculated by the backend calculation service; calculating the user-defined functions of the list by the web browser, wherein the web browser, via the web application, initiates calculation of each of the user-defined functions in the following order: asynchronous user-defined functions followed by synchronous user-defined functions; once all the user-defined functions are calculated, returning results to the backend calculating service, to be inserted into the calculation chain, and restarting calculation with returned values; and rendering the calculation results in the web browser. user-defined functions that run in context of a web browser of a client device, the user-defined functions callable from a spreadsheet hosted in a webpage accessed via the web browser, the user-defined functions being written according to a scripting language, wherein the web browser and a backend calculation service share spreadsheet calculations of the user-defined functions; and a processor configured to execute computer-executable instructions associated with the user-defined functions; and a memory storing computer-executable components that, when executed by the processor, cause the computing system (100, 800) to perform a method comprising: rendering, via the web browser the spreadsheet hosted in the webpage of the backend calculation service; initiating from the web browser, a calculation operation at the backend calculation service, with the backend calculation service calculating as much of a calculation chain as it can perform by a calculation pass; adding the user-defined functions to a list of functions to be calculated in the web browser, as the backend calculation service encounters the user-defined functions that need to be calculated; sending back semi-calculated results to the web application in the web browser along with the list of the user-defined functions to be calculated in the web browser, once no more dependencies can be calculated by the backend calculation service; calculating the user-defined functions of the list by the web browser, wherein the web browser, via the web application, initiates calculation of each of the user-defined functions in the following order: asynchronous user-defined functions followed by synchronous user-defined functions; once all the user-defined functions are calculated, returning results to the backend calculating service, to be inserted into the calculation chain, and restarting calculation with returned values; and rendering the calculation results in the web browser. rendering, via the web browser the spreadsheet hosted in the webpage of the backend calculation service; initiating from the web browser, a calculation operation at the backend calculation service, with the backend calculation service calculating as much of a calculation chain as it can perform by a calculation pass; adding the user-defined functions to a list of functions to be calculated in the web browser, as the backend calculation service encounters the user-defined functions that need to be calculated; sending back semi-calculated results to the web application in the web browser along with the list of the user-defined functions to be calculated in the web browser, once no more dependencies can be calculated by the backend calculation service; calculating the user-defined functions of the list by the web browser, wherein the web browser, via the web application, initiates calculation of each of the user-defined functions in the following order: asynchronous user-defined functions followed by synchronous user-defined functions; once all the user-defined functions are calculated, returning results to the backend calculating service, to be inserted into the calculation chain, and restarting calculation with returned values; and rendering the calculation results in the web browser.