Skip to main content
ComponentsJS Profiler
Availability2022.1 or later

Deploy the JS Profiler for SAP

Deeper evidence for SAP slowness

Self-Profiling API

Native browser profiling option

Advanced profiling settings

Tune sample duration and interval

Troubleshooting

Resolve SAP profiler issues

Deploy the JS Profiler for SAP

Deploy the GermainUX JS Profiler when standard real-user monitoring identifies a browser-side SAP problem that requires deeper JavaScript, rendering, or network evidence. The JS Profiler is intended primarily for selected support users, QA engineers, developers, and controlled diagnostic sessions. It is not required for standard SAP real-user monitoring or Session Replay.

What the JS Profiler monitors

The JS Profiler can provide advanced browser-side information about:
  • JavaScript execution
  • Function and call-stack activity
  • Long-running JavaScript operations
  • Main-thread blocking
  • Browser freezes
  • Client-side errors
  • Network requests
  • Resource activity
  • Browser performance
  • SAPUI5 and other frontend-code behavior
  • Third-party JavaScript

Important limitation: ABAP is not profiled by GermainUX

The JS Profiler does not directly profile ABAP or other server-side SAP code. Use the GermainUX Engine with SAP APIs, logs, traces, database telemetry, or other server-side monitoring to analyze:
  • ABAP execution
  • SAP application-server processing
  • Database operations
  • Backend integrations
  • Server-side exceptions
  • SAP job execution
Where compatible identifiers are available, GermainUX can correlate browser-side JS Profiler data with Engine-collected backend telemetry.

When to deploy the JS Profiler

Use the JS Profiler when you need to investigate:
  • Slow SAP screens or Fiori applications
  • Browser freezes
  • Long delays after a user action
  • Excessive JavaScript execution
  • Client-side rendering delays
  • Repeated or failed network requests
  • Errors that cannot be explained by standard RUM data
  • Problems affecting only specific users, browsers, or devices
  • Performance regressions after an SAPUI5 or frontend release
  • Third-party scripts affecting SAP performance
Begin with RUM JS to determine which users, pages, or processes are affected. Then enable profiling only for the relevant diagnostic scope.

Deployment options

The available profiling method depends on browser support, security policy, and whether you control the SAP application’s response headers.

Prerequisites

Before deployment, confirm:
  • RUM JS is deployed for the SAP application.
  • The SAP UX monitoring profile exists.
  • The affected application, pages, and users are known.
  • The target browser is supported.
  • The organization approves JavaScript profiling.
  • Browser-extension deployment is permitted, if required.
  • The browser can reach the GermainUX environment.
  • Privacy and data-retention rules are configured.
  • A rollback or disablement procedure is available.
For enterprise deployment, coordinate with:
  • SAP application owners
  • Browser-management administrators
  • Information security
  • Endpoint-management teams
  • GermainUX administrators

Enable JavaScript profiling

Go to: Germain Workspace > Analytics > UX Monitoring Profiles

1 Steps to enable

1

Select the profile used by the SAP application

2

Open the configuration editor

3

Select JavaScript Profiling Monitoring

4

Enable profiling

5

Select the appropriate profiling method

6

Configure user, page, duration, and sampling restrictions

7

Save the profile

Depending on the GermainUX version, UX Monitoring Profiles may appear under Settings > Analytics.

1 Option 1: Use the JavaScript Self-Profiling API

Use this option when the target browser supports the API and you can configure the required response header on the monitored SAP pages.

Configure the response header

Add this response header to each page where profiling is permitted:
The header must be present on the document response. Adding it through client-side JavaScript after the page loads does not grant the required document policy. The exact SAP, proxy, or web-server configuration depends on the deployment architecture. Review header changes with the SAP and security teams.

Enable the API in GermainUX

In the SAP UX monitoring profile:
1

Open JavaScript Profiling Monitoring

2

Enable the self-profiling option

3

Configure the profiling duration and sampling interval

4

Restrict profiling to the intended users or sessions

5

Save the configuration

6

Reload the monitored SAP application

Validate the API deployment

Confirm that:
  • The document response contains Document-Policy: js-profiling.
  • The browser supports the JavaScript Self-Profiling API.
  • No policy violation appears in the browser console.
  • Profiling data reaches GermainUX.
  • Only the intended applications and users are profiled.

2 Option 2: Deploy the JS Profiler browser extension

Use the browser extension when the self-profiling API is unavailable or the required response header cannot be configured.

Install the extension

Follow the general GermainUX JS Profiler deployment procedure to:
1

Obtain the supported extension

2

Install it in the target browser

3

Approve the required permissions

4

Configure the GermainUX hostname

5

Apply the SAP application profile

6

Restart the browser when required

For enterprise deployment, use the organization’s approved browser-management mechanism.

Browser notification

As a browser security feature, the browser may display a notification while a page is being profiled. If the user closes or cancels the notification, profiling can stop for the current page or tab. The user may need to open the SAP application in a new tab before profiling resumes. Inform diagnostic users about:
  • Why the notification appears
  • Which sessions are being profiled
  • How long profiling will remain enabled
  • How to report or stop unexpected profiling

Optional managed-browser configuration

The GermainUX documentation identifies this Chrome launch option for controlled deployments:
When approved and supported, it can be added to the Chrome shortcut or managed launch configuration used by the diagnostic user. Example target:
This browser option affects security-related behavior and must be reviewed by the organization’s endpoint and information-security teams before production deployment. Browser behavior and support can change between Chrome versions. Validate the option with the exact managed browser version before rollout.

Target profiling

Do not profile every SAP user continuously unless there is a validated requirement and the environment has been sized accordingly.

Target specific users

Use:
  • includedUsernames to profile only selected users
  • excludedUsernames to prevent profiling for selected users
Example:
Or:
An undefined or empty list means no restriction for that setting. Do not place passwords, tokens, or unnecessary personal information in these lists.

Target specific SAP applications or pages

Restrict profiling by:
  • Application
  • Environment
  • Hostname
  • URL
  • Fiori application
  • Logical page
  • User group
  • Time period
  • Diagnostic condition
Use the smallest scope that can reproduce the issue.

Advanced profiling settings

The available settings.plugins.jsProfiling settings include: Example:
Add these settings before starting RUM JS:

Configuration tradeoffs

Begin with the default values and adjust only after reviewing the collected data and browser overhead.

Privacy and security

Profiling can reveal technical details about application execution and network activity. Configure:
  • User targeting
  • Page exclusions
  • URL sanitization
  • Network header exclusion
  • Request and response-body exclusion
  • Sensitive-data masking
  • Data retention
  • Role-based access
  • Audit controls
Do not capture:
  • Passwords
  • Authentication tokens
  • Session cookies
  • Sensitive request headers
  • Personal or business-confidential data
  • Full request or response bodies unless explicitly approved
The JS Profiler should not be used to bypass SAP, browser, or organizational security controls.

Reproduce and analyze an issue

Use a controlled reproduction procedure:
1

Identify the affected SAP application and user workflow

2

Enable profiling for the selected diagnostic user

3

Start a new browser session

4

Open the SAP application

5

Perform only the steps required to reproduce the issue

6

Record the reproduction time

7

Stop profiling or close the diagnostic session

8

Open GermainUX

9

Locate the corresponding user session

10

Analyze the profiling data with pages, clicks, errors, and requests

Review:
  • Total JavaScript execution time
  • Long-running functions
  • Repeated function activity
  • Main-thread blocking
  • Network wait time
  • Browser idle time
  • Resource loading
  • Error timing
  • The action immediately preceding the problem
  • Related SAP or integration requests

Correlate with backend SAP telemetry

A slow SAP user action can include both browser and backend time. Where supported, correlate:
1

User click or action

2

Browser JavaScript activity

3

Outbound request

4

SAP API or application-server activity

5

Log event

6

Database activity

7

Browser rendering and completion

Use the Engine for backend evidence. Do not infer that JavaScript is the root cause merely because the total user action was slow.

Validate the deployment

Confirm that:
  • Profiling is enabled only for intended users or pages.
  • The extension or Self-Profiling API starts successfully.
  • The document policy is present when required.
  • Profiling data appears in GermainUX.
  • The data is associated with the correct SAP session.
  • JavaScript samples cover the reproduction period.
  • Network activity is correlated correctly.
  • No sensitive data is collected.
  • Browser overhead remains acceptable.
  • Profiling stops when disabled.

Disable JavaScript profiling

When diagnostics are complete:
1

Go to Germain Workspace > Analytics > UX Monitoring Profiles

2

Select the SAP profile

3

Open JavaScript Profiling Monitoring

4

Disable profiling or remove the targeted users

5

Save the configuration

6

Remove the extension, response header, or managed browser option when it is no longer required

7

Confirm that new profiling data is no longer collected

Leaving profiling enabled indefinitely for a temporary diagnostic user can create unnecessary overhead and data volume.

Troubleshooting

No profiling data appears

Verify:
  • JavaScript profiling is enabled.
  • The user is included and not excluded.
  • The SAP URL matches the profile.
  • RUM JS loads successfully.
  • The extension is installed and active.
  • The browser supports the selected method.
  • The Document-Policy header is present for self-profiling.
  • The browser can reach GermainUX.
  • Consent and privacy rules permit collection.
  • The session remained open long enough to create a profile.

Document-policy violation appears

Confirm that the page response includes:
If the required header cannot be configured, disable useSelfProfilingAPI or deploy the supported browser extension.

Browser notification was dismissed

Open the SAP application in a new tab and reproduce the issue again. For managed deployments, review whether an approved enterprise configuration is appropriate.

Profiling increases browser overhead

Reduce:
  • Profiling duration
  • Sample-buffer size
  • Number of targeted users
  • Number of targeted applications
  • Profiling frequency
You can also increase the sample interval, which reduces sample frequency.

Profile ends before the issue occurs

Increase maxProfileDuration cautiously or start profiling closer to the action being investigated.

Get More Information

GermainUX can help determine which monitoring, analytics and automation capabilities are appropriate for your Salesforce Experience Cloud environment. Contact GermainUX Support.

Get Help

Contact GermainUX Support

The GermainUX team helps you get up and running faster, empower your team, turn data into actionable insights, and optimize performance to deliver measurable business outcomes.

Can't find what you need?

Search all GermainUX docs with Ctrl + K, or use the feedback buttons at the bottom of this page to tell us what is missing.

The content of this document is proprietary to GERMAIN SOFTWARE.