Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Website

This website is built using [Mintlify](https://www.mintlify.com/), a modern documentation platform

## Local Development

```console
npm i -g mint
mint dev
```
A local preview of your documentation will be available at `http://localhost:3000`.


Additionally you can edit using Mintlify's web editor
25 changes: 25 additions & 0 deletions faqs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: "FAQs"

## Testing

<a id="how-should-i-test-radar-battery-drain"></a>
### How should I test Radar battery drain?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is done because Mintlify adds the ? to the href, unfortunately Mintlify search doesn’t append the ? to the search

ie this works

https://docs.radar.com/faqs#can-i-test-radar-side-by-side-with-another-location-sdk%3F

while this bottom link doesn’t

https://docs.radar.com/faqs#can-i-test-radar-side-by-side-with-another-location-sdk

Before Docusaurus automatically removes the ?

https://documentation-radar.vercel.app/faqs#how-should-i-test-radar-battery-drain

I’m going to assume Docusaurus is closer to the implementation we want as the ? is pressumably removed for query parameters.

I tried looking at mintlify docs such that we can strip the ? while routing but doesn’t look like it exist. This is probably the easiest solution but it’s a little tacky so I’m open to other ideas


To test battery drain attributable to Radar background tracking in your iOS or Android app, you must isolate battery drain attributable Radar's usage of location services.
Expand All @@ -28,6 +29,7 @@ When using the efficient and responsive tracking presets, the SDK will wake up w

See the [SDK documentation](/sdk/sdk) and [Navigating location services tradeoffs between accuracy, frequency, and battery efficiency](https://radar.com/blog/navigating-location-services-tradeoffs-between-accuracy-frequency-battery-efficiency) for more information.

<a id="can-i-test-radar-side-by-side-with-another-location-sdk"></a>
### Can I test Radar side-by-side with another location SDK?

Many developers switch to Radar from other location SDKs. You can test Radar side-by-side with another location SDK, but keep in mind that there may be side effects on iOS.
Expand All @@ -38,6 +40,7 @@ On Android, this is not an issue.

## Product

<a id="is-radar-still-able-to-track-location-in-the-background-if-the-app-is-killed"></a>
### Is Radar still able to track location in the background if the app is killed?

Yes, if background location permissions have been granted.
Expand All @@ -52,18 +55,22 @@ On iOS, if the app is killed (e.g., swiped up from the App Switcher), the SDK is

On Android, Radar will continue to receive location updates if the app is swiped out of the Recent Apps list. Radar will not receive location updates if the phone manufacturer aggressively kills background services or the user presses _Force stop_.

<a id="if-a-user-backgrounds-my-app-do-i-need-to-request-background-location-permissions-to-access-location"></a>
### If a user backgrounds my app, do I need to request background location permissions to access location?

With just foreground location permissions, you can leverage the [background location indicator](https://developer.apple.com/documentation/corelocation/cllocationmanager/2923541-showsbackgroundlocationindicator) on iOS or a [foreground service](https://developer.android.com/guide/components/foreground-services) on Android to continue to receive location updates in the background. These are activated via the `showBlueBar` [tracking option](/sdk/tracking#ios-options) on iOS or the `foregroundService` [tracking option](/sdk/tracking#android-options) on Android. iOS devices will display a blue location icon when activated, and Android devices will display a persistent notification. Use of these visual indicators is common for operational use cases such as fleet tracking and delivery.

<a id="what-are-the-different-event-listeners-and-how-should-i-use-them"></a>
### What are the different event listeners and how should I use them?

Each listener can support different use cases and exposes different data to take actions. The client location listener (`onClientLocationUpdated` on Android, `didUpdateClientLocation` on iOS) is fired whenever the Radar SDK receives a location update from the device. It can be used to collect a stream of location updates before they hit Radar servers. The location updated listener (`onLocationUpdated` on Android, `didUpdateLocation` on iOS) delivers location updates processed by Radar servers and will return refreshed user context. This listener can be used to deliver in-app experiences based on user context, including when `Radar.trackOnce()` is called on application launch. The Radar events listener (`didReceiveEvents` on Android and iOS) can be used to listen for Radar events and trigger workflows.

<a id="what-is-the-latency-of-radar-apis"></a>
### What is the latency of Radar APIs?

Radar APIs have a p50 latency of 50ms and a p90 of 150ms. The `/route/matrix` API increases in latency as additional `origin` or `destination` points are added, or as the distance between points increases.

<a id="how-often-are-usage-statistics-recalculated"></a>
### How often are usage statistics recalculated?

Usage statistics are recalculated nightly and reflect the total Monthly Tracked Users (MTUs) and API requests made in the month. Usage statistics can be found on the [Home](https://dashboard.radar.com) page of the Radar dashboard.
Expand All @@ -76,6 +83,7 @@ The Radar SDK collects location data (latitude, longitude), device IDs, IP addre

For more information, see our [privacy policy](https://radar.com/privacy), our [commitment to privacy](https://radar.com/blog/our-commitment-to-privacy), and our [location data privacy checklist](https://radar.com/blog/location-data-privacy-checklist).

<a id="what-are-privacy-best-practices-for-radar"></a>
### What are privacy best practices for Radar?

- Do not send any PII, like names, email addresses, or publicly available IDs, to the Radar SDK or API.
Expand All @@ -84,6 +92,7 @@ For more information, see our [privacy policy](https://radar.com/privacy), our [

For more information, see our [location data privacy checklist](https://radar.com/blog/location-data-privacy-checklist).

<a id="what-are-location-permission-prompt-best-practices"></a>
### What are location permission prompt best practices?

The best location permission prompts are:
Expand All @@ -96,12 +105,14 @@ Opt-in rates vary from app to app, but apps that follow best practices can expec

For more information, see our [location data privacy checklist](https://radar.com/blog/location-data-privacy-checklist).

<a id="what-is-radars-data-retention-policy"></a>
### What is Radar's data retention policy?

By default, users and events are retained for 1 year, trips are retained for 90 days, and location updates are retained for 7 days.

Radar supports custom data retention settings. Admins can adjust these settings in the Radar dashboard under the Privacy section. Data retention settings are customizable per project.

<a id="is-radar-ccpa-compliant-and-gdpr-compliant"></a>
### Is Radar CCPA-compliant and GDPR-compliant?

Yes, Radar is CCPA-compliant and GDPR-compliant. For more information, see our [commitment to privacy](https://radar.com/blog/our-commitment-to-privacy).
Expand Down Expand Up @@ -134,6 +145,7 @@ If you need assistance, you can also forward requests to your customer success m

Use the appropriate role (owner, admin, write, or read) for each co-worker's account. See [Radar security best practices](#what-are-security-best-practices-for-radar). By default, an organization can have a maximum of 100 accounts. Contact your customer success manager if you need more.

<a id="how-do-data-access-controls-work"></a>
### How do data access controls work?

<Info>
Expand All @@ -150,10 +162,12 @@ In addition to the account roles above, owners can also control:
- _Geofence tags_: Access to geofences with specific tags. An empty list gives access to all geofences. To access a Geofence, both the _tag_ and _externalId_ access controls must be satisfied.
- _Geofence externalIds_: Access to geofences with specific externalIds. An empty list gives access to all geofences. To access a Geofence, both the _tag_ and _externalId_ access controls must be satisfied.

<a id="does-radar-have-a-bug-bounty-or-responsible-disclosure-program"></a>
### Does Radar have a bug bounty or responsible disclosure program?

Yes. For more information, see the [Vulnerability Disclosure Policy](/vulnerability-disclosure-policy).

<a id="what-are-security-best-practices-for-radar"></a>
### What are security best practices for Radar?

#### Account management
Expand Down Expand Up @@ -189,10 +203,12 @@ Multiple bundle IDs and package names are supported. Wildcards (\*) are not supp
- Encrypt data stored outside of Radar (e.g., data sent to integrations or sent to webhooks and stored in a data warehouse).
- Do not send any PII, like names, email addresses, or publicly available IDs, to the Radar SDK or API. See also [Radar privacy best practices](#what-are-privacy-best-practices-for-radar).

<a id="does-radar-support-audit-logs"></a>
### Does Radar support audit logs?

Yes, Radar supports audit logs for enterprise customers. Audit logs include all requests made from the dashboard with the account, project, environment, IP address, and timestamp of each request. The 100 most recent audit logs can be viewed from the dashboard, and the most recent 100,000 audit logs can be exported to CSV. Contact your customer success manager if you need older audit logs.

<a id="how-do-i-set-up-single-sign-on-sso-in-radar"></a>
### How do I set up single sign-on (SSO) in Radar?

Radar supports single sign-on (SSO) via SAML, LDAP, Open ID, and other identity providers.
Expand All @@ -209,20 +225,24 @@ To set up your SAML identity provider, reach out to your customer success manage
- X509 Signing Certificate (.pem file)
- User ID attribute (defaults to http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier then http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn then http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name)

<a id="is-radar-soc-2-type-ii-certified"></a>
### Is Radar SOC 2 type II-certified?

Yes, Radar is SOC 2 type II-certified. For more information, please ask your account executive for a copy of our attestation report.

<a id="is-the-radar-sdk-secure"></a>
### Is the Radar SDK secure?

Yes. The Radar SDK calls the Radar API over HTTPS using TLS version 1.2 or higher, so all data is encrypted in transit. API calls are authenticated using your [Publishable keys](/sdk#authentication), which are restricted in scope.

## Location permissions

<a id="how-do-i-get-statistics-for-location-permissions"></a>
### How do I get statistics for location permissions?

Statistics for location permissions are available for customers who have installed SDK 3.1 or later.

<a id="what-do-the-states-in-the-location-permissions-graph-represent"></a>
### What do the states in the location permissions graph represent?

On iOS, the SDK checks `authorizationStatus` on `CLLocationManager` to determine authorization status:
Expand All @@ -239,10 +259,12 @@ On Android, the SDK checks the `ACCESS_FINE_LOCATION` and `ACCESS_BACKGROUND_LOC
- **`Denied`**: The `ACCESS_FINE_LOCATION` permission is denied and `shouldShowRequestPermissionRationale()` returns `false`, meaning that the user has denied location permissions and checked "Never ask again."
- **`Not Determined`**: None of the above criteria are true, meaning that the user has not yet been prompted for location permissions.

<a id="what-is-a-tracked-user"></a>
### What is a tracked user?

A tracked user is a unique user that sends one or more location events to Radar in a given time period.

<a id="what-is-a-unique-user-when-does-radar-create-a-new-user-record"></a>
### What is a unique user? When does Radar create a new user record?

The Radar SDK collects IDs for each user and device, including:
Expand All @@ -259,14 +281,17 @@ Although calling `Radar.setUserId()` for the first time will assign a `userId` t

A unique user record created or updated in a given time period is counted as a tracked user in that time period.

<a id="what-is-an-active-user"></a>
### What is an active user?

An active user is a unique user that has an [app session](#what-qualifies-as-an-app-session) in a given time period.

<a id="what-qualifies-as-an-app-session"></a>
### What qualifies as an app session?

An app session is a period of user activity in your app. A new app session is started whenever the app is opened, assuming at least 5 minutes have elapsed since the last app session started.

<a id="why-are-counts-of-active-users-different-from-counts-of-tracked-users"></a>
### Why are counts of active users different from counts of tracked users?

Depending on your Radar SDK implementation, a user may have an [app session](#what-qualifies-as-an-app-session) without sending a location event to Radar. Conversely, a user may send a location event to Radar in the background (assuming they have granted background location permissions) without opening the app.
Expand Down
19 changes: 13 additions & 6 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,17 @@ code, pre, kbd, samp {
}

/* dark mode code styling */
.dark code,
.dark pre,
.dark kbd,
.dark code,
.dark pre,
.dark kbd,
.dark samp {
color: #F6FAFC !important;
background-color: #051723 !important;
}

.dark .code-block code,
.dark .code-block pre,
.dark .code-block kbd,
.dark .code-block code,
.dark .code-block pre,
.dark .code-block kbd,
.dark .code-block samp {
background-color: unset !important;
}
Expand Down Expand Up @@ -198,3 +198,10 @@ div[data-component-part="callout-icon"] {
.nav-logo {
height: 21px !important;
}

a[id] {
display: block;
position: relative;
top: -80px;
visibility: hidden;
}
Comment on lines +202 to +207
Copy link

Copilot AI Sep 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The magic number -80px should be defined as a CSS custom property or variable to make it easier to maintain if the header height changes. Consider using --header-offset: 80px and referencing it as top: calc(var(--header-offset) * -1).

Copilot uses AI. Check for mistakes.