Deprecation Reminder: UI Kit 1

Dear Atlassian Developers,

We have announced UI Kit 1 has been deprecated and will stop working on 2025-02-27T13:00:00Z. We understand that this change may affect your current projects and we are committed to making this transition as smooth as possible.

To assist with this transition, we have prepared a migration guide that provides detailed instructions on how to update your applications to the new version of UI Kit. The guide can be found here: Upgrade to UI Kit latest version.

If you have any questions or need further assistance, please don’t hesitate to reach out.

Thank you for your attention to this important matter.

Best Regards,
Jemma Swaak

1 Like

Will developers have the ability to force customers to update to the latest version of the app?

That missing feature is an absolute requirement to migrate since there are many permission changes from UI Kit 1 to the latest version. That will trigger a major update which currently requires manual customer approval.

Customers don’t manually update their apps. Such apps will all break for those customers on the deprecation date. There’s also currently no way to get the current version of an installed app, so developers have zero ability to deploy their own “update now” message.

Reference links:

3 Likes

If the team needs a specific example to grok the major problem here…

UI Kit 1 useContentProperty permission scopes:

read:content.property:confluence
write:content.property:confluence

UI Kit (latest) useContentProperty permission scopes:

read:page:confluence
write:page:confluence

There are also many other permission scope changes and renaming between the UI Kit versions.

This will trigger a major version update which will require customers to manually approve (which they absolutely do not do). If they do not manually approve before the deprecation date I assume there will be no informative message, only a broken app.

Given that Forge is a locked-in server-side developer platform one would expect Atlassian to treat deprecation dates very carefully and distinctly different to Connect/APIs, and to over-extend the dates to provide abundant time to both developers and customers.

The current short deprecation dates and complete lack of options for developers to update customers will 100% destroy a vast majority of the installation base of any Forge apps running UI Kit 1.

2 Likes

Can I get a response please @JemmaSwaak @JamesDumay?

It would also be wise to align the deprecation dates for UI Kit 1 with Confluence v2 API since there are overlapping hooks which will likely break in UI Kit 1 before February 2025.

And if that’s the case, it would make more sense to chat to the v2 API team and have them push their date back to next year.

Hey Nathan,

I’m in the process of talking to internal teams (If you recall we had a long conversation on LinkedIn about this) regarding the date alignment and the scope changes. In an ideal scenario, I want to take as much pain out of this process as possible.

For transparency I have a call next week with the Confluence team to discuss the scope changes and will follow up with you directly after the call.

Thanks
James

3 Likes

What’s the plan @JamesDumay?

Ideally: ability to force customers to update.

At minimum: ability for devs to fetch installed version to self-display an “update now” message + 12 month deprecation date to allow time for customers to update.

Hi Nathan,

Sorry for the confusion - I dropped you a direct message on LinkedIn last week.

I am waiting to hear back from a few teams on what we can do in regards to the deprecation timelines and if it is feasible to map the classic to granular scopes to avoid the major version update.

You can display your own “update now” messaging by patching previous versions which we recently went Preview with.

Thanks,
James

1 Like

UI Kit 2 macro config re-renders each time a user changes a field value. UI Kit 1 did not do this. Fine for static fields, not for dynamically rendered fields. I cannot migrate my apps to that.

The solution would be to:

  1. Not re-render macro config each time user updates a field value lol.
  2. Allow programmatic updates: const [config, setConfig] = useConfig()
  3. Allow onChange/onFocus/onBlur events on config fields.