app/page.tsx
Only serialisable props cross it
A string, a number or a plain object reaches the component from a server component; a function does not.onPress and a render callback belong in a client component of your own.
A class instance does not cross either, so a CalendarDate for a date component is built on the client side too.
Render a sub-part by its own name
A server component cannot reach into a client module through a property, so<Dialog.Title> works only from a client component. Every part is also exported as its component’s name followed by the part’s: SheetContent, TableRow, NavigationTreeItem.
app/settings/page.tsx
List.Item is exported as ListRow, since the standalone ListItem already has that name.The React Aria utilities are client-only
I18nProvider, useListData, parseColor and the rest of the re-exported utilities are client-only. collectionSizes, colorScheme and themeScope are plain values and work on either side.
Wrap the tree in I18nProvider
A server-rendered app wraps its tree inI18nProvider with the request’s locale. React Aria reads the browser’s locale on the client and has none on the server, so without it a date or a number can render differently on the two and fail hydration.
