We recently upgraded our OCI instance to 26.1.1. Here's my story.
There are 3 apps (2x mobile and 1x desktop) and 1 master app. All child apps subscribe its theme from the master app. The obvious way would be to first upgrade the Master app theme and then push it to the child apps.
Master app not subscribed to APEX Repository
The Master app was not subscribed to the Oracle Theme from APEX Repository anymore. After some investigation I tried to start from scratch. I created a new theme in the Master app with 2x Theme Styles, one for desktop, one for mobile. And then I tried to re-subscribe my client apps.
Mobile apps:
In the mobile apps I also created a new theme as a copy of the master app. This was working fine, but when I tried to use “Switch theme” I always got an HTTP 400: Bad Request error from ORDS.

On the confirmation page before I had an empty Switch to Theme Item, which I already found weird. Sometimes even the Currently Active Theme was empty.


I also tried using the “Restore Theme Subscription” option for my Current Theme, but that also led to HTTP 400: Bad Request
Desktop app:
There I had more luck in the first place. Means, I was able to subscribe to the new theme and then also make it current. All pages seemed to work properly so far. Until I tried to create a Content Row Region. The Static ID of my Universal Theme was 1000. It looks like APEX dynamically added the ID to the Template Component Static ID, even though it's ID was still THEME$BUTTON.


I couldn't figure out why APEX always added the _1000 to the Template Static ID.
In that state I wasn't able to fix that issue at all, I even couldn't go back to the APEX Repository Theme anymore. The app felt like it was in a corrupt state.
After some hours of frustration I gave up with the whole subscription idea. So my way forward was to get rid of the Master app completely, I store the CSS files under Workspace Static Files and each app subscribes from the APEX Repository again. With the small number of apps this is good enough.
The desktop app was still corrupt though.
Desktop app: Create a whole new app and copy all pages one-by-one
OK, it's not too many pages, let's just create a new app and copy each page to the new app. While doing that, I thought: “Oh, there's also a function called Component Export. Let's try this." Well…

So I ended up manually copying the remaining page to the new app.
It seems to work fine now.
One more thing
I tried to reproduce the situation on my local docker instance. So I exported ALL apps with APEXLang from my OCI Instance then then tried to import them locally (APEX 26.1 - No Patch Set installed).
I exported 5 apps, only 2 of them were imported. Here are the three errors I got for the other three apps:


