ย 

Changelog

The latest releases and improvements to Knock.

Heap extension for analyzing customer engagement

Today weโ€™re adding support for sending message delivery and engagement data to Heapโ€”a digital insights platform to analyze customer engagement.

This release adds Heap alongside our existing Segment integration as a way to get data out of Knock for analyzing notification usage and engagement.

Note, to correctly analyze custom events in Heap, follow these steps to build new events.

Learn more about our Heap extension in our docs.

Fixes and improvements

  • ๐Ÿ‘€ We improved the way that event payload data shows in the variable pane.
  • ๐Ÿ‘€ We added a new onAuthenticationComplete handler to our SlackAuthButton component in the React SDK.
  • ๐Ÿ› We fixed an issue with filtering workflows in the workflow run logs view.
  • ๐Ÿ› We fixed an issue where calling the set tenant API with an invalid payload would return a 500.
  • ๐Ÿ› We fixed an issue where the workflow template gallery in the dashboard would load in an incorrect initial state.
  • ๐Ÿ› We fixed an issue where you could pass [null] as valid tokens when setting channel data for push channels.

Introducing our new command menu (cmd+k)

We've added a new way to navigate across the Knock dashboard and perform common actions through our new command menu. The command menu gives you a quick and easy way to:

  • Search and navigate to a particular workflow
  • Switch between your Knock environments
  • Search for a user using their id or email
  • Quick copy your API keys
  • ... and much more!

You can get started using the command menu in the dashboard by clicking the new "Search" link in the sidebar, or for all those keyboard shortcut lovers, by typing cmd+k.

Fixes and improvements

  • ๐Ÿ‘€ We added a new "Promote" button to the view commit modal to promote the commit to the next environment.
  • ๐Ÿ› We fixed an issue where using an event type trigger for a workflow would not default the data section in the variable pane.
  • ๐Ÿ› We fixed a regression in our Node SDK where the remove subscriptions objects method would fail.

New Relic observability extension

Today weโ€™re extending support for reporting notification metrics to New Relic. Previously, we only supported Datadog as an observability platform, but with todayโ€™s release, weโ€™re introducing support for reporting metrics to New Relic as well.

You can read more in the documentation about the types of metrics reported. Our New Relic extension is available to customers on our Enterprise plan only.

New outbound webhook event types

Today we're announcing support for new types of events in outbound webhooks, making it even easier to deeply integrate Knock into your application's workflow. With today's release, you can now listen to changes for any version-controlled content within your Knock dashboard, including workflows, email layouts, and translations.

You can find the full set of supported webhook events in the documentation and can create a webhook by going to the "Developers > Webhooks" section in the Knock dashboard.

Fixes and improvements

  • ๐Ÿ‘€ We greatly improved the bundle size in our @knocklabs/react package by removing the dependency on the date-fns library.

Our Flutter SDK

Today weโ€™re shipping our new Flutter SDK, which is a client-side SDK written in Dart to interact with the Knock API and to build in-app notification experiences in Flutter applications.

We have big plans for more in-product experiences that weโ€™ll be bundling into this SDK in the near future. Todayโ€™s release is a first step towards that future, giving the base primitives to easily bring all of the functionality of Knock into your applications in an easy-to-consume way.

You can learn more in our Flutter SDK documentation.

Fixes and improvements

  • ๐Ÿ‘€ We added a link to view usage for Enterprise customers under the "Billing" page
  • ๐Ÿ‘€ We redesigned the empty states across the dashboard
  • ๐Ÿ› We fixed an issue where our Vonage integration would fail when sending multi-part messages

Announcing commit diffs

Today weโ€™re releasing a big upgrade to the version control experience in Knock with commit diffs.

With this release, you can now:

  • View a commit to see what has changed between that commit and the prior version of the workflow.
  • Review a diff when promoting a commit to an environment. You will see the diff between the current state of that environment and the pending commit.
  • Audit the full history of commit diffs in your commit log to know exactly what's changed over time.

Read the full announcement here โ€”>

New Android SDK

Today, weโ€™re shipping our new Android SDK, which is a client-side SDK written in Kotlin to interact with the Knock API and to build in-app notification experiences in Android applications.

We have big plans for more in-product experiences that weโ€™ll be bundling into this SDK in the near future. Todayโ€™s release is a first step towards that future, giving the base primitives to easily bring all of the functionality of Knock into your applications in an easy-to-consume way.

You can learn more in our Android SDK Documentation, or get started now by following the installation instructions.

Fixes and improvements

  • ๐Ÿ‘€ We added support for edge runtimes, like Vercel and Cloudflare Workers, in our Node JS SDK
  • ๐Ÿ‘€ We now show a channel data tab when viewing an individual tenant in the dashboard

New React SDK

Today, weโ€™re shipping our new React SDK (@knocklabs/react), which provides a unified set of hooks and components for integrating Knock into your web applications. You can use our React package to power in-app notification experiences like feeds, toasts, and banners for your users, as well as powering notification configuration via our preferences API.

Our new SDK is the home of all in-product notification experiences powered by Knock, superseding the previous react-notification-feed package. If youโ€™re using the old package, you can read here on how to migrate.

We have big plans for more in-product experiences that weโ€™ll be bundling into this package in the near future. Todayโ€™s release is a first step towards that future, giving the base primitives to easily bring all of the functionality of Knock into your applications in an easy-to-consume way.

You can install the React SDK from NPM by running npm install @knocklabs/react and can find the package in our brand new Javascript monorepo.

Fixes and improvements

  • ๐Ÿ‘€ We improved the loading time of message views within the Dashboard
  • ๐Ÿ‘€ We now validate certificates when configuring an APNS channel
  • ๐Ÿ‘€ We now validate the service account JSON when configuring a FCM channel

Schedule one-off workflow runs

Earlier this year we released the ability to run recurring workflows for your users via our Schedules API. Today, we're releasing an extension to our schedules API with the ability to schedule a single workflow run in the future for one or more recipients. One-off schedules are perfect to enqueue a workflow that should be run at some future point, without you needing to write your own cron jobs to do so.

Here's an example of creating a one-off schedule for a set of recipients:

await knock.workflows.createSchedules("park-alert", {
  recipients: ["jhammond", "esattler", "dnedry"],
  scheduled_at: "2023-12-25 12:00:00Z"
  data: { type: "dinosaurs-loose" },
  tenant: "jpark",
});

You can learn more about running one-off or recurring schedules in the documentation.

Customize the response of the in-app feed

Today, weโ€™re launching additional privacy controls for our in-app feed API. Previously, when your recipientโ€™s in-app feeds were requested, the response would include the full recipient object, which could lead to personal data about your recipient being returned unnecessarily.

With today's release, you can now use allow or deny lists to control which fields are returned from any entity in your feed request. Here's an example in-app feed response filter:

{
  "actor": {
    "only": ["id"]
  },
  "data": {
    "except": ["credit_card_last4"]
  }
}

Read more in the documentation.

Fixes and improvements

  • ๐Ÿ› We fixed an issue where clicking links in a message preview could crash the dashboard
  • ๐Ÿ› We fixed an issue where using tenants as a recipient in a workflow trigger would stop workflow runs from showing

Promote individual commits in the CLI

You can now use the Knock CLI to promote individual commits. This was previously available in the dashboard, and today we're bringing it to the CLI. With this addition, it makes it easy to build specific deployement workflows that only promotes the resources you need.

Individual commit promotion is available now in the latest version of the CLI (v0.1.7) and is available across all plans. You can read more in the documentation.

Fixes and improvements

  • ๐Ÿ‘€ You can now go directly to the workflow editor from the workflows page using the 3-dot menu
  • ๐Ÿ‘€ You can now use cmd+return in the preview data editor to save the data and close the modal
  • ๐Ÿ› We fixed an issue where the update schedules endpoint was missing schema validation for an empty properties object
  • ๐Ÿ› We fixed an issue where breadcrumbs didn't load properly on our docs site
  • ๐Ÿ› We fixed a few tooltip and text display issues in the Dashboard

Manage email layouts via the CLI and management API

With the introduction of our CLI and management API earlier this year, we added support for working with both workflows and translations locally. Now, we've added support for managing email layouts via the CLI and management API, making it possible to pull down your email layouts locally, make changes to those layouts, and push them back up to Knock to be deployed.

Working with email layouts is available now in the latest version of the CLI (v0.1.x) and is available across all plans. You can read more in the documentation.

Control the number of items rendered in a batch template

While our batch function has always allowed an unlimited number of items to be accumulated per-batch, the number of items that could be rendered in a template from that batch has always been limited to the first or last 10 items. Today, we're adding a new setting into our batch function to control the number of items that can be rendered, with the ability to render up-to 100 items.

Batch render limits are available now on our Enterprise plan only. You can read more in the documentation, or contact our sales team today to arrange a demo.

Fixes and improvements

  • ๐Ÿ‘€ We now highlight the "Developers > Logs" menu item when viewing workflow runs
  • ๐Ÿ‘€ All new accounts now have an in-app feed channel setup by default
  • ๐Ÿ› We fixed a bug where in certain cases hourly schedules would not repeat