
Thomas Schiavone
August 19, 2025

We’re excited to announce a major new version of Courier Inbox for web.
We originally built Inbox over four years ago to solve a simple problem: how do you add a real-time notification center to your app without building everything from scratch? Like most early-stage products, the first version was focused on getting to market fast.
Turns out, Inbox became one of our most popular products. And with that popularity came a lot of feedback. Developers wanted more flexibility, cleaner integration, and better performance. We knew we had a lot we could improve on.
So we took a step back and rebuilt it from the ground up.
We didn’t just patch a few things. We built a new foundation for scale and flexibility.
Our goal was to reimagine Inbox as something developers could drop into any app in minutes and rely on as their product evolves. Are three key objectives were
You can use the default UI, but you’re not locked into it. Theme it, extend it, or replace it entirely with your own components.
Real-time delivery, cross-device sync, and efficient data loading should just work without extra effort or complexity.
Developers should be able to add a real-time inbox to any app with minimal setup. No need to wire up sockets, state, or syncing logic by hand.
We rebuilt every layer of Courier Inbox from the integration surface to the real-time delivery infrastructure. Here’s what’s new:

You can install and render Courier Inbox with just a few lines of code. Here’s a basic React setup using the new @trycourier/courier-react package:
npm install @trycourier/courier-react
And here's how easy it is to get standard inbox up and running:
import { useEffect } from 'react';import { CourierInbox, useCourier } from '@trycourier/courier-react';export default function App() {const courier = useCourier();useEffect(() => {// Generate a JWT for your user on your backend serverconst jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';// Authenticate the user with the inboxcourier.shared.signIn({userId: $YOUR_USER_ID,jwt: jwt,});}, []);return <CourierInbox />;}
Courier handles authentication, sockets, and real-time syncing behind the scenes. You don’t have to worry about managing message state or delivery logic yourself.
The new version is a complete rebuild, but we’re not deprecating the old one. If you’re happy with your current integration, you don’t need to change anything. That said, if you’re ready for more flexibility, simpler integration, and better performance, upgrading is straightforward.
Here are a few important changes in this release:
The SDK is now a single package: @trycourier/courier-react
Authentication now requires JWTs (no more clientKey or HMAC)
Hooks have been updated — use useCourier() instead of useInbox()
Theming is handled via CourierInboxTheme, not styled-components
Custom components are passed using new render* props
The new Courier Inbox for web is ready to use today. Whether you’re starting from scratch or upgrading an existing integration, everything has been rebuilt to help you move faster with more control.
Choose the SDK that fits your stack:
📚 Using React? Start here:
🕹 Not using React? Use our web components:
🔄 Migrating from an older version?
Have questions or feedback? Just reach out. We’d love to hear from you
Courier Inbox isn’t just for web. We also offer native SDKs for iOS, Android, Flutter, and React Native. Each one is built with the same principles: real-time sync, flexible theming, and easy drop-in integration so your users stay in the loop across every platform.

Experiments: A/B test your messages inside Journeys
Experiments bring A/B testing into Journeys. On any send node, run 2 to 10 message variants, split traffic by weight, and Courier buckets each recipient deterministically, keeping them in the same variant across sends. Compare sent, delivered, open, and click rates per variant, then promote the one you want, without leaving your journey or bolting on a separate testing tool.
By Thomas Schiavone
July 09, 2026

AI Translation: localize any template in seconds
Courier AI Translation brings built-in localization to Design Studio. Add a language to any template and AI translates every string in seconds. Works across email, SMS, push, in-app, and chat. Review side by side, override anything, and publish from the same editor you already use.
By Thomas Schiavone
June 26, 2026

Inbox SDKs for Vue and Angular: a native in-app notification center
Courier now ships first-class inbox SDKs for Angular and Vue. Drop in a real-time notification center, toasts, and a preferences center with native components, an injectable service, and a composable, all backed by the same in-app inbox that already powers React and JavaScript apps.
By Mike Miller
June 19, 2026
© 2026 Courier. All rights reserved.