What's new in Novu 0.23?
Published: 2024-02-12 11:33:46

**TL;DR:** All you need to know about the latest Novu 0.23.0 release. Translation management, Performance updates, and more!

## 0.23 Release Updates

We're excited to highlight the newest features introduced in our latest release. Join us as we explore what awaits you!


![Explore!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kvwswae35imppt60bwmg.gif)

## Translation Management

💡 **Note**: This feature is only available for Novu Cloud for Business and Enterprise Clients.

The translation management feature allows users to create, upload, and edit translation groups and files from the Novu dashboard.

It’s new and we’re excited for you to start using it in your apps!


![Translation management](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfpku2po56hi92wmvi5s.png)


![Translation management - second](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwndpnemqd219isuikja.png)


![Translation management - third](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/657glfdikc7q2iql66a6.png)

With this feature comes a new handlebar helper for translations, `{{ i18n ... }}`. 

Novu users can now translate their notification templates to different languages using the `i18n` handlebar helper and the translation keys in the editor. 


![Translation management Alpha](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6l2wmofotz96hvcilepc.png)

## Support for Non-Root User (UID 1000)
In our continued effort to enhance security and compatibility in enterprise environments, we are proud to announce a significant update aimed at supporting systems with restricted root access.

### Key Features:

**Non-Root User Support:** Novu now officially supports deployment under a non-root user with a fixed UID of 1000. This update is crucial for enterprise deployments on systems that enforce strict no-root policies, ensuring compliance with security best practices.
**Seamless Integration:** This enhancement facilitates smoother integration of Novu into secure environments, reducing the need for workarounds or exceptions in security policies.
**Enhanced Security:** Running Novu under a non-root user reduces potential security risks and aligns with the principle of least privilege, further safeguarding our notification infrastructure.

**Getting Started:**

No action is required from your side to take advantage of this update. The changes have been seamlessly integrated into Novu, ensuring that your enterprise deployments comply with non-root user policies without any additional configuration needed.

## ARM Image Support
We're thrilled to share that Novu has officially introduced support for ARM images, marking a significant step in our dedication to embracing innovation and responsibility within the tech landscape. This development ensures that Novu stays ahead in the realm of notification infrastructure by broadening our platform's accessibility, compatibility, and sustainability.

### Key Highlights:

**ARM Architecture Support:** Users can now deploy Novu on systems powered by ARM processors, benefiting from the efficiency and performance improvements that ARM architectures offer.
**Optimized Performance:** ARM support brings optimized performance for ARM-based deployments, ensuring faster and more efficient notification processing.

**Getting Started with ARM Images:**

To use Novu on an ARM-based system, simply pull the ARM-compatible Docker image from our registry. If you are on a not a ARM based system you can use the following command in docker to pull the image.

```
docker pull --platform linux/arm64 ghcr.io/novuhq/novu:v0.23.0
```

💡Note: Emulating ARM hardware may be slower then running an ARM image on ARM hardware.

## Deprecation of Original Notifire Packages

Novu has evolved so much from when it was originally created. On the release of v0.24.0, we will be deprecating the original Notifire packages hosted on GitHub and any package within the `@notifire` namespace on NPM. 

The following packages hosted on GitHub under the `novuhq` organization are scheduled for deprecation:

### Deprecated Packages

1. [**Notifire WebSocket Package (`notifire/ws`)**](https://github.com/orgs/novuhq/packages/container/package/notifire%2Fws)
2. [**Notifire Widget Package (`notifire/widget`)**](https://github.com/orgs/novuhq/packages/container/package/notifire%2Fwidget)
3. [**Notifire SDK Package (`notifire/sdk`)**](https://github.com/orgs/novuhq/packages/container/package/notifire%2Fsdk)
4. [**Notifire Web Package (`notifire/web`)**](https://github.com/orgs/novuhq/packages/container/package/notifire%2Fweb)
5. [**Notifire API Package (`notifire/api`)**](https://github.com/orgs/novuhq/packages/container/package/notifire%2Fapi)

![Notifire](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qeno0vl934pl6zdrkuzi.png)

### NPM Namespace Deprecation

All packages within the [@notifire](https://www.npmjs.com/package/@notifire/core) namespace on NPM are also scheduled for deprecation. This includes any package prefixed with `@notifire/`, ensuring a comprehensive and clear transition away from these older offerings.

![Notifire namespace deprecation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oarswtqejwjuuj8r0el0.png)

Users currently relying on these deprecated packages should promptly transition to the official `@novu` packages.

## Field-level Encryption to API Keys

We're security conscious at Novu. The API keys are now encrypted at rest in the database and hashed at rest in the cache. 

We added this security feature to prevent direct use of the API key in the event of a database breach or bad actor trying to use the key with bad intentions.

**Note:** All existing API keys become encrypted [through a data migration script](https://docs.novu.co/additional-resources/data-migrations) for **self-hosted** users. Running the script more than once does not re-encrypt the api keys.

## Bulk Delete Notifications in Notification Center

Users can now remove multiple notifications using an array of message ids (limit of 100) via the [Notification center hooks](https://docs.novu.co/notification-center/client/react/api-reference#useremovenotifications) and [Headless library](https://docs.novu.co/notification-center/client/headless/api-reference#removenotifications).

_Notification Center hooks_
```javascript
const onSuccess = (data: IMessage) => {};

const onError = (error: Error) => {};

const { removeNotifications, isLoading, isError, error } = useRemoveNotifications({
  onSuccess,
  onError,
});
```

_Headless_
```javascript
headlessService.removeNotifications({
  listener: (
    result: UpdateResult<IMessage, unknown, { messageId: string }>
  ) => {
    console.log(result);
  },
  onSuccess: (message: IMessage) => {
    console.log(message);
  },
  onError: (error: unknown) => {
    console.error(error);
  },
  messageIds: ["message_id_1", "message_id_2" ],
});
```

## Rocket Chat Provider Integration

You can now send Chat messages via the Rocket Chat provider integration:

![Rocket chat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uqt8ik36poeunhhci8kc.png)

## Brevo (SendInBlue) SMS Provider Integration

You can now send SMS messages via the Brevo SMS provider integration:

![Brevo SMS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4rjtyos91922zbkoct7z.png)

## iSend SMS Provider Integration

You can now send SMS via the [iSend](https://send.com.ly) sms provider integration:

![iSend SMS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q2ie74y13mnr3h787g63.png)

## CustomData Overrides for SMS

A `customData` overrides provider for SMS now exists. This property allows us to support provider specific configurations in future for SMS providers.

For now, it only supports DLT (Distributed Ledger Technology) for the Gupshup SMS provider.

_Trigger workflow with customData_
```javascript
novu.trigger("gupshup-workflow", {
  to: {
    subscriberId: "1234",
  },
  payload: {
    user: "Viraj",
  },
  overrides: {
    sms: {
      customData: {
        principalEntityId: "principal entity Id",
        dltTemplateId: "dlt template Id",
      },
    },
  },
});
```

## Email Editor Variables Auto-suggestion Dropdown

We've made a little adjustment to the workflow email editor to enhance user experience by including auto-suggestions while adding variables. 

This feature greatly minimizes the chance of selecting the wrong variable and having incorrect template content.

![email auto-suggestion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6olmw54gyvffchodsyhj.png)


## All Changes

You can find the full changelog on [GitHub](https://github.com/novuhq/novu/compare/v0.22.0...v0.23.0).


## Conclusion

[Sign up on Novu](https://web.novu.co), try it out & let me know what you think about the new changes in the comments section.

If you want to contribute to OSS and make an impact, I believe it is a [great place to start](https://github.com/novuhq/novu) & build out amazing things.

Oh, remember to star the repo as well.🤩 See you in the next release! 🚀