We’ve recently introduced a set of features to streamline app deployment, improving speed, control, and seamless CI/CD integration.

🚀 Promote app versions to live via CLI

With just a single CLI command, you can promote your app’s draft version to live. Easily automate your version promotion flow within your existing CI/CD pipelines.

👉 Get started with the new CLI command here

💻 Deploy client-side code to monday.com

Use the CLI to deploy client-side code to monday.com. Ideal for automating and integrating client-side deployments into your CI/CD pipeline.

👉 Learn more about the new CLI flag here

🛠️ Redesigned feature deployment UI in the Developer Center

The Developer Center now clearly shows where your app feature code is deployed and which URL the monday platform should use to access it:

  • Client-side code hosted on monday.com
  • Server-side code hosted on monday.com
  • Code hosted externally\

👉 See the new experience in our deployment guide

🌐 New SDK context field: mondayCodeHostingUrl

Apps hosted on monday code can now access their hosting URL directly from the SDK via the mondayCodeHostingUrl field in the context object..

👉 View a sample context object here

We're excited to introduce two new features to help you build more secure, transparent, and enterprise-ready apps on monday code:

  1. Control outbound communication with a network allowlist: Use a network allowlist to restrict or fully block external communication from your app. You decide which services are permitted, giving you full control over outbound traffic.
  2. Static IPs for outbound traffic: monday code now supports a set of static IP addresses for all outbound traffic. You can configure your external services to only accept requests from these IPs—ideal for working with firewalls, security groups, or IP-based authentication.

👉 Read the documentation to get started!

Apps hosted on monday code can access their region-based hosting URL directly from the app context using the SDK.

Call monday.listen('context') or monday.get('context'), and check for the new mondayCodeHostingUrl field in the returned context:

{
  "theme": "dark", // or "light" or "black"
  "subscription": { // app subscription object for marketplace app
    "plan_id": "5",
    "renewal_date": "2023-07-10T00:00:00+00:00",
    "is_trial": false,
    "billing_period": "monthly",
    "days_left": 14,
    "pricing_version": 5,
    "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
  },
  "account": {
    "id": "654646" // unique account ID
  },
  "user": {
    "id": "65464", // unique user ID
    "isAdmin": false, // or true 
    "isGuest": false, // or true 
    "isViewOnly": false, // or true
    "countryCode": "IL", // user's two-letter country code
    "currentLanguage": "en", // user's default language
    "timeFormat": "24H", // or "12H"
    "timeZoneOffset": 3 // time zone offset based on GMT
  },
  "region": "use1", // availability zone ID
  "productKind": "core",
  "app": {
    "id": 64541082, // unique app ID
    "clientId": "d5be5bbc7re646g76b9988a6ad64d780" // unique client ID
  },
  "appVersion": {
    "id": 6458043, // unique app version ID
    "name": "New App", // name of the app's current version
    "status": "draft", // or "live"
    "type": "major", // or "minor"
    "versionData": {
      "major": 1, // version number
      "minor": 0, // version number
      "patch": 0, // patch number 
      "type": "major" // or "minor"
    },
    "mondayCodeHostingUrl": "https://b325b-service-25854030-b5796b91.us.monday.app" // used only for monday code apps; specifies the region-based hosting URL for server-side code
  },
  "workspaceId": 1350535, // unique workspace ID
  "boardId": 6456619824, // unique board ID
  "boardIds": [
    6454619824 // list of connected boards
  ],
  "itemId": 64564519872, // unique item ID
  "instanceId": 65461164, // unique instance ID for the feature on the board
  "instanceType": "item_view" // feature type
}

Every app listed in the marketplace now has a dedicated Partner Page that highlights the partner's portfolio, program level, trust elements, and key performance metrics. These pages are designed to build user confidence and drive more app installs by providing greater visibility into each partner’s credibility and offerings.

No action is needed—Partner Pages are automatically created for all marketplace partners. Learn more about this new feature in our documentation!

monday workflows is a powerful platform component that enables users to automate their processes. Using the visual workflow builder, users can combine triggers, actions, and conditions to create tailored automations.

Now, with the monday apps framework, you can build apps for monday workflows using two dedicated app features: Integration for monday workflows and Custom field for monday workflows.

The Integration for monday workflows app feature allows you to develop modular, reusable blocks, such as custom triggers and actions, that users can mix and match with other blocks in the workflow builder to create flexible integration recipes.

Each block can be configured with input and output fields. These fields can either use monday's built-in types or be fully customized using the Custom field for monday workflows app feature.

Combined, these features offer a highly flexible, customizable solution for building powerful, workflow-driven integrations, helping users streamline operations and effectively automate their workflows.

Learn more about building apps for monday workflows here!

We added a new ttl parameter for storage.set requests, allowing you to specify a time-to-live (in seconds) for particular stored values. After the TTL expires, the value will be deleted and can't be retrieved.

const { version, success, error } = await storage.set(key, value, { previousVersion, shared, ttl, version });

Webhook payloads now include a new max_units field. For seat-based plans, this field returns the maximum number of seats allowed. For feature-based plans, it returns null.

{
  "type": "install",
  "data": {
    "app_id": 1000000000,
    "app_name": "Test App",
    "user_id": 2,
    "user_email": "[email protected]", // the admin who installed the app or approved the installation
    "user_name": "User 1", // the admin who installed the app or approved the installation
    "user_cluster": "other",
    "account_tier": "free",
    "account_max_users": 10000,
    "account_id": 777777,
    "account_name": "Demo Account",
    "account_slug": "test",
    "version_data": { major: 4, minor: 5, patch: 0, type: "minor", number: 16 },
    "timestamp": "2023-06-26T00:00:00.000+00:00",
    "subscription": {
      "plan_id": "5",
      "renewal_date": "2023-07-10T00:00:00+00:00",
      "is_trial": false,
      "billing_period": "monthly",
      "days_left": 14,
      "pricing_version": 5,
      "max_units": 100 // maximum number of seats allowed for seat-based plans, null for feature-based plans
    },
    "user_country": "IL"
  }
}

With the new gradual release feature, you can roll out new app versions to a select group of accounts. This enables a smoother release process, especially for critical and breaking changes, and lets you test features with a smaller audience before a full rollout.

Gradual releases are available for all monday.com apps, regardless of where they are hosted. However, this feature does not currently support workspace templates or integrations with the sentence builder features.

Learn how to set up gradual releases in our documentation!