Add a new button next to "Basic Viewer"

I’m trying to create a new button next to “Basic Viewer” on the Studylist screen.
I can create it by creating a Mode based on the mode “basic-test-mode”
When the button is clicked, an external app is launched successfully and then a URL (/newroute?StudyInstanceUIDs=xxxxx) is redirected.

After clicking the new button, I expect to keep my Studylist screen state the same as before clicking the new button.

I’d appreciate it if anyone helps

Note: the ‘newroute’ is the name of the routeName in modeFactory()

My Mode code: (no extension is created)

import { id } from ‘./id’;

const extensionDependencies = {

function modeFactory() {
return {
routeName: ‘newroute’,
displayName: i18n.t(‘Modes:Open XXX’),
onModeEnter: () => {
onModeExit: () => {
validationTags: {
study: ,
series: ,
isValidMode: () => {
return { valid: true };
routes: [
layoutTemplate: ({studyInstanceUIDs}) => {
// open external app here
extensions: extensionDependencies,
sopClassHandlers: ,
hotkeys: ,

const mode = {

export default mode;

Those buttons are called Modes and you can create your own mode using our cli tool

and read more about modes here

Thank you so much @alireza

I created a the mode and already the new button is displayed correctly.
However, I’d like to keep the Studylist screen state after click the created button.

Current: the routeName path is redirected.
Expected: no redirect
Please refer my code in previous post.

I’d appreciate it if you could help.

Thank you.

I don’t understand the requirement. What do you mean by “I want to keep the study list screen state”?

Sorry @alireza

Currently, when I click the button, my business is processed, and the ‘routeName’ URL is transferred.

I’d like no URL to be transferred after clicking( the Studylist screen is displayed as is)

We don’t currently support that feature, but you can still implement it. You’ll need to create a custom layout and register it in the extension manager to add the necessary study list functionality.

Thanks @alireza

I’ll try!