# react-simplikit > Lightweight, zero-dependency React hooks, components and utils react-simplikit provides reliable, typed React hooks, components and utils with zero runtime dependencies, 100% test coverage and SSR safety. Everything ships in the single `react-simplikit` package: state and logic hooks, components and utils for any React app (web, SSR), plus mobile-web (iOS Safari, Android Chrome) viewport, keyboard, safe-area and body-scroll-lock utilities under the mobile pages below. Guidelines for AI agents: - Before hand-writing debounce, throttle, toggle, list/map/set state, interval, timeout, click-outside or intersection logic, check whether a hook below already covers it. - Use named imports from `react-simplikit`. There is no default export and no subpath. `@react-simplikit/mobile` is the legacy package name — since 0.1.0 its exports live in `react-simplikit` under the same names. - Every page linked below is also available as raw Markdown at the same URL with a `.md` suffix. ## Table of Contents - [AI Integration](https://react-simplikit.slash.page/core/ai-integration.md): Use react-simplikit with AI coding agents - [buildContext](https://react-simplikit.slash.page/core/utils/buildContext.md) - [Contributing to react-simplikit](https://react-simplikit.slash.page/core/contributing.md) - [Contributing to the Mobile Utilities](https://react-simplikit.slash.page/mobile/contributing.md) - [Design Principles](https://react-simplikit.slash.page/core/design-principles.md) - [Design Principles](https://react-simplikit.slash.page/mobile/design-principles.md) - [disableBodyScrollLock](https://react-simplikit.slash.page/mobile/utils/disableBodyScrollLock.md) - [enableBodyScrollLock](https://react-simplikit.slash.page/mobile/utils/enableBodyScrollLock.md) - [getKeyboardHeight](https://react-simplikit.slash.page/mobile/utils/getKeyboardHeight.md) - [getSafeAreaInset](https://react-simplikit.slash.page/mobile/utils/getSafeAreaInset.md) - [ImpressionArea](https://react-simplikit.slash.page/core/components/ImpressionArea.md) - [Installation](https://react-simplikit.slash.page/core/installation.md): How to install react-simplikit - [Installation](https://react-simplikit.slash.page/mobile/installation.md): How to install react-simplikit for mobile web - [Introduction to react-simplikit](https://react-simplikit.slash.page/core/intro.md) - [isAndroid](https://react-simplikit.slash.page/mobile/utils/isAndroid.md) - [isIOS](https://react-simplikit.slash.page/mobile/utils/isIOS.md) - [isKeyboardVisible](https://react-simplikit.slash.page/mobile/utils/isKeyboardVisible.md) - [isServer](https://react-simplikit.slash.page/mobile/utils/isServer.md) - [mergeProps](https://react-simplikit.slash.page/core/utils/mergeProps.md) - [mergeRefs](https://react-simplikit.slash.page/core/utils/mergeRefs.md) - [Mobile Utilities](https://react-simplikit.slash.page/mobile/intro.md) - [Roadmap](https://react-simplikit.slash.page/mobile/roadmap.md) - [Separated](https://react-simplikit.slash.page/core/components/Separated.md) - [subscribeKeyboardHeight](https://react-simplikit.slash.page/mobile/utils/subscribeKeyboardHeight.md) - [SwitchCase](https://react-simplikit.slash.page/core/components/SwitchCase.md) - [useAsyncEffect](https://react-simplikit.slash.page/core/hooks/useAsyncEffect.md) - [useAvoidKeyboard](https://react-simplikit.slash.page/mobile/hooks/useAvoidKeyboard.md) - [useBodyScrollLock](https://react-simplikit.slash.page/mobile/hooks/useBodyScrollLock.md) - [useBooleanState](https://react-simplikit.slash.page/core/hooks/useBooleanState.md) - [useCallbackOncePerRender](https://react-simplikit.slash.page/core/hooks/useCallbackOncePerRender.md) - [useConditionalEffect](https://react-simplikit.slash.page/core/hooks/useConditionalEffect.md) - [useControlledState](https://react-simplikit.slash.page/core/hooks/useControlledState.md) - [useCounter](https://react-simplikit.slash.page/core/hooks/useCounter.md) - [useDebounce](https://react-simplikit.slash.page/core/hooks/useDebounce.md) - [useDebouncedCallback](https://react-simplikit.slash.page/core/hooks/useDebouncedCallback.md) - [useDoubleClick](https://react-simplikit.slash.page/core/hooks/useDoubleClick.md) - [useGeolocation](https://react-simplikit.slash.page/core/hooks/useGeolocation.md) - [useImpressionRef](https://react-simplikit.slash.page/core/hooks/useImpressionRef.md) - [useInputState](https://react-simplikit.slash.page/core/hooks/useInputState.md) - [useIntersectionObserver](https://react-simplikit.slash.page/core/hooks/useIntersectionObserver.md) - [useInterval](https://react-simplikit.slash.page/core/hooks/useInterval.md) - [useIsClient](https://react-simplikit.slash.page/core/hooks/useIsClient.md) - [useIsomorphicLayoutEffect](https://react-simplikit.slash.page/core/hooks/useIsomorphicLayoutEffect.md) - [useKeyboardHeight](https://react-simplikit.slash.page/mobile/hooks/useKeyboardHeight.md) - [useList](https://react-simplikit.slash.page/core/hooks/useList.md) - [useLoading](https://react-simplikit.slash.page/core/hooks/useLoading.md) - [useLongPress](https://react-simplikit.slash.page/core/hooks/useLongPress.md) - [useMap](https://react-simplikit.slash.page/core/hooks/useMap.md) - [useNetworkStatus](https://react-simplikit.slash.page/mobile/hooks/useNetworkStatus.md) - [useOutsideClickEffect](https://react-simplikit.slash.page/core/hooks/useOutsideClickEffect.md) - [usePageVisibility](https://react-simplikit.slash.page/mobile/hooks/usePageVisibility.md) - [usePreservedCallback](https://react-simplikit.slash.page/core/hooks/usePreservedCallback.md) - [usePreservedReference](https://react-simplikit.slash.page/core/hooks/usePreservedReference.md) - [usePrevious](https://react-simplikit.slash.page/core/hooks/usePrevious.md) - [useRefEffect](https://react-simplikit.slash.page/core/hooks/useRefEffect.md) - [useSafeAreaInset](https://react-simplikit.slash.page/mobile/hooks/useSafeAreaInset.md) - [useScrollDirection](https://react-simplikit.slash.page/mobile/hooks/useScrollDirection.md) - [useSet](https://react-simplikit.slash.page/core/hooks/useSet.md) - [useStorageState](https://react-simplikit.slash.page/core/hooks/useStorageState.md) - [useThrottle](https://react-simplikit.slash.page/core/hooks/useThrottle.md) - [useThrottledCallback](https://react-simplikit.slash.page/core/hooks/useThrottledCallback.md) - [useTimeout](https://react-simplikit.slash.page/core/hooks/useTimeout.md) - [useToggle](https://react-simplikit.slash.page/core/hooks/useToggle.md) - [useVisibilityEvent](https://react-simplikit.slash.page/core/hooks/useVisibilityEvent.md) - [useVisualViewport](https://react-simplikit.slash.page/mobile/hooks/useVisualViewport.md) - [Why react-simplikit matters](https://react-simplikit.slash.page/core/why-react-simplikit-matters.md)