Hey Canva app developers! We’re thrilled to announce the release of App UI Kit v5!
Because we’re renaming our design tokens and upgrading to React 19, this is a breaking change update. We’ve tried to smooth the upgrade path as much as possible for you.
For existing projects, there is an automated migration available through the Canva CLI. For information on running the migration as well as a full guide on what has changed, check out the App UI Kit v5 Upgrade guide.
Here’s the list of changes in version 5:
Breaking Changes
Implemented new design token system with more consistent conventions and names.
Added React 19 as a peer dependency and dropped React 18 support.
Removed the deprecated title prop in the Link component. Use tooltipLabel instead.
Replaced Pill and InputPilltruncateText prop with new maxWidth prop. The new prop better describes its functionality, and represents its size in a more explicit manner.
Changed the size property for the Pill component to be consistent with Button size variants. To retain the old “small” Pill size, use the new “xsmall” variant.
Pill now uses a round shape to match Canva styling.
Removed the default colorSurface background color styling for the global html tag.
The source parameter of the onChange callback for the ColorSelector component is now optional. The migration is to check for undefined values in the callback handler.
The default value for the alignY property of Columns is now stretch. To continue using the old implicit behavior, set it to start explicitly.
New Capabilities
Added load callbacks to the media cards - onImageLoad to ImageCard, onImageLoad and onVideoLoad to VideoCard and onImageLoad and onAudioLoad to AudioCard
Added onTimeUpdate callback to receive ontimeupdate events for the Audio Card
Added new LinkButton component for in-app actions that do not need to open URLs.
Added type=multi property to enable multiple selections for the Select component.
Feedback is welcome
What should we add next to the App UI Kit? Did you have any issues with the upgrade?
Hello,
Wow, I’m really surprised—it’s been quite a while since the UI Kit was last updated, and I thought it was already the final version because it’s really, really good. But it’s great to see that you’re still improving it further :v.
May I also ask about CustomSelect, especially for supporting custom font selection? This component has been quite challenging for me, and I truly hope you can provide support to make it easier for us to implement.
Hello,
I sincerely apologize that in my previous message I did not clearly describe the issue regarding CustomizableSelect with fonts. Your current example works very well, but when I copied it directly, it passed the review up to the lead stage. However, the reviewer mentioned that it was only a sample version and that updates would be coming. It seems that it hasn’t been updated recently, so I’m not sure how I should proceed from here.
Sorry for the confusion, someone from the review team should be reaching out about this.
There might be a specialized font selection component in the future, but until it exists you are completely fine to use the CustomizableSelect component for that use case.
Hello Tom,
After using the auto-upgrade tool on two of our products, everything worked really well.
npx @canva/cli@latest apps migrate app-ui-kit-v5
But it would be even better if the color codes could also be merged automatically :). It might be that I copied the structure incorrectly, so I’ve included my sample code below.
Thanks for sharing the migration guide and component updates! I’ve been working with the App UI Kit v5 recently, and a few things stood out to me:
The new semantic naming for design tokens is a welcome change — it makes the code much more readable, especially when sharing with teams.
I appreciate how the structure of the tokens is cleaner now (action vs. content vs. feedback), which helps me keep CSS organized.
One challenge I faced: the breaking changes in component props (for example, Link now using tooltipLabel) caught me off guard during migration. Make sure to check those carefully, especially in large codebases.
Has anyone else noticed performance improvements (render speed / bundle size) after upgrading from v4 → v5? I’d like to hear your thoughts on whether it’s worth fully refactoring older apps.
Thanks for the update on version 5 of the UI Kit! It’s great to see more components and better alignment with the App UI Kit’s design tokens and standards. Excited to try out the new features in a real-world app and see how they improve consistency and developer speed.
The ColorSelector component appears broken in v5. I even tried it in the starter repo to make sure it wasn’t something in my app. It opens the popover, but you can’t interact with it.
The error I’m getting in the console:
53540badba4d899c.sentry_browser.js:1 flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.