{"id":20699,"date":"2026-08-27T05:41:18","date_gmt":"2026-08-27T05:41:18","guid":{"rendered":"https:\/\/dianapps.com\/blog\/?p=20699"},"modified":"2026-08-27T05:41:18","modified_gmt":"2026-08-27T05:41:18","slug":"salesforce-functions-is-retired","status":"publish","type":"post","link":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/","title":{"rendered":"Salesforce Functions Is Retired: Where to Run Compute Now"},"content":{"rendered":"<p><b>Key Takeaways<\/b><span style=\"font-weight: 400;\"> :\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Salesforce Functions reached end of life on January 31, 2025, so the migration deadline has already passed.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Heroku with AppLink is the direct successor, but it is not automatically the best choice for every workload.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Batch Apex and Queueable Apex should be evaluated first, since many workloads that once needed Functions can now run within Salesforce&#8217;s asynchronous capabilities.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Heroku + AppLink is better suited to long-running processes, unsupported programming languages, and workloads that exceed Salesforce governor limits.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Heroku Connect is more appropriate when the challenge is large-scale data synchronization, rather than compute.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">External Services works well for calling existing REST APIs from Flow, while MuleSoft or another iPaaS fits broader multi-system orchestration.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Third-party serverless platforms such as AWS Lambda, Azure Functions, and Google Cloud Functions provide another option but require teams to manage more of the surrounding infrastructure.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">When migrating old Functions code, the business logic is largely portable, while the Apex invocation, deployment, and authentication layers need to change.<\/span><\/li>\n<\/ul>\n<blockquote><p><b>Quick Answer<\/b><span style=\"font-weight: 400;\">: Salesforce Functions is retired, and Heroku AppLink is its direct successor. However, the first question should be whether you actually need an external runtime. Batch Apex and Queueable Apex can handle many compute-heavy workloads without additional infrastructure. Use Heroku + AppLink for long-running or language-flexible workloads that genuinely exceed Salesforce&#8217;s limits, and consider Heroku Connect, External Services, MuleSoft, or third-party serverless platforms based on the specific workload.<\/span><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Salesforce Functions reached end of life on <\/span><b>31 January 2025<\/b><span style=\"font-weight: 400;\">. It doesn\u2019t run; this isn\u2019t a migration deadline article; that deadline passed months ago.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you\u2019re here because you found a reference to Functions in old documentation, a Stack Exchange answer, or an architecture diagram nobody has updated: it\u2019s gone, and the useful question is the one underneath it. Where do you run code that doesn\u2019t fit inside governor limits?<\/span><\/p>\n<h2><b>What Salesforce Functions Was<\/b><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20710\" src=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM.webp\" alt=\"Timeline of Salesforce Functions from announcement in December 2019, general availability October 2021, retirement announced September 2023, end of life January 2025, and Heroku AppLink as successor\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM.webp 1536w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM-1024x683.webp 1024w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM-768x512.webp 768w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM-640x427.webp 640w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_17_28-PM-400x267.webp 400w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Timeline of Salesforce Functions from announcement in December 2019, general availability October 2021, retirement announced September 2023, end of life January 2025, and Heroku AppLink as successor<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Functions &#8211; also called Salesforce Elastic Services and originally Evergreen &#8211; let you write serverless code in Java, JavaScript or TypeScript, invoke it from Apex or Flow and run it <\/span><b>outside Salesforce governor limits<\/b><span style=\"font-weight: 400;\"> on elastically scaling compute.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>The Pitch Was Genuinely Appealing<\/b><span style=\"font-weight: 400;\">: Keep your business logic close to your Salesforce data, but escape the <\/span><a href=\"https:\/\/dianapps.com\/blog\/salesforce-governor-limits\/\"><span style=\"font-weight: 400;\">Salesforce governor limits<\/span><\/a><span style=\"font-weight: 400;\"> when you needed to.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Why It Was Retired:<\/b><span style=\"font-weight: 400;\"> Salesforce hasn\u2019t published a detailed rationale, but the pattern is visible. It was generally available for barely three years, adoption stayed low, and Heroku, the technology powering it, was already a more capable product for the same job. Rather than maintain a constrained wrapper around Heroku, Salesforce pointed customers at Heroku directly.<\/span><\/li>\n<\/ul>\n<h2><b>Where to Run Compute-Heavy Work Now<\/b><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20711\" src=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM.webp\" alt=\"Six options for running compute-heavy work: async Apex, Heroku with AppLink, Heroku Connect, External Services, MuleSoft, and third-party serverless platforms\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM.webp 1536w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM-1024x683.webp 1024w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM-768x512.webp 768w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM-640x427.webp 640w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_25_50-PM-400x267.webp 400w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Six options for running compute-heavy work: async Apex, Heroku with AppLink, Heroku Connect, External Services, MuleSoft, and third-party serverless platforms<\/span><\/i><\/p>\n<div style=\"background: #EEF2FE; border: 1px solid #DBE2FB; border-radius: 14px; padding: 28px 32px; margin: 38px 0;\">\n<h4 style=\"color: #1b3fae; font-size: 22px; line-height: 1.3; font-weight: bold; margin: 0 0 10px;\"><span style=\"font-weight: 400;\"><b>Need to Move Compute Outside Salesforce?<\/b><\/span><\/h4>\n<p style=\"color: #4b5563; font-size: 16px; line-height: 1.6; margin: 0 0 22px;\"><span style=\"font-weight: 400;\">Get help deciding whether your workload belongs in Apex, Heroku AppLink, an integration platform, or another compute environment.<\/span><\/p>\n<p><a style=\"display: inline-block; background: #2563EB; color: #ffffff; text-decoration: none; font-size: 15px; font-weight: 600; padding: 13px 26px; border-radius: 8px;\" href=\"https:\/\/dianapps.com\/salesforce-development-services\">Salesforce Development Services<\/a><\/p>\n<\/div>\n<h3><b>Start with async Apex<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This is the answer more often than people expect: batch Apex resets governor limits for every chunk of 200 records, which is why it handles up to 50 million records. Queueable Apex gets 60 seconds of CPU and 12MB of heap rather than 10 seconds and 6MB.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A workload that felt like it needed Functions in 2022 frequently fits inside Batch Apex today &#8211; particularly since the platform\u2019s async capabilities have improved. It costs nothing extra, and it stays inside your existing security and deployment model.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Check this before paying for anything: the <\/span><a href=\"https:\/\/dianapps.com\/blog\/apex-programming-guide\/\"><span style=\"font-weight: 400;\">Apex programming guide<\/span><\/a><span style=\"font-weight: 400;\"> explains the async patterns that can solve many of these workloads without external compute.<\/span><\/p>\n<h3><b>Heroku with AppLink &#8211; the direct successor<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Heroku AppLink is what Salesforce now points Functions customers at, and it\u2019s a genuine upgrade rather than a sideways move. It adds multi-org connectivity and enforces Salesforce user permissions, neither of which the original Functions runtime did as cleanly.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You get any language, no governor limits, long-running processes, and invocation from Apex, Flow, or an Agentforce agent action.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">What changes versus Functions and it matters:<\/span><\/p>\n\n<table id=\"tablepress-282\" class=\"tablepress tablepress-id-282\">\n<thead>\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><\/td><th class=\"column-2\">Salesforce Functions<\/th><th class=\"column-3\">Heroku app<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Trust boundary<\/td><td class=\"column-2\">Managed by Salesforce<\/td><td class=\"column-3\">You own it - the app is internet-exposed unless you use Private Spaces<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Scaling<\/td><td class=\"column-2\">Automatic<\/td><td class=\"column-3\">Manual by default; autoscaling on some dyno types and Private Spaces<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Invocation time<\/td><td class=\"column-2\">Fixed limit<\/td><td class=\"column-3\">Can run indefinitely<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Cost<\/td><td class=\"column-2\">Bundled<\/td><td class=\"column-3\">Per-dyno, per-add-on<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Deployment<\/td><td class=\"column-2\">Salesforce metadata<\/td><td class=\"column-3\">Git push to Heroku<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-282 from cache -->\n<p><span style=\"font-weight: 400;\">The trust boundary is the one teams underestimate. A Heroku app is a separate system with its own security posture. See <\/span><a href=\"https:\/\/dianapps.com\/blog\/how-to-integrate-salesforce-with-heroku\/\"><span style=\"font-weight: 400;\">Heroku for Salesforce<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>The other three<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Heroku Connect if the real problem is data volume rather than compute &#8211; bi-directional Postgres sync.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">External Services if you just need to call an existing REST API from Flow. Import an OpenAPI spec, and it becomes a declarative action. No code, no infrastructure.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">MuleSoft or another iPaaS if the actual problem is orchestrating across several systems rather than raw computation. See <\/span><span style=\"font-weight: 400;\">Salesforce integration<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">AWS Lambda, Azure Functions or Google Cloud Functions if you want genuine serverless and are comfortable owning the integration, authentication and monitoring yourself. Usually cheapest at low volume and the most work to set up.<\/span><\/p>\n<h2><b>Choosing by Workload<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">If the workload spans several of these options, Salesforce Development Services can help design the boundary between Apex, external compute, integrations, and the Salesforce platform rather than treating every problem as a code-runtime decision.<\/span><\/p>\n\n<table id=\"tablepress-283\" class=\"tablepress tablepress-id-283\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Your workload<\/th><th class=\"column-2\">Use<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Bulk record processing, any volume<\/td><td class=\"column-2\">Batch Apex<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Moderate async work that can chain<\/td><td class=\"column-2\">Queueable Apex<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Long-running processing, minutes or hours<\/td><td class=\"column-2\">Heroku + AppLink<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Needs a language Apex doesn\u2019t support<\/td><td class=\"column-2\">Heroku + AppLink<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Heavy data sync with an external database<\/td><td class=\"column-2\">Heroku Connect<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Calling an existing REST API from Flow<\/td><td class=\"column-2\">External Services<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Orchestrating across multiple systems<\/td><td class=\"column-2\">MuleSoft or iPaaS<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Genuinely spiky, low-volume compute<\/td><td class=\"column-2\">Third-party serverless<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">Customer-facing web app<\/td><td class=\"column-2\">Heroku<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-283 from cache -->\n<div style=\"background: #EEF2FE; border: 1px solid #DBE2FB; border-radius: 14px; padding: 28px 32px; margin: 38px 0;\">\n<h4 style=\"color: #1b3fae; font-size: 22px; line-height: 1.3; font-weight: bold; margin: 0 0 10px;\"><span style=\"font-weight: 400;\"><b>Need Salesforce Engineering Expertise?<\/b><\/span><\/h4>\n<p style=\"color: #4b5563; font-size: 16px; line-height: 1.6; margin: 0 0 22px;\"><span style=\"font-weight: 400;\">Bring in Salesforce developers who can design, build, and maintain Apex, integrations, Heroku-based services, and production compute workflows.<\/span><\/p>\n<p><a style=\"display: inline-block; background: #2563EB; color: #ffffff; text-decoration: none; font-size: 15px; font-weight: 600; padding: 13px 26px; border-radius: 8px;\" href=\"https:\/\/dianapps.com\/hire-salesforce-developers\">Hire Salesforce Developers<\/a><\/p>\n<\/div>\n<h2><b>If You Still Have Functions Code<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Unlikely at this point, but if an old repository or a dormant project surfaces:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Your Apex Invocation Layer Needs Replacing:<\/b><span style=\"font-weight: 400;\"> The <\/span><span style=\"font-weight: 400;\">functions. Function<\/span><span style=\"font-weight: 400;\"> classes no longer resolve. Replace with a callout to a Heroku endpoint or invoke via AppLink.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>The Function Body Itself Is Mostly Portable:<\/b><span style=\"font-weight: 400;\"> Java, Node, and TypeScript code that did the actual work transfers to a Heroku app with modest changes &#8211; it\u2019s the wrapper and deployment model that change, not the logic.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Authentication Changes Shape:<\/b><span style=\"font-weight: 400;\"> Functions inherited context from the invoking org. A Heroku app needs explicit authentication, which AppLink handles if you use it.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Salesforce Published A Migration Repository<\/b><span style=\"font-weight: 400;\">: With sample code and Apex patterns when the retirement was announced. It\u2019s still the best starting reference if you\u2019re doing this now.<\/span><\/li>\n<\/ul>\n<h2><b>What This Should Change About How You Adopt New Products<\/b><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20712\" src=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM.webp\" alt=\"Four lessons about adopting new Salesforce products: wait for real adoption, prefer capabilities with an exit path, ask what happens if it\u2019s retired, and keep business logic separate from the runtime\" width=\"1672\" height=\"941\" srcset=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM.webp 1672w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM-1024x576.webp 1024w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM-768x432.webp 768w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM-1536x864.webp 1536w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM-640x360.webp 640w, https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-26-2026-10_28_58-PM-400x225.webp 400w\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Four lessons about adopting new Salesforce products: wait for real adoption, prefer capabilities with an exit path, ask what happens if it\u2019s retired, and keep business logic separate from the runtime<\/span><\/i><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>The Most Portable Version Of This Lesson:<\/b><span style=\"font-weight: 400;\"> Keep business logic in a service class not tangled into a proprietary invocation model. Logic that lives in a well-structured Apex service survived this retirement untouched &#8211; only the plumbing around it had to change.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">That\u2019s the same argument for the service-layer pattern we make in the <\/span><a href=\"https:\/\/dianapps.com\/blog\/apex-programming-guide\/\"><span style=\"font-weight: 400;\">Apex guide,<\/span><\/a><span style=\"font-weight: 400;\"> and it\u2019s worth more than any specific product recommendation here.<\/span><\/p>\n<h2><b>Where to Go Next<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">For the limits Functions existed to escape, see <\/span><a href=\"https:\/\/dianapps.com\/blog\/salesforce-governor-limits\/\"><span style=\"font-weight: 400;\">Salesforce governor limits<\/span><\/a><span style=\"font-weight: 400;\"> &#8211; and the async patterns in the <\/span><a href=\"https:\/\/dianapps.com\/blog\/apex-programming-guide\/\"><span style=\"font-weight: 400;\">Apex programming guide<\/span><\/a><span style=\"font-weight: 400;\"> that solve most of them.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For the successor platform, <\/span><a href=\"https:\/\/dianapps.com\/blog\/how-to-integrate-salesforce-with-heroku\/\"><span style=\"font-weight: 400;\">Heroku for Salesforce<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For integration-shaped problems rather than compute-shaped ones, <\/span><span style=\"font-weight: 400;\">Salesforce integration<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For the platform beneath all of it, <\/span><a href=\"https:\/\/dianapps.com\/blog\/salesforce-lightning-platform-guide\/\"><span style=\"font-weight: 400;\">the Salesforce Lightning Platform<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The complete <\/span><a href=\"https:\/\/dianapps.com\/blog\/salesforce-development-guide\/\"><span style=\"font-weight: 400;\">Salesforce development guide<\/span><\/a><span style=\"font-weight: 400;\"> is the hub.<\/span><\/p>\n<h2><b>When You Inherit an Architecture Nobody Documented<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Retired products are rarely the real problem. The real problem is finding out what else in your org depends on something that stopped working eighteen months ago and nobody noticed &#8211; because the process it supported was quietly worked around instead of fixed.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That\u2019s a recognisable state, and it\u2019s usually cheaper to audit than to keep discovering piecemeal.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We\u2019re a certified Salesforce Consulting Partner and mapping what\u2019s actually running in an org &#8211; versus what the documentation claims &#8211; is routine work for our team.<\/span><\/p>\n<div style=\"background: #EEF2FE; border: 1px solid #DBE2FB; border-radius: 14px; padding: 28px 32px; margin: 38px 0;\">\n<h4 style=\"color: #1b3fae; font-size: 22px; line-height: 1.3; font-weight: bold; margin: 0 0 10px;\"><span style=\"font-weight: 400;\"><b>Inherited a Salesforce Architecture Nobody Documented?<\/b><\/span><\/h4>\n<p style=\"color: #4b5563; font-size: 16px; line-height: 1.6; margin: 0 0 22px;\"><span style=\"font-weight: 400;\">We&#8217;ll map what&#8217;s actually running, identify retired dependencies, and help you determine what needs to be rebuilt, replaced, or left alone.<\/span><\/p>\n<p><a style=\"display: inline-block; background: #2563EB; color: #ffffff; text-decoration: none; font-size: 15px; font-weight: 600; padding: 13px 26px; border-radius: 8px;\" href=\"https:\/\/dianapps.com\/contact\">Talk to Our Salesforce Team<\/a><\/p>\n<\/div>\n<style>.elementor-20704 .elementor-element.elementor-element-2932a52{text-align:left;}.elementor-20704 .elementor-element.elementor-element-2932a52 > .elementor-widget-container{margin:0px 0px 0px 0px;}.elementor-20704 .elementor-element.elementor-element-0b767d1 .elementor-tab-title{border-width:1px;border-color:#00000014;}.elementor-20704 .elementor-element.elementor-element-0b767d1 .elementor-tab-content{border-width:1px;border-bottom-color:#00000014;}.elementor-20704 .elementor-element.elementor-element-0b767d1 > .elementor-widget-container{margin:0px 0px 0px 0px;}<\/style><div class=\"porto-block elementor elementor-20704\">\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-27707ca elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"27707ca\" data-element_type=\"section\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0163611\" data-id=\"0163611\" data-element_type=\"column\">\r\n\r\n\t\t\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-03a2969 elementor-widget elementor-widget-text-editor\" data-id=\"03a2969\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.14.0 - 26-06-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2932a52 elementor-widget elementor-widget-heading\" data-id=\"2932a52\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.14.0 - 26-06-2023 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-large\">FAQs <\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b767d1 elementor-widget elementor-widget-toggle\" data-id=\"0b767d1\" data-element_type=\"widget\" data-widget_type=\"toggle.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.14.0 - 26-06-2023 *\/\n.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d5d8dc;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{-webkit-margin-start:-5px;margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d5d8dc;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-con-inner>.elementor-widget-toggle,.e-con>.elementor-widget-toggle{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}<\/style>\t\t<div class=\"elementor-toggle\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1201\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-1201\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Is Salesforce Functions still available?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1201\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-1201\"><p><span style=\"font-weight: 400;\">No,\u00a0Salesforce Functions, also known as Salesforce Elastic Services, reached end of life on 31 January 2025 and no longer runs in any org. It was announced as \u201cEvergreen\u201d at Dreamforce 2019 and became generally available in October 2021.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1202\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-1202\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What replaced Salesforce Functions?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1202\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-1202\"><p><span style=\"font-weight: 400;\">Heroku and specifically Heroku AppLink, which Salesforce points former Functions customers toward. AppLink adds multi-org connectivity and enforces Salesforce user permissions. For many workloads, though, Batch or Queueable Apex is sufficient and costs nothing extra.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1203\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-1203\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Why did Salesforce retire Functions?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1203\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-1203\"><p><span style=\"font-weight: 400;\">Salesforce hasn\u2019t published a detailed rationale; the visible factors are that it was generally available for barely three years, adoption remained low, and Heroku &#8211; the technology that powered it &#8211; already offered the same capability with fewer constraints.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1204\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-1204\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Where do I run compute-heavy code in Salesforce now?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1204\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-1204\"><p><span style=\"font-weight: 400;\">Start with Batch Apex, which resets governor limits per 200-record chunk and handles up to 50 million records. If that isn\u2019t enough, Heroku with AppLink gives you any language, no governor limits, and long-running processes. Third-party serverless is an option if you\u2019ll own the integration.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1205\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"button\" aria-controls=\"elementor-tab-content-1205\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">What is Heroku AppLink?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1205\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"region\" aria-labelledby=\"elementor-tab-title-1205\"><p><span style=\"font-weight: 400;\">Heroku\u2019s integration layer for Salesforce, allowing Heroku apps to be invoked from Apex, Flow, and Agentforce agent actions. It supports multi-org connectivity and enforces Salesforce user permissions, which makes it a closer replacement for Functions than a plain Heroku app.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1206\" class=\"elementor-tab-title\" data-tab=\"6\" role=\"button\" aria-controls=\"elementor-tab-content-1206\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Was Salesforce Functions the same as Evergreen?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1206\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"6\" role=\"region\" aria-labelledby=\"elementor-tab-title-1206\"><p><span style=\"font-weight: 400;\">Yes, it was announced as \u201cEvergreen\u201d at Dreamforce 2019, then renamed Salesforce Functions before general availability. It was also referred to as Salesforce Elastic Services. Three names, one product, all retired.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1207\" class=\"elementor-tab-title\" data-tab=\"7\" role=\"button\" aria-controls=\"elementor-tab-content-1207\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Can I still find my Salesforce Functions code?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1207\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"7\" role=\"region\" aria-labelledby=\"elementor-tab-title-1207\"><p><span style=\"font-weight: 400;\">Your source repository is unaffected; the code is yours. What no longer works is the deployment target and the Apex invocation layer. The function body itself is largely portable to a Heroku app with modest changes.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h3 id=\"elementor-tab-title-1208\" class=\"elementor-tab-title\" data-tab=\"8\" role=\"button\" aria-controls=\"elementor-tab-content-1208\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Does this affect Apex or Flow?<\/a>\n\t\t\t\t\t<\/h3>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-1208\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"8\" role=\"region\" aria-labelledby=\"elementor-tab-title-1208\"><p><span style=\"font-weight: 400;\">No, Apex, Flow, and the rest of the platform are unaffected. Only orgs that specifically deployed Salesforce Functions were impacted, and adoption was limited enough that most organisations never used it at all.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<script type=\"application\/ld+json\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is Salesforce Functions still available?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">No,\\u00a0Salesforce Functions, also known as Salesforce Elastic Services, reached end of life on 31 January 2025 and no longer runs in any org. It was announced as \\u201cEvergreen\\u201d at Dreamforce 2019 and became generally available in October 2021.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"What replaced Salesforce Functions?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Heroku and specifically Heroku AppLink, which Salesforce points former Functions customers toward. AppLink adds multi-org connectivity and enforces Salesforce user permissions. For many workloads, though, Batch or Queueable Apex is sufficient and costs nothing extra.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Why did Salesforce retire Functions?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Salesforce hasn\\u2019t published a detailed rationale; the visible factors are that it was generally available for barely three years, adoption remained low, and Heroku &#8211; the technology that powered it &#8211; already offered the same capability with fewer constraints.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Where do I run compute-heavy code in Salesforce now?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Start with Batch Apex, which resets governor limits per 200-record chunk and handles up to 50 million records. If that isn\\u2019t enough, Heroku with AppLink gives you any language, no governor limits, and long-running processes. Third-party serverless is an option if you\\u2019ll own the integration.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"What is Heroku AppLink?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Heroku\\u2019s integration layer for Salesforce, allowing Heroku apps to be invoked from Apex, Flow, and Agentforce agent actions. It supports multi-org connectivity and enforces Salesforce user permissions, which makes it a closer replacement for Functions than a plain Heroku app.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Was Salesforce Functions the same as Evergreen?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Yes, it was announced as \\u201cEvergreen\\u201d at Dreamforce 2019, then renamed Salesforce Functions before general availability. It was also referred to as Salesforce Elastic Services. Three names, one product, all retired.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Can I still find my Salesforce Functions code?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">Your source repository is unaffected; the code is yours. What no longer works is the deployment target and the Apex invocation layer. The function body itself is largely portable to a Heroku app with modest changes.<\\\/span><\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Does this affect Apex or Flow?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p><span style=\\\"font-weight: 400;\\\">No, Apex, Flow, and the rest of the platform are unaffected. Only orgs that specifically deployed Salesforce Functions were impacted, and adoption was limited enough that most organisations never used it at all.<\\\/span><\\\/p>\"}}]}<\/script>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\t\t<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Key Takeaways :\u00a0 Salesforce Functions reached end of life on January 31, 2025, so the migration deadline has already passed. Heroku with AppLink is the direct successor, but it is not automatically the best choice for every workload. Batch Apex and Queueable Apex should be evaluated first, since many workloads that once needed Functions can [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":20715,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_meta-robots-noindex":"","_yoast_wpseo_meta-robots-nofollow":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-title":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-title":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_wp_applaud_exclude":false,"footnotes":""},"categories":[85],"tags":[2663,2664],"class_list":["post-20699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salesforce","tag-salesforce-functions","tag-salesforce-functions-is-retired"],"featured_image_src":{"landsacpe":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313-1140x445.webp",1140,445,true],"list":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313-463x348.webp",463,348,true],"medium":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313-300x169.webp",300,169,true],"full":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp",1536,864,false]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Salesforce Functions Retired: What Replaced It in 2026?<\/title>\n<meta name=\"description\" content=\"Salesforce Functions ended in 2025, compare Heroku AppLink, Batch Apex, Queueable Apex, MuleSoft and serverless options for compute-heavy Salesforce workloads.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Salesforce Functions Retired: What Replaced It in 2026?\" \/>\n<meta property=\"og:description\" content=\"Salesforce Functions ended in 2025, compare Heroku AppLink, Batch Apex, Queueable Apex, MuleSoft and serverless options for compute-heavy Salesforce workloads.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/\" \/>\n<meta property=\"og:site_name\" content=\"Learn About Digital Transformation &amp; Development | DianApps Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-27T05:41:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"864\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Vaibhav Sharma\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vaibhav Sharma\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Salesforce Functions Retired: What Replaced It in 2026?","description":"Salesforce Functions ended in 2025, compare Heroku AppLink, Batch Apex, Queueable Apex, MuleSoft and serverless options for compute-heavy Salesforce workloads.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/","og_locale":"en_US","og_type":"article","og_title":"Salesforce Functions Retired: What Replaced It in 2026?","og_description":"Salesforce Functions ended in 2025, compare Heroku AppLink, Batch Apex, Queueable Apex, MuleSoft and serverless options for compute-heavy Salesforce workloads.","og_url":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/","og_site_name":"Learn About Digital Transformation &amp; Development | DianApps Blog","article_published_time":"2026-08-27T05:41:18+00:00","og_image":[{"width":1536,"height":864,"url":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp","type":"image\/webp"}],"author":"Vaibhav Sharma","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Vaibhav Sharma","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#article","isPartOf":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/"},"author":{"name":"Vaibhav Sharma","@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/e0ee1e2a6cfb8681a3cc69154f8d8bcf"},"headline":"Salesforce Functions Is Retired: Where to Run Compute Now","datePublished":"2026-08-27T05:41:18+00:00","mainEntityOfPage":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/"},"wordCount":1329,"commentCount":0,"image":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#primaryimage"},"thumbnailUrl":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp","keywords":["Salesforce Functions","Salesforce Functions Is Retired"],"articleSection":["Salesforce"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/","url":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/","name":"Salesforce Functions Retired: What Replaced It in 2026?","isPartOf":{"@id":"https:\/\/dianapps.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#primaryimage"},"image":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#primaryimage"},"thumbnailUrl":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp","datePublished":"2026-08-27T05:41:18+00:00","author":{"@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/e0ee1e2a6cfb8681a3cc69154f8d8bcf"},"description":"Salesforce Functions ended in 2025, compare Heroku AppLink, Batch Apex, Queueable Apex, MuleSoft and serverless options for compute-heavy Salesforce workloads.","breadcrumb":{"@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#primaryimage","url":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp","contentUrl":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/08\/Untitled-design-2026-08-26T230600.313.webp","width":1536,"height":864,"caption":"Salesforce Functions Is Retired: Where to Run Compute Now"},{"@type":"BreadcrumbList","@id":"https:\/\/dianapps.com\/blog\/salesforce-functions-is-retired\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dianapps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Salesforce Functions Is Retired: Where to Run Compute Now"}]},{"@type":"WebSite","@id":"https:\/\/dianapps.com\/blog\/#website","url":"https:\/\/dianapps.com\/blog\/","name":"Learn About Digital Transformation &amp; Development | DianApps Blog","description":"Dianapps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dianapps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/e0ee1e2a6cfb8681a3cc69154f8d8bcf","name":"Vaibhav Sharma","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/07\/cropped-Vaibhav-Sharma-Salesforce-Specialist-96x96.jpg","url":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/07\/cropped-Vaibhav-Sharma-Salesforce-Specialist-96x96.jpg","contentUrl":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2026\/07\/cropped-Vaibhav-Sharma-Salesforce-Specialist-96x96.jpg","caption":"Vaibhav Sharma"},"description":"A Salesforce specialist with over 15 years in the field, Vaibhav Sharma has built his career at the intersection of CRM strategy and enterprise transformation. As the driving force behind Salesforce innovation at DianApps, he architects solutions across Sales Cloud, Service Cloud, and Experience Cloud that turn fragmented customer data into unified growth engines. His work spans a 360-degree perspective in BFSI, healthcare, and retail, where he's known for engineering platforms that don't just go live, they move revenue and retention numbers. Vaibhav's edge lies in reading where Salesforce is headed next, from AI-powered automation, AgentExchange to Agentforce, and translating that foresight into roadmaps enterprise leaders can act on today.","url":"https:\/\/dianapps.com\/blog\/author\/vaibhav-sharma\/"}]}},"_links":{"self":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/20699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/comments?post=20699"}],"version-history":[{"count":4,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/20699\/revisions"}],"predecessor-version":[{"id":20721,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/20699\/revisions\/20721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/media\/20715"}],"wp:attachment":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/media?parent=20699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/categories?post=20699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/tags?post=20699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}