Skip to main content

<Admin>

The root component of a Strato Admin application. It wires together the data provider, authentication, i18n, routing, and Cloudscape-themed layout.

Usage

import { Admin, ResourceSchema, TextField, IdField } from '@strato-admin/admin';
import { dataProvider } from './dataProvider';

export default function App() {
return (
<Admin dataProvider={dataProvider} title="My Admin">
<ResourceSchema name="products">
<IdField source="id" />
<TextField source="name" isRequired link="detail" />
</ResourceSchema>
</Admin>
);
}

Props

PropTypeDefaultDescription
dataProviderDataProviderRequired. Communicates with your API.
childrenAdminChildren<ResourceSchema> or <Resource> definitions, and other routes.
titlestringApplication title shown in the browser tab and sidebar header.
authProviderAuthProviderHandles login, logout, permissions, and identity.
i18nProviderI18nProviderEnglish ICUHandles translations and locale switching.
storeStorelocalStorageStore()Persists user preferences (sidebar state, column widths, etc.).
layoutLayoutComponent<AppLayout>Top-level layout wrapper.
readyComponentType<Ready>Shown when the app has no resources defined yet.
dashboardDashboardComponentComponent rendered at the root / route.
loginPageLoginComponent | booleanCustom login page. Pass false to disable.
catchAllCatchAllComponentRendered for unmatched routes (404).
errorErrorComponentGlobal error boundary component.
requireAuthbooleanfalseWhen true, all routes require authentication.
disableTelemetrybooleanfalseOpt out of anonymous usage telemetry.
basenamestringURL base path when the app is not served from /.
routerProviderRouterProviderreact-router-domCustom router implementation.
queryClientQueryClientCustom React Query client configuration.
settingsReactElement<AdminSettings>Admin-level defaults (list/detail components, notification messages). Pass a <Settings> element.

dataProvider

Required. An object with methods (getList, getOne, create, update, delete, etc.) used to communicate with your API.

import jsonServerProvider from 'ra-data-json-server';

const dataProvider = jsonServerProvider('https://jsonplaceholder.typicode.com');

<Admin dataProvider={dataProvider}>{/* ... */}</Admin>;

See the Data Providers guide for details on implementing a custom data provider.

authProvider

An object with methods to handle authentication. When provided, Strato Admin will redirect unauthenticated users to the login page.

const authProvider = {
login: ({ username, password }) => {
/* ... */
},
logout: () => {
/* ... */
},
checkAuth: () => {
/* ... */
},
checkError: (error) => {
/* ... */
},
getPermissions: () => {
/* ... */
},
};

<Admin dataProvider={dataProvider} authProvider={authProvider}>
{/* ... */}
</Admin>;

See the Auth Providers guide for details.

title

The application title, displayed in the browser tab and in the sidebar header.

<Admin dataProvider={dataProvider} title="Acme Admin">
{/* ... */}
</Admin>

i18nProvider

The internationalization provider. Strato Admin defaults to English using ICU MessageFormat. To add more locales, use icuI18nProvider from @strato-admin/i18n:

import { icuI18nProvider } from '@strato-admin/i18n';
import englishMessages from '@strato-admin/language-en';
import frenchMessages from '@strato-admin/language-fr';

const messages = {
en: { ...englishMessages, ...myEnMessages },
fr: { ...frenchMessages, ...myFrMessages },
};

const i18nProvider = icuI18nProvider((locale) => messages[locale], 'en', [
{ locale: 'en', name: 'English' },
{ locale: 'fr', name: 'Français' },
]);

<Admin dataProvider={dataProvider} i18nProvider={i18nProvider}>
{/* ... */}
</Admin>;

See the Translations guide for details.

store

Controls how user preferences (sidebar state, table column widths, etc.) are persisted. Defaults to localStorageStore().

import { memoryStore } from '@strato-admin/admin';

// Use memory store (preferences reset on page reload — useful for tests)
<Admin dataProvider={dataProvider} store={memoryStore()}>
{/* ... */}
</Admin>;

dashboard

A React component to render at the root / route. Without a dashboard, navigating to / redirects to the first resource's list.

const Dashboard = () => (
<div>
<h1>Welcome</h1>
</div>
);

<Admin dataProvider={dataProvider} dashboard={Dashboard}>
{/* ... */}
</Admin>;

layout

TODO: document layout prop and link to <AppLayout> guide

import { AppLayout } from '@strato-admin/admin';

const MyLayout = (props) => <AppLayout {...props} navigationWidth={300} />;

<Admin dataProvider={dataProvider} layout={MyLayout}>
{/* ... */}
</Admin>;

loginPage

Provide a custom login page component, or pass false to disable the login route entirely (useful when authentication is handled externally).

<Admin dataProvider={dataProvider} authProvider={authProvider} loginPage={MyLoginPage}>
{/* ... */}
</Admin>

requireAuth

When true, every route in the admin requires authentication. Unauthenticated users are redirected to the login page. Requires an authProvider.

<Admin dataProvider={dataProvider} authProvider={authProvider} requireAuth>
{/* ... */}
</Admin>

basename

The URL base path when deploying the admin under a sub-path (e.g. /admin).

<Admin dataProvider={dataProvider} basename="/admin">
{/* ... */}
</Admin>

queryClient

A custom React Query QueryClient. Use this to configure caching behavior, retry logic, or stale times globally.

import { QueryClient } from '@tanstack/react-query';

const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000, // 5 minutes
retry: false,
},
},
});

<Admin dataProvider={dataProvider} queryClient={queryClient}>
{/* ... */}
</Admin>;

settings

Pass a <Settings> element to override Admin-level defaults such as the default list/detail components and notification messages for delete actions.

import { Settings } from '@strato-admin/admin';

<Admin
dataProvider={dataProvider}
settings={<Settings listComponent={MyTable} detailComponent={MyDetailHub} deleteSuccessMessage="Item removed" />}
>
{/* ... */}
</Admin>;

See <Settings> for the full list of configurable values.