# Mute schedules, dashboard links, and mobile vitals

> Mute alert rules on a weekly schedule, add your own links to dashboards and panels, and see frame rate and memory for each mobile RUM view.

Source: https://last9.io/changelog/mute-schedules-dashboard-links-and-mobile-vitals/

### Mute schedules for alert rules

A nightly batch job or a fixed maintenance slot used to mean muting and unmuting a rule by hand. An alert rule can now mute itself on a weekly schedule. Open the rule's actions menu in [Alert Rules](/docs/alert-rules/) and select **Add Mute Schedule...**.

- Pick the **Weekdays**, a **Start Time** and **End Time**, and a **Timezone**. A window can cross midnight, such as 22:00 to 02:00.
- Only notifications stop. The rule keeps evaluating, and its state and history keep updating during the window.
- The schedule is separate from a manual mute. **Unmute** clears a manual mute and leaves the schedule in place.
- The Rules table and Alert Monitor show when a rule is muted by its schedule.

### Links on dashboards, panels, and data points

Moving from a dashboard to a runbook, a related dashboard, or another tool used to mean copying names and time ranges by hand. [Dashboards](/docs/using-dashboards/) now take links that you define, and the links are saved with the dashboard.

- **Custom Links** in **Dashboard Settings** add links to the dashboard header. A link is either a **URL** or **Dashboards with tags**, which opens a menu of the dashboards that share a tag.
- **Panel Links** in the panel editor attach links to one panel.
- **Data Links** open from a clicked data point, with its series fields and value filled into the URL.
- **Keep Time Range** and **Include Variables** add the dashboard's time range and variable values to the URL, so the destination opens on the same context.

### Frame rate and memory for each mobile view

In a mobile app, a screen that stutters or uses too much memory was hard to find from a session. Each view in a mobile [Applications (RUM)](/docs/discover-applications-sessions/) session now shows how smoothly it rendered and how much memory it used, on Android, iOS, React Native, and Flutter.

- Open a view and look under **Mobile Vitals** in its **Attributes** tab.
- **Refresh Rate (avg)** and **Refresh Rate (min)** are scaled to 0–60 fps, so 60 Hz and 120 Hz devices compare directly.
- **Slow Frames** and **Frozen Frames** count dropped frames. A frozen frame takes longer than 700 ms.
- **Memory (avg)**, **Memory (max)**, and **CPU Usage** show the resource use of the view.
- React Native also shows **JS Refresh Rate**, so a busy JS thread shows up even when native frames look healthy.
- Needs RUM SDK 1.7.0 or later. Collection is on by default, and follows the `resourceMonitoringEnabled` setting. See the [RUM changelog](/docs/real-user-monitoring/changelog/).

### Improvements

- **Metrics**: The query in the **Create Alert** dialog of [Metrics Explorer](/docs/metrics-explorer/) was read-only. The **PromQL Query** field is now editable, with the same autocomplete as the explorer.
- **MCP**: `get_databases` listed only the databases that traced services call. It now also finds databases from infrastructure metrics.

### Fixes

- **AI Assistant**: Users with the Viewer role could not ask the [AI Assistant](/docs/ai/ai-assistant/) questions, and saw a generic error instead of a permission message.
- **Dashboards**: Changing a variable value did not show the **Save** button, so you could not save the new value.
- **Discover**
  - **Applications (RUM)**: On Android, when the SDK started after the first screen showed, as in React Native and Flutter apps, a return from the background was reported as a very long cold start. Fixed in Android SDK 1.6.12.
  - **ECS**: The **Services** and **Tasks** lists in [Discover ECS](/docs/discover-ecs/) did not scroll past the rows that fit on the screen.
- **Metrics**: Creating an alert from Metrics Explorer failed for counter and histogram queries that used `$__rate_interval`.
- **MCP**
  - A `search_term` in `get_alert_config` did not match the team, tier, or labels shown on each rule.
  - The label filter in `get_alert_groups` could miss a matching alert group, depending on the case of the label key.
  - `get_apm_service_deviations` with `max_services` could fill the result with improvements and leave out a regression.
