Skip to main content
The Analytics page carries a date range picker. useTapFilters() gives you its current value there and re-renders when the owner changes it; platform and country come through the same call but hold the project’s defaults today (iOS, all countries), because the host has no picker for them yet. On a surface with no picker bar — your own page, or a widget on another host page — the same call gives you the project’s current defaults and stays put.

What you get

What travels on its own

A procedure call carries all three without you passing anything: your server reads the same window in request.context.filters, and a widget that shows one number needs no code to follow the picker. A data query is written by you, so its range and platform are the ones in the query object above. The country picker is the exception — the host adds it to every read where a country is picked. Both hooks key their cache on the install, the query or input, and the filters, so changing a picker fetches and changing back reads the entry already held. Read the filters yourself when what you show is not what you asked for: a label, a comparison against the previous window, a copy button.
tap.format renders numbers, currencies, dates and relative times the way Tappify renders them, in the locale and time zone the host is running in. Use it rather than Intl directly so your numbers and Tappify’s read as one page.