Kibana development - migrate/upgrade plugins from 7.3.x to 7.9.x

I have custom plugins that are compatible with Kibana 7.3.2 . And usually moving from one version to another is not that hard (especially if it is not a major release).
I have read that for version 7.9+ there is a new architecture called "New platform".
Also I saw that legacy core will be obsolete from version 7.10.
My question is:
Can we easily make our plugins compatible with 7.9.x? .. and then to plan to upgrade them to the "New platform" or we have to upgrade to the new platform if we wanna use kibana 7.9?

Thanks in advance

Hi @tsvet. You might want to read the Platform Migration documentation for migrating your plugins to the new architecture. I believe some legacy plugins can still work in 7.9, but I strongly suggest migrating to avoid conflicts.

Ok, thanks @nickpeihl .. yes, that is clear but we are planning to upgrade our ELK stack and I just wanted to know which version to choose (based on our plugin compatibility).
Is there a chance to ask someone from your team about this topic?
Based on the plugin compatibility we can choose 7.9.x or 7.6.x.

We don't have resources to migrate all plugins now(immediately).


Hi @tsvet. You might consider joining the Elastic Community Slack to ask your specific questions. The Slack group has Elastic employees as well as other community plugin authors who may be able to assist you.


thanks a lot @nickpeihl

Legacy platform support is dropped in 7.10. Your legacy plugin may still works in 7.9, but it mostly depends on the platform / plugin APIs it was consuming, as some legacy APIs were already dropped in 7.9. I would just start a new instance with your legacy plugins to see if it works properly.


thanks a lot @Pierre_Gayvallet let us give it a try .. but we have many plugins .. it is going to take some time

@Pierre_Gayvallet so if we wanna use the legacy architecture we need 7.8, right?

Sorry for the late answer. Yea, to keep using legacy plugins, 7.8 would probably be the recommended version

@Pierre_Gayvallet Unfortunately no luck with using legacy plugins on 7.9.x .. We would like to use 7.9.3

What kind of errors are you encountering when using the legacy plugins against a 7.9.3 build?

We are still using the old legacy architecture and we can not register the visualiations. We have different kind of custom plugins (visualizations, navbar extensions and applications). With Applications - all good but with navbar extensions and visualization - no luck.
@Pierre_Gayvallet I saw a comment from @Mikhail_Shustov and would like to give it a try with the hacks.js approach -

Debugging missing plugins after updating from 7.6.2 to 7.9.2 . I know that we should use the new platform way of developing but we have many plugins and we dont have that many resources to do the migration immediately. Any hints on registering visType visualization with legacy architecture on kibana 7.9.3 will be much appreciated

Yea, after giving it a quick look, I can confirm, unfortunately. Vizualisation migrated during 7.9, so it is no longer possible to register vis using the legacy API in 7.9.

The hack Mikhail suggested seems like the only option. The ui/new_platform module (src/legacy/ui/public/new_platform for the full path) is the bridge we have been using to access KP apis from legacy plugins during the migration period. You should be able to use it to use the KP vizualisation plugin from your legacy plugin and registering the vis using it.


@Pierre_Gayvallet apologies for disturbing you that much but if I wanna use this hack with ui/new_platform module .. Is there a requirement that my plugin should be written in typescript ?
I am getting this error after trying to register the plugin by using
import { npSetup } from '../../src/legacy/ui/public/new_platform';
name: '...',
title: '..',
it is an angular plugin. thanks a lot

No, typescript is not an obligation. Javascript should work just fine.

Where are you trying to import ui/new_platform from? This can't be imported from server-side code (which I'm guessing is what you are doing?). You need to declare a uiExports.hacks section in your plugin descriptor (these are the files that will be executed on the client-side)


    uiExports: {
      hacks: ['plugins/security/hacks/legacy'],

You should then be able to properly import npSetup from here. See for example.

1 Like

thanks I will give it a try tomorrow

Hi @Pierre_Gayvallet still no luck.
This is an old plugin. Angular based. It was fine up to 7.3.2.
This is our structure.

Not sure how to apply the legacy hack:

most probably I should surrender and accept the we need to refactor old architecture to new platform :laughing:

most probably I should surrender and accept the we need to refactor old architecture to new platform

That would probably be the best solution for mid/long term to be honest, as you will have to do it at some point if you want to follow Kibana releases anyway.

Now, to try to help on this specific issue:

Is the hack file actually loaded? Do you see your console.log in the browser dev tools?

If that's the case, then it's probably an issue regarding how you use the visualizations plugin API. unfortunately, I lack knowledge of this part of our code (and these APIs were moving quite fast during the 7.9 minors.

The app team would be best suited for this part. CC @flash1293

@Pierre_Gayvallet thanks again .. We have been working on upgrading Apps now(with apps we have some success).. Now we are trying again on visualizations. Will keep you updated..

1 Like