Skip to main content

Overview

Argo CD’s web interface can be extended with custom UI elements written in JavaScript/React. Extensions are loaded from JavaScript files placed in the argocd-server Pods.
Extension TypesArgo CD supports several extension points:
  • Resource tab extensions
  • Application tab extensions
  • System-level extensions
  • Status panel extensions
  • Top bar action menu extensions
  • App view extensions

Installation

Place extension JavaScript files in /tmp/extensions directory of argocd-server Pods:
File naming requirement: Extension files must match the regex ^extension(.*)\.js$
Mount extensions using a ConfigMap or build them into a custom argocd-server image.

Extension Basics

JavaScript Structure

Extensions register themselves using the extensionsAPI global variable:

Using React

Don’t Bundle ReactExtensions must use the React global variable, not bundle React. Configure webpack:

Resource Tab Extensions

Add custom tabs to the resource sliding panel on the Application details page.

API

Component receives props:
  • application: Application - Argo CD Application resource
  • resource: State - The Kubernetes resource object
  • tree: ApplicationTree - List of all resources in the application

Example

Glob Patterns

Use glob expressions to match multiple resource types:

Application Tab Extensions

Since Applications are Kubernetes resources, use registerResourceExtension with:
  • group: argoproj.io
  • kind: Application

System-Level Extensions

Add new pages to the sidebar navigation.

API

Example

Status Panel Extensions

Add custom items to the status bar at the top of the Application view.

API

Basic Example

With Flyout Panel

Top Bar Action Menu Extensions

Add buttons to the action bar at the top of the Application view.

API

Conditional Display Example

App View Extensions

Create custom application detail views alongside Tree, Pods, and Network views.

API

Example

Development Tips

Mount extensions during local development:
Use browser DevTools:
Wrap components with error boundaries:
Use webpack to bundle your extension:

TypeScript Support

For better type safety, define types for your extensions:

Best Practices

Keep It Simple

Extensions should be focused and lightweight. Complex logic should call external services.

Handle Loading States

Show loading indicators for async operations to improve UX.

Error Boundaries

Implement error handling to prevent extension failures from breaking the UI.

Responsive Design

Ensure extensions work well on different screen sizes.

Security Considerations

Extension Security
  • Extensions run with full access to the application context
  • Only install extensions from trusted sources
  • Sanitize any user input before displaying
  • Don’t expose sensitive data in extensions
  • Review extension code before deployment

Example: Complete Extension

Next Steps

Resource Actions

Add custom actions to resources

Custom Health Checks

Define custom health checks

React Documentation

Learn React fundamentals

Argo CD API

View API type definitions