Commit Graph
82 Commits
Author SHA1 Message Date
Ignacio Dobronich 60a2a5e092 chore: observability dashboard entitlements (#43502)
## Changes
- Replaces plan ID-based chart gating with entitlement-based checks
across all observability pages (database, auth, realtime,
edge-functions)
- Adds requiredPlan display field so the upsell shows the correct target
plan (e.g. "Upgrade to Team" for disk throughput, not just "Upgrade")
- Decouples database-charts.ts from Organization Plan, now accepts
pre-computed entitlement flags instead

### Note on `requiredPlan`
The entitlement system currently tells us whether a user has access, but
not what plan they need to get access. `requiredPlan` is a frontend-only
display hint. Ideally the backend entitlement response would include a
minimumPlan field so we can remove this hardcoded mapping. For now, this
is a pragmatic workaround to avoid misleading upsell copy (e.g. a Free
user seeing "Upgrade" for a Team-only feature and landing on Pro).


## Testing 

### Database
- Head to `/project/_/observability/database` with an Org on the Free
Plan and assert that the Disk throughput is gated.

<img width="1402" height="682" alt="image"
src="https://github.com/user-attachments/assets/b783d866-774d-44dc-88d1-797d26502f02"
/>

### Auth
- Head to `/project/_/observability/auth` with an Org on the Free Plan
and assert that the following metrics are gated:

<img width="1402" height="682" alt="image"
src="https://github.com/user-attachments/assets/cb062dd7-5864-4e40-a11f-ad6be1f7fd41"
/>

### Edge Functions
- Head to `/project/_/observability/edge-functions` with an Org on the
Free Plan and assert that the following metrics are gated:

<img width="1402" height="320" alt="image"
src="https://github.com/user-attachments/assets/517b5483-4575-493c-9401-2c67ac9e684c"
/>


### Realtime
- Head to `/project/_/observability/realtime` with an Org on the Free
Plan and assert that the following metrics are gated:

<img width="1402" height="722" alt="image"
src="https://github.com/user-attachments/assets/0c2757a2-8482-43f4-a65c-c0dde3d878c7"
/>
2026-03-11 16:57:53 -03:00
Jordi Enric f9f0021401 fix iops chart max value (#43182)
The Y axis domain/range was being calculated incorrectly. 

Testing this is a bit painful. You need to: 
- using tweak-extension or similar overwrite the API response for the
IOPS chart and add a really big value
- reload the page
- the Y axis should adapt to that really big value even if it goes over
the disk max iops

See screenshots below

## before
- big data point wouldn't change the chart range 
- Y Axis max is 6k even tho we have a data point over 20k
<img width="1204" height="714" alt="CleanShot 2026-02-25 at 18 47 14@2x"
src="https://github.com/user-attachments/assets/881aff6e-22a2-408d-b2c4-5a27f3fda386"
/>

## after
- the Y axis shows the correct range
<img width="932" height="786" alt="CleanShot 2026-02-25 at 18 47 57@2x"
src="https://github.com/user-attachments/assets/6247c66e-4b3e-49e9-9f6b-086086913fab"
/>
2026-02-25 19:33:57 +01:00
Jordi Enric 785625c92f fix: add compact formatting to Y axis numbers in db charts (#43170)
In the db charts, numbers in the Y axis are not formatted, sometimes
these get too big and get cut-off.

## before
(in this example it is not cutoff because the number is not big enough)
<img width="1020" height="634" alt="CleanShot 2026-02-25 at 11 20 35@2x"
src="https://github.com/user-attachments/assets/bc29edcc-331f-44d1-934f-1553b895c338"
/>

## after
<img width="936" height="676" alt="CleanShot 2026-02-25 at 11 21 07@2x"
src="https://github.com/user-attachments/assets/eae4ea4c-b8cd-4fe4-a361-9b029955217b"
/>
2026-02-25 18:42:17 +01:00
Jordi Enric f237b7bf2e refactor new homepage usage (#42394)
- uses old data source for charts
- uses new chart styles
- adapts the chart tooltip to be configurable
- removes animations from tooltip to prevent weird position transitions
- hides tooltip when there's no data

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Improvements**
* Project usage now shows log-based statistics and filled time-series
for request trends.
* UI simplified to display total requests per service; error/warning
counts removed from main view.
  * Functions service removed from usage list.
* Chart tooltips hide zero-value series when enabled and support
configurable series labeling.
* **Chores**
  * Telemetry adjusted to make error count optional when not available.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-04 09:43:01 +01:00
Joshen Lim 2ce307130a Update API types and properly render replication lag in replica detail page (#42191)
* Update API types and properly render replication lag in replica detail page

* Forgot to add the api types
2026-01-28 15:34:01 +08:00
Jordi Enric eb85515acb minor percentage formatting fixes (#41923)
* support total percentage normalization and show idle time in cpu usage chart

* pretier

* improve test

* clarify in comment why new prop is necessary

* fix type error int est

* refactor to use max value instead of idle property, add more tests

* cleanup composed chart

* prettier

* fix tests

* react improvements

* remove unused stacking properties

* remove rest property references as it wont be used

* fix comment and max cpu desc

* test the resolvehighlightedvalue function

* undo unnecessary composedcharthandler change

* remove unnecessary comment

* minor db charts percentage formatting fixes

* move format check

* fix issue with conflict resolution
2026-01-27 13:07:39 +00:00
kemal.earth 434d8735f3 feat(studio): swap area chart fills for gradients (#42063)
* feat: swap area chart fills for gradients

* chore: further tweaks

* fix: light mode gradient stop thanks coderabbit
2026-01-22 12:53:13 +00:00
Jordi Enric 6fe990c658 papercut: add units to api charts (#42027)
* add units

* prettier
2026-01-22 13:34:34 +01:00
kemal.earth 6c6d74fa21 fix(studio): modify area chart colours (#41496)
* fix: modify area chart colours

* feat: tones for dark and light

* chore: cleaning up

* chore: remove weird ai added debug fetches

* fix: suggestion from coderabbit

* chore: clean up

* feat: change from natural to bump on line charts

* fix: much better colour offset

* chore: remove comments

* feat: better dot implementation

* chore: remove unused props

* chore: remove pointless try catch
2026-01-08 10:06:51 +00:00
Jordi Enric aec9be147a chart: handle values below 0.01 (#41742)
* fix

* fix file
2026-01-06 17:29:29 +00:00
Jordi Enric 7da8131a63 Fix chart tooltip stacking over legend FE-2130 (#41357)
fix
2025-12-15 18:04:26 +01:00
Ivan Vasilov 0d5be306ef chore: Bump React Query to v5 (#40174)
* Bump the deps, refactor deprecated code.

* Migrate keepPreviousData usage.

* Migrate all uses of InfiniteQuery.

* Fix refetchInterval in queries.

* Migrate all use of isLoading to isPending in mutations.

* Fix accessing location in claim-project.

* Fix a bug in duplicate query keys.

* Migrate all queries to use isPending.

* Revert "Fix accessing location in claim-project."

This reverts commit 2a07df64b5.

* Revert the rss.xml file to master.
2025-12-10 10:10:29 +01:00
Jordi Enric 434634f59f fix(reports): update disk metrics (#41108)
* update docs

* update composedchart to accept bytes per sec

* handle bytes per sec

* update charts
2025-12-09 18:08:32 +01:00
Raúl Barroso 09df6e8373 refactor: infra queries to use attributes (#41018)
* refactor: infra queries to use `attributes`

This PR refactors the infrastructure monitoring query code reducing duplication and unifying the API request to always be `attributes`:

•  Removed the separate useInfraMonitoringQuery hook and getInfraMonitoring function that handled a single monitoring query
•  Consolidated all infrastructure monitoring queries into a unified useInfraMonitoringAttributesQuery hook that handles multi-attribute requests
•  Moved interval selection logic from the query layer to the consumer (InfrastructureActivity.tsx), where it can be computed dynamically based on user-selected date ranges
•  Simplified query types by removing intermediate InfraMonitoringData and InfraMonitoringVariables types
•  Interval is now computed in the component (defaults to 1d, switches to 1h for date ranges ≤48 hours) rather than hardcoded in the query layer
•  All queries now use the unified multi-attribute endpoint with explicit parameter passing

* fix: handle single-attribute response format
2025-12-04 16:16:12 +01:00
Ali WaseemandJoshen Lim b04e54b38a fix: sentry errors (#40875)
* fix: SUPABASE-APP-90D

* fix: SUPABASE-APP-90C

* fix: SUPABASE-APP-6HC

* fix: SUPABASE-APP-A38

* fix: SUPABASE-APP-9JB

* Improve types for RowContextMenu.tsx

* Improve types for useChartHighlight

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-11-28 19:17:07 +08:00
4a9def58c1 feat(studio): rename reports to observability (#40317)
* feat: rename reports to observability on nav sidebar

* fix: observability route

* feat: observability navigation and redirects

* fix: first time load redirects

* feat: change auth overview reports link

* feat: clean up of other links to observability sections

* fix: query perf redirects

* chore: find exhaustive deps and disable for time being

* fix: charis suggested fixes

* fix: forgotten suggested fix

* chore: delete old reports views files

* fix: paths in reports tests

* fix: url sync useEffect should trigger only once

* feat: reorganise observability sidebar

* fix: data api not being selected

* fix: wrong layout for realitime

* fix: custom reports reloading

---------

Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
Co-authored-by: Ali Waseem <waseema393@gmail.com>
2025-11-18 17:54:05 +00:00
038249088a feat: update realtime report (#40252)
* feat: update realtime report

Co-authored-by: Jordi Enric <jordi.err@gmail.com>

* fix: misc bug fixes

* fixup! fix: misc bug fixes

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
Co-authored-by: Ali Waseem <waseema393@gmail.com>
2025-11-12 10:33:27 -05:00
Joshen Lim cac225b24a Clean up barrel files part 4 (#40015)
* Clean up barrel files part 4

* nit
2025-10-31 00:30:42 +08:00
Jordi Enric c55266b425 feat: add tz in tooltip FE-1849 (#39596)
* add tz in tooltip

* clean
2025-10-16 17:16:42 +02:00
kemal.earth 70a64f8c00 feat(studio): query performance metrics chart (#39431)
* feat: setup chart area and tabs

This sets up the area where we can expect the insights chart as well as the tabs mechanism.

* feat: parse pg_stat_monitor logs as json

* feat: create query perf chart utils and move transfrom function

Created a utils file for our QueryPerformanceChart component. This moves the logs to JSON transform function there.

* feat: add timerange to chart

* feat: add date selector to query perf overview

This adds the selector to the top right of the page allowing the user to switch between last hour, 3 hours and 24 hours

* feat: modify chart component to accomodate hiding bits

* feat: add metrics to each tab

* chore: update to 60 min by default and some css

* feat: centralise data parsing for logs

* feat: clean up filters bar

This rewires the export to give you the aggregate pg_stat_monitor data. Also removes unused buttons and filters.

* feat: percentiles for query latency chart

* feat: filter out non evenets from pg_stat_monitor logs

* feat: utils for cache misses and hits

* feat: add selected query to chart on click

* feat: add click through to query panel

* chore: tidy up files

* chore: distinction between selected and open panel

* feat: move query performance fully into reports area

* fix: preserve query params on reports link

* fix: remove right icon syntax in report menu

* chore: remove cache misses from cache chart

* refactor: backwards compatibility for statements if right db version isnt available

* chore: delete randomly generated empty file

* chore: tidy up unused imports and vars

* chore: remove console logs

* chore: remove isMounted from query perf

* fix: cmd k query perf path

* feat: simplify query latency only p50 and p95

This seems to give us a more accurate reading as we can calculate these two

* fix: cache hit rate not showing inside query details

* chore: chart bg colour adjust

So it contrasts a little better on light mode.

* feat: show selected query on other verticals

* feat: bring back symlink in advisors
2025-10-15 13:39:29 +01:00
Jordi Enric b5a638bfc6 auth report improvements (#39013) 2025-10-09 09:58:32 +02:00
Joshen Lim 50ece6a4f6 Replace LogChartHandler with LazyComposedChartHandler in ReportChartUpsell (#39286) 2025-10-08 10:39:29 +08:00
Kevin Grüneberg e4aee0728c chore: project daily stats caching / deprecated props (#39277)
Remove deprecated props that have no effect on behaviour and fix the caching (based on date instead of timestamp)
2025-10-06 16:39:49 +08:00
Jordi Enric 133271894c FE-1862 Report Chart: Always show tooltip values (#39160) 2025-10-01 14:17:20 +02:00
Jordi EnricandJoshen Lim c9033b1035 FE-1864 FE-1868 reports kaizen 2 (#38881)
* make opts configurable per report

* Minor nits

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-09-23 13:56:48 +02:00
Jordi Enric 9a2140b291 chart footer tooltip improvs (#38858)
improvs
2025-09-23 13:56:03 +02:00
Saxon Fletcher 0c8359ca0f Refine home styles (#38903)
* home row size

* use prop instead

* revert previewer
2025-09-22 04:42:03 +00:00
Jordi EnricandCharis c75bb1b60d Auth Report tests and improvements (#38550)
* move to new ReportConfig

* separate types

* add auth report config

* add auth report transofmration test

* add fetchlogs util for reports

* rm auth-charts

* rm auth-report-query

* rm dupped code

* simplify upsell compo

* rm unnecessary hook

* use upsell in database report instead of old component

* rip ReportChart you wont be missed

* more tests

* rm unnecessary import

* Fix SQL in active users

* support hide inside report chart component

* add max bar size to avoid having big ass bars when theres little data

* fix incorrect timestamp key passed on to fillTimeseries

* add tooltip to auth report

* fix bug with timestamp key inside tooltips

* add report settings

* rm debugging check

* Update apps/studio/data/reports/v2/auth.config.ts

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* safely access result

* fix sign in latency query

* add toggleable attributes

* handle toggleable attributes

* pass on hideHighlightedValue

* fix signup latency

* pass hideHighlighted

* report chart pass on hide highlighted value

* cleanup finalChartData

* simplify tests, use timestamp for everything

* fix test

* rm dupped attribute

* add tooltip to auth errors

* Update apps/studio/data/reports/v2/auth.config.ts

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/studio/components/ui/Charts/ComposedChart.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* prettify

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-09-17 17:41:10 +02:00
Joshen Lim 1160f89b70 Address various console warnings (#38789) 2025-09-17 22:36:07 +08:00
ZiincandJordi Enric 2049e75c1d feat: more charts, use functions.combined-stats (#38128)
* feat: more charts, use functions.combined-stats

* fix padding bottom

* spacing fix

* fix empty state missing title

* fix spacing

* fix api types

* fix api types 2

* fix type errors

* add flag

* rm consolelog

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
2025-09-05 10:43:57 +00:00
Jordi Enric dee5ff1194 edge function report: cleanup and url filters (#38446)
* rm dupped value

* use zod in reportsnumericfilter

* use zod in reportsselectfilter

* use nuqs in filters

* validate data before change

* unnecessary changes

* fix some type errs update tests

* use command to add search to select filter

* update styles / clear btn in num filter

* add search to edge fn report

* fix clickable area

* fix test

* default true

* fix availablein

* sum paddin

* fix default values in tests
2025-09-05 11:49:08 +02:00
Jordi EnricandJoshen Lim 3dd065efce Add Edge Function Report Filters (#38369)
* add regions

* update chart

* add numeric filter

* add select filter

* update types

* update edge fn ui

* update report config to use filters

* remove unused event

* export wherefn

* add where fn tests

* rm unnecessary memo

* make type optional

* rm any

* fix keys, add missing flag, add flags to region filter

* bye div

* bye div2

* pass refresh state

* type err

* Minor style fix

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-09-04 14:03:40 +07:00
f65884f341 Reports consolidation 1: Edge Functions (#38129)
* wip

* add formatTimestamp for reports

* add tests for formatTimestamp

* fix type err

* rm old chart logic

* do not retry replication sources

* update report config schema

* use report config

* fix charts, simplify config

* sync charts

* rm comment

* usefilltimeseries

* move chart upsell to its own component

* cleanup v2 chart component

* fix chartheader function format bug

* make attributes dynamic

* move types to its own file

* update reportv2chart types

* update reportv2 chart type

* use new edgefn report

* rm mock

* rm old code

* fix type err

* fix type err

* rename hook

* return sql in dataprovider

* add button to open in log explorer in chart header

* fix type

* fix chart type toggle

* fix type error

* export data transformation for testing

* add tests for data transformation

* rm dupped code

* add report settings to edge fn report

* rm mocked data

* rename

* fix type err

* Apply suggestion from @joshenlim

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>

* rm unnecessary div

* rm unnecessary props from report upsell

* cleaner query keys

* move loadin/error/empty states to inside panel content to prevent layout shift

* use card instead of panel

* use buttontooltip in chartheader

* use buttontooltips in buttons with tooltips

* rm export default

* rm export defualt

* rm i from key

* fix status code transformation

* fix filltimeseries

* add tests for filltimeseries

* fix data transform

* pass xaxis key to chart

* refactor hover state to use timestamp not index

* fix tests

* fix areachart

* fix barchart

* fix chartheader

* fix composedchart

* fix stacked

* fix type missing xaxiskey

* type fix

* Revert "refactor hover state to use timestamp not index"

This reverts commit cfd7886460.

* undo charthover changes, fix data aggregation

* Revert "fix tests"

This reverts commit e5200a2035.

* move transforms to testable functions, add tests

* nit refactors and clean up

* feat: add aws nimbus cloud provider (#38312)

* feat: add aws nimbus cloud provider

* Fix return type of useCustomContent hook

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>

* add utc plugin to dayjs

* move plugins to vitest setup

* rm customparser plugin

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2025-09-01 11:10:30 +02:00
Jordi Enric 0006490e92 Adds Report Settings, Chart Header and Tooltip Sync features (#37866)
* add charthover state hook

* update area and barchart

* update chart handler

* update chart header

* add report settings

* update stacked barchart

* update composedchart

* rm old components

* add tests
2025-08-26 11:49:28 +02:00
kemal.earth f253e617fe feat(studio): update chart highlight colour (#37927)
* feat: update chart highlight colour

* feat: add handling for dark and light mode

This keeps the highlight area green on light mode still as light mode had no issues. It also modifies the fillOpacity in dark mode to be a bit more balanced.

* fix: little more subtle on darkmode
2025-08-18 13:38:41 +01:00
Jordi Enric 28e5a0ef19 add syncing between charts (#37599)
* add syncing between charts

* fix typeerr

* cleanup
2025-08-07 18:51:45 +02:00
Jordi Enric c386daf3a0 add max cpu usage chart (#37532)
add max cpu usage
2025-07-29 16:20:05 +02:00
Joshen Lim a26f96570e Fix missing x axis labels in reports (#37378)
* Fix missing x axis labels in reports

* Improve guard
2025-07-22 16:51:28 +02:00
Jordi Enric dfacfd5137 Reports clean ups (#37248)
* use similar ui styles for different charts

* fix naming

* use similar styles, fix height

* rm year from tooltip timestamp

* remove unnecessary code in useChartData
2025-07-17 16:08:22 +02:00
Cemal KılıçandJordi Enric 09fc7776b5 feat: update auth sign in report query (#37240)
* feat: update auth sign in report query

* fix chart config

* fix type error for custom properties in chart attributes

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
2025-07-17 15:45:44 +02:00
Jordi Enric d8acd6752c fix timestamp missing (#37242)
fix
2025-07-17 12:33:33 +02:00
Francesco Sansalvadore 097ded6906 standardize db report (#37198)
* init standardization

* same charts

* clean up charts

* cleanup

* restore condition

* remove comment

* show availableIn placeholder
2025-07-16 12:29:01 +02:00
Jordi Enric ae1d25d22b fix filltimeseries for reports (#37160)
* fix filltimeseries

* fix type err

* fix seconds in tooltip changing

* fix filter default values
2025-07-15 20:38:03 +02:00
Jordi Enric 804f270c3a reports pricing (#36992)
* add database pricing config

* pricing paywalls

* fix showing correct charts

* fix test

* remove disabled helpers in favor of upsell dialog

* fix missing fn to calc time

* rm clog

* show badge next to helpers

* ui fix

* fix type errs

* fix hallucinated import fml
2025-07-14 16:45:29 +02:00
Jordi Enric 302d15b5fd format data to ms in execution time - edge fn report (#36836)
* add formatter

* add format prop

* fix type err
2025-07-10 14:53:07 +02:00
Francesco Sansalvadore a78026dc73 Chore/uniform reports daterange picker (#36989)
* sync date range picker across reports
* sync report daterange pickers across reports using nuqs
2025-07-10 12:35:20 +02:00
Francesco Sansalvadore c508348b07 fix db charts (#36803)
* fix db chart tooltip
* fix condition
* move Disk Size chart close to Db size panel
2025-07-08 08:22:46 +00:00
Francesco SansalvadoreandTerry Sutton 8c41ec5e66 feat: reports storage (#36442)
* init storage charts v2

* add storage chart endpoint

* add storage charts to storage

* cleanup storage reports

* chore: try functions report

* fix storage sql composition

* clear menu

* chore: use FilterBar to filter storage report

* chore: fix api report product filtering

* comment path

* remove Response Errors storage chart

* update filtering UI

* fix filtering concatenation logic

* refactor components to useReportFilters hook

* cleanup

* fix filter concatenation

* add filerable text input

* add AND between filters

* fix padding

* Temp remove filter bar

* Nudges

* Swap collapsible component

* fix cache hit and cache miss queries

* Link to cache guide

* Add a flag for storage report

---------

Co-authored-by: Terry Sutton <saltcod@gmail.com>
2025-07-03 13:43:24 +02:00
Jordi Enric 3d88e1a03d Edge Function Report (#36763) 2025-07-02 15:54:39 +02:00
Jordi Enric 92eabe3e3e Auth + Database Report Fix (#36768)
rollback previous files and move auth changes to new files
2025-06-30 16:04:33 +02:00