dhis2_optimize_performance
Analyze and resolve DHIS2 web app performance issues like slow loading, memory leaks, API bottlenecks, and render blocking. Optimizes load times, bundle sizes, and memory usage for improved efficiency.
Instructions
Identify and fix performance issues in DHIS2 web applications
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appComplexity | No | Application complexity level | |
| metrics | No | ||
| performanceIssue | Yes | Type of performance issue | |
| targetMetrics | No |
Implementation Reference
- src/permission-system.ts:59-178 (registration)TOOL_PERMISSIONS Map entry defining permission 'canDebugApplications' required for 'dhis2_optimize_performance' toolprivate static readonly TOOL_PERMISSIONS = new Map<string, keyof UserPermissions | Array<keyof UserPermissions>>([ // Configuration and connection ['dhis2_configure', 'canViewSystemInfo'], ['dhis2_get_system_info', 'canViewSystemInfo'], // Metadata operations - Data Elements ['dhis2_list_data_elements', 'canViewMetadata'], ['dhis2_create_data_element', 'canCreateMetadata'], ['dhis2_update_data_element', 'canUpdateMetadata'], ['dhis2_delete_data_element', 'canDeleteMetadata'], // Metadata operations - Data Sets ['dhis2_list_data_sets', 'canViewMetadata'], ['dhis2_create_data_set', 'canCreateMetadata'], // Metadata operations - Categories ['dhis2_list_categories', 'canViewMetadata'], ['dhis2_create_category', 'canCreateMetadata'], ['dhis2_list_category_options', 'canViewMetadata'], ['dhis2_create_category_option', 'canCreateMetadata'], ['dhis2_list_category_combos', 'canViewMetadata'], ['dhis2_create_category_combo', 'canCreateMetadata'], ['dhis2_list_category_option_combos', 'canViewMetadata'], // Organisation Units ['dhis2_list_org_units', 'canViewMetadata'], ['dhis2_list_org_unit_groups', 'canViewMetadata'], ['dhis2_create_org_unit_group', 'canCreateMetadata'], // Validation Rules ['dhis2_list_validation_rules', 'canViewMetadata'], ['dhis2_create_validation_rule', 'canCreateMetadata'], ['dhis2_run_validation', ['canViewData', 'canRunAnalytics']], // Data Values ['dhis2_get_data_values', 'canViewData'], ['dhis2_bulk_import_data_values', 'canImportData'], // Analytics ['dhis2_get_analytics', 'canRunAnalytics'], ['dhis2_get_data_statistics', 'canRunAnalytics'], // Programs (Tracker) ['dhis2_list_programs', 'canViewMetadata'], ['dhis2_create_program', 'canManagePrograms'], ['dhis2_list_tracked_entity_types', 'canViewMetadata'], ['dhis2_create_tracked_entity_type', 'canManagePrograms'], ['dhis2_list_tracked_entity_attributes', 'canViewMetadata'], ['dhis2_create_tracked_entity_attribute', 'canManagePrograms'], ['dhis2_list_program_stages', 'canViewMetadata'], ['dhis2_create_program_stage', 'canManagePrograms'], ['dhis2_list_program_rules', 'canViewMetadata'], ['dhis2_create_program_rule', 'canManagePrograms'], // Tracker Data ['dhis2_list_tracked_entity_instances', 'canViewTEI'], ['dhis2_create_tracked_entity_instance', 'canEnrollTEI'], ['dhis2_list_enrollments', 'canViewTEI'], ['dhis2_create_enrollment', 'canEnrollTEI'], ['dhis2_list_events', 'canViewTEI'], ['dhis2_create_event', 'canManageTrackerData'], ['dhis2_bulk_import_events', 'canImportData'], ['dhis2_get_event_analytics', 'canRunAnalytics'], ['dhis2_get_enrollment_analytics', 'canRunAnalytics'], // Dashboards and Visualizations ['dhis2_list_dashboards', 'canViewData'], ['dhis2_create_dashboard', 'canManageDashboards'], ['dhis2_list_visualizations', 'canViewData'], ['dhis2_create_visualization', 'canManageDashboards'], ['dhis2_list_reports', 'canViewData'], ['dhis2_generate_report', 'canExportData'], // Web App Platform Tools ['dhis2_init_webapp', 'canConfigureApps'], ['dhis2_configure_app_manifest', 'canConfigureApps'], ['dhis2_configure_build_system', 'canConfigureApps'], ['dhis2_setup_dev_environment', 'canConfigureApps'], ['dhis2_generate_app_runtime_config', 'canConfigureApps'], ['dhis2_create_datastore_namespace', 'canConfigureApps'], ['dhis2_manage_datastore_key', 'canConfigureApps'], ['dhis2_setup_authentication_patterns', 'canConfigureApps'], ['dhis2_create_ui_components', 'canUseUITools'], ['dhis2_generate_test_setup', 'canConfigureApps'], // Debugging Tools ['dhis2_diagnose_cors_issues', 'canDebugApplications'], ['dhis2_configure_cors_allowlist', 'canDebugApplications'], ['dhis2_debug_authentication', 'canDebugApplications'], ['dhis2_fix_proxy_configuration', 'canDebugApplications'], ['dhis2_resolve_build_issues', 'canDebugApplications'], ['dhis2_optimize_performance', 'canDebugApplications'], ['dhis2_validate_environment', 'canDebugApplications'], ['dhis2_migration_assistant', 'canDebugApplications'], // Android SDK Tools ['dhis2_android_init_project', 'canUseMobileFeatures'], ['dhis2_android_configure_gradle', 'canUseMobileFeatures'], ['dhis2_android_setup_sync', 'canConfigureMobile'], ['dhis2_android_configure_storage', 'canConfigureMobile'], ['dhis2_android_setup_location_services', 'canUseMobileFeatures'], ['dhis2_android_configure_camera', 'canUseMobileFeatures'], ['dhis2_android_setup_authentication', 'canConfigureMobile'], ['dhis2_android_generate_data_models', 'canUseMobileFeatures'], ['dhis2_android_setup_testing', 'canUseMobileFeatures'], ['dhis2_android_configure_ui_patterns', 'canUseMobileFeatures'], ['dhis2_android_setup_offline_analytics', 'canUseMobileFeatures'], ['dhis2_android_configure_notifications', 'canUseMobileFeatures'], ['dhis2_android_performance_optimization', 'canUseMobileFeatures'], // UI Library Tools ['dhis2_generate_ui_form_patterns', 'canUseUITools'], ['dhis2_generate_ui_data_display', 'canUseUITools'], ['dhis2_generate_ui_navigation_layout', 'canUseUITools'], ['dhis2_generate_design_system', 'canUseUITools'], ['android_generate_material_form', 'canUseMobileFeatures'], ['android_generate_list_adapter', 'canUseMobileFeatures'], ['android_generate_navigation_drawer', 'canUseMobileFeatures'], ['android_generate_bottom_sheet', 'canUseMobileFeatures'], ]);
- src/index.ts:1200-1211 (handler)Server request handler that dispatches 'dhis2_optimize_performance' tool calls to generatePerformanceOptimizations functioncase 'dhis2_optimize_performance': const perfArgs = args as any; const perfOptimizations = generatePerformanceOptimizations(perfArgs); return { content: [ { type: 'text', text: perfOptimizations, }, ], };
- src/debugging-helpers.ts:1155-1250 (handler)Core handler function implementing the tool logic: generates detailed performance optimization report with metrics analysis, strategies, implementation guides, budgets, and DHIS2-specific optimizations based on input parameters.export function generatePerformanceOptimizations(args: any): string { const { performanceIssue, metrics = {}, targetMetrics = {}, appComplexity = 'moderate' } = args; return `# DHIS2 App Performance Optimization ## Current Performance Analysis - **Issue Type**: ${performanceIssue.replace(/_/g, ' ').toUpperCase()} - **App Complexity**: ${appComplexity.toUpperCase()} ### Current Metrics ${Object.entries(metrics).map(([key, value]) => `- **${key.replace(/_/g, ' ').toUpperCase()}**: ${value}${getMetricUnit(key)}`).join('\n')} ### Target Metrics ${Object.entries(targetMetrics).map(([key, value]) => `- **${key.replace(/target_/g, '').replace(/_/g, ' ').toUpperCase()}**: ${value}${getMetricUnit(key.replace('target_', ''))}`).join('\n')} ## Optimization Strategy ${generateOptimizationStrategy(performanceIssue, metrics, appComplexity)} ## Implementation Guide ${generateImplementationGuide(performanceIssue)} ## Monitoring and Measurement ### Performance Testing Setup \`\`\`javascript // Performance measurement utility const measurePerformance = (name, fn) => { const start = performance.now(); const result = fn(); const end = performance.now(); console.log(\`\${name} took \${end - start} milliseconds\`); return result; }; // Usage example measurePerformance('Data Element Load', () => { // Load data elements }); \`\`\` ### Browser Performance API \`\`\`javascript // Track Core Web Vitals import { getCLS, getFID, getFCP, getLCP, getTTFB } from 'web-vitals'; getCLS(console.log); getFID(console.log); getFCP(console.log); getLCP(console.log); getTTFB(console.log); \`\`\` ## Performance Budget ${generatePerformanceBudget(appComplexity)} ## DHIS2-Specific Optimizations ${generateDHIS2Optimizations()} ## Monitoring Dashboard \`\`\`javascript // Simple performance dashboard component const PerformanceDashboard = () => { const [metrics, setMetrics] = React.useState({}); React.useEffect(() => { // Collect performance metrics const observer = new PerformanceObserver((list) => { const entries = list.getEntries(); setMetrics(prev => ({ ...prev, ...entries.reduce((acc, entry) => ({ ...acc, [entry.name]: entry.duration }), {}) })); }); observer.observe({ entryTypes: ['measure'] }); return () => observer.disconnect(); }, []); return ( <div> <h3>Performance Metrics</h3> {Object.entries(metrics).map(([name, value]) => ( <p key={name}>{name}: {value.toFixed(2)}ms</p> ))} </div> ); }; \`\`\` `; }