Skip to main content
UIKit automatically adapts its interface and behaviour when a visitor or bot session is active. This guide covers the UIKit-specific layer on top of SDK visitor mode.
Prerequisites: Visitor mode must be enabled for your network and the SDK must be logged in as a visitor before UIKit renders. See SDK Visitor Mode for login setup.

Tab Visibility

UIKit adjusts which tabs are visible based on user type. Visitors see a read-only subset of the navigation: The Clips tab is not available on React Native.

Restricted Action Handling

When a visitor attempts a write action (react, comment, reply, follow), UIKit shows a sign-in prompt by default. Override handleVisitorUserAction in AmityGlobalBehavior to navigate to your own sign-in screen instead. On iOS the equivalent is named handleGuestUserAction.

Daily Usage Limit Page

When a visitor exceeds their daily usage limit (its size is an ops-level setting), the backend returns error 400323. UIKit automatically subscribes to the SDK’s visitorUsageLimitReached event and shows a full-screen VisitorUsageLimitPage that blocks further navigation until the user signs in.

Default Page

Back gestures and the system back button are disabled while the page is shown:
  • Web: Navigation stack unmounted at root
  • Android: Activity back stack cleared, back press swallowed
  • iOS: Presented modally, swipe-back disabled
  • React Native: Navigator replaced at root, hardware back press swallowed

Platform Availability

Customizing the Error Page

Use two new AmityGlobalBehavior handlers to replace the default experience:
The usage limit state is in-memory only. It resets automatically when the app restarts or when registerDevice() is called with a signed-in userId. Never persist the state to local storage — this ensures users see the normal UI again after signing in or after the daily quota resets.

SDK Visitor Mode

Visitor login, device fingerprinting, secure mode, and SDK error codes

Error Handling

Full server error reference including 400323, 403999, 403998