PHPackages                             jameswilddev/react-native-app-helpers - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jameswilddev/react-native-app-helpers

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jameswilddev/react-native-app-helpers
=====================================

General tools we use to build React Native applications.

v0.0.128(8mo ago)62.6k↓53.8%3[19 issues](https://github.com/jameswilddev/react-native-app-helpers/issues)[11 PRs](https://github.com/jameswilddev/react-native-app-helpers/pulls)MITTypeScriptPHP ^8.0CI passing

Since Dec 23Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/jameswilddev/react-native-app-helpers)[ Packagist](https://packagist.org/packages/jameswilddev/react-native-app-helpers)[ RSS](/packages/jameswilddev-react-native-app-helpers/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (4)Versions (91)Used By (0)

`react-native-app-helpers`
==========================

[](#react-native-app-helpers)

General tools we use to build React Native applications.

**WARNING: Unit tests are currently disabled as `react-test-renderer` is no longer maintained and no longer functions, while its replacement `react-native-testing-library` doesn't appear to be kept up to date and as a consequence is also non-functional at the time of writing.**

React Native
------------

[](#react-native)

### Installation

[](#installation)

```
npm install --save react-native-app-helpers
```

```
import { createTextComponent } from "react-native-app-helpers";
```

### Exports

[](#exports)

#### Components

[](#components)

- [Aligned](./react-native/components/Aligned/readme.md)
- [Column](./react-native/components/Column/readme.md)
- [ContainerFillingKeyboardAvoidingView](./react-native/components/ContainerFillingKeyboardAvoidingView/readme.md)
- [ContainerFillingScrollView](./react-native/components/ContainerFillingScrollView/readme.md)
- [createBottomTabBarComponent](./react-native/components/createBottomTabBarComponent/readme.md)
- [createButtonComponent](./react-native/components/createButtonComponent/readme.md)
- [createCardComponent](./react-native/components/createCardComponent/readme.md)
- [createCheckboxComponent](./react-native/components/createCheckboxComponent/readme.md)
- [createCreatableSelectComponent](./react-native/components/createCreatableSelectComponent/readme.md)
- [createFileStoreManagerComponent](./react-native/components/createFileStoreManagerComponent/readme.md)
- [createFiniteStateMachineRoutingComponent](./react-native/components/createFiniteStateMachineRoutingComponent/readme.md)
- [createFixedHeightComponent](./react-native/components/createFixedHeightComponent/readme.md)
- [createFixedWidthComponent](./react-native/components/createFixedWidthComponent/readme.md)
- [createFlashMessageComponent](./react-native/components/createFlashMessageComponent/readme.md)
- [createFlatColorBackgroundComponent](./react-native/components/createFlatColorBackgroundComponent/readme.md)
- [createFullHeightPopoverComponent](./react-native/components/createFullHeightPopoverComponent/readme.md)
- [createHeaderBodyFooterComponent](./react-native/components/createHeaderBodyFooterComponent/readme.md)
- [createHeaderComponent](./react-native/components/createHeaderComponent/readme.md)
- [createHorizontalSplitButtonComponent](./react-native/components/createHorizontalSplitButtonComponent/readme.md)
- [createHrComponent](./react-native/components/createHrComponent/readme.md)
- [createImageBackgroundComponent](./react-native/components/createImageBackgroundComponent/readme.md)
- [createInputComponent](./react-native/components/createInputComponent/readme.md)
- [createLimitedHeightComponent](./react-native/components/createLimitedHeightComponent/readme.md)
- [createLimitedWidthComponent](./react-native/components/createLimitedWidthComponent/readme.md)
- [createMigratorManagerComponent](./react-native/components/createMigratorManagerComponent/readme.md)
- [createMinimumHeightComponent](./react-native/components/createMinimumHeightComponent/readme.md)
- [createMinimumWidthComponent](./react-native/components/createMinimumWidthComponent/readme.md)
- [createNullableEmailInputComponent](./react-native/components/createNullableEmailInputComponent/readme.md)
- [createNullableFloatInputComponent](./react-native/components/createNullableFloatInputComponent/readme.md)
- [createNullableIntegerInputComponent](./react-native/components/createNullableIntegerInputComponent/readme.md)
- [createNullablePasswordInputComponent](./react-native/components/createNullablePasswordInputComponent/readme.md)
- [createNullableTextAreaComponent](./react-native/components/createNullableTextAreaComponent/readme.md)
- [createNullableTextInputComponent](./react-native/components/createNullableTextInputComponent/readme.md)
- [createOfflineTableComponent](./react-native/components/createOfflineTableComponent/readme.md)
- [createPaddingComponent](./react-native/components/createPaddingComponent/readme.md)
- [createPickerButtonComponent](./react-native/components/createPickerButtonComponent/readme.md)
- [createProportionalColumnComponent](./react-native/components/createProportionalColumnComponent/readme.md)
- [createProportionalRowComponent](./react-native/components/createProportionalRowComponent/readme.md)
- [createRequiredEmailInputComponent](./react-native/components/createRequiredEmailInputComponent/readme.md)
- [createRequiredFloatInputComponent](./react-native/components/createRequiredFloatInputComponent/readme.md)
- [createRequiredIntegerInputComponent](./react-native/components/createRequiredIntegerInputComponent/readme.md)
- [createRequiredPasswordInputComponent](./react-native/components/createRequiredPasswordInputComponent/readme.md)
- [createRequiredTextAreaComponent](./react-native/components/createRequiredTextAreaComponent/readme.md)
- [createRequiredTextInputComponent](./react-native/components/createRequiredTextInputComponent/readme.md)
- [createSearchableMultiSelectComponent](./react-native/components/createSearchableMultiSelectComponent/readme.md)
- [createSearchableSelectComponent](./react-native/components/createSearchableSelectComponent/readme.md)
- [createSessionStoreManagerComponent](./react-native/components/createSessionStoreManagerComponent/readme.md)
- [createSidebarComponent](./react-native/components/createSidebarComponent/readme.md)
- [createStackComponent](./react-native/components/createStackComponent/readme.md)
- [createStackRoutingComponent](./react-native/components/createStackRoutingComponent/readme.md)
- [createStateStoreManagerComponent](./react-native/components/createStateStoreManagerComponent/readme.md)
- [createStatusFillComponent](./react-native/components/createStatusFillComponent/readme.md)
- [createTabRoutingComponent](./react-native/components/createTabRoutingComponent/readme.md)
- [createTextComponent](./react-native/components/createTextComponent/readme.md)
- [createTiledComponent](./react-native/components/createTiledComponent/readme.md)
- [createUnderlinedTopTabBarComponent](./react-native/components/createUnderlinedTopTabBarComponent/readme.md)
- [createVerticalSplitButtonComponent](./react-native/components/createVerticalSplitButtonComponent/readme.md)
- [Hitbox](./react-native/components/Hitbox/readme.md)
- [HorizontallySymmetricalSafeAreaView](./react-native/components/HorizontallySymmetricalSafeAreaView/readme.md)
- [Row](./react-native/components/Row/readme.md)
- [SimpleModal](./react-native/components/SimpleModal/readme.md)
- [SizedHorizontallySymmetricalSafeAreaView](./react-native/components/SizedHorizontallySymmetricalSafeAreaView/readme.md)

#### Hooks

[](#hooks)

- [useBackButton](./react-native/hooks/useBackButton/readme.md)
- [useEventRefresh](./react-native/hooks/useEventRefresh/readme.md)
- [useMeasure](./react-native/hooks/useMeasure/readme.md)
- [useRefresh](./react-native/hooks/useRefresh/readme.md)
- [useStartSyncWhenTop](./react-native/hooks/useStartSyncWhenTop/readme.md)
- [useSyncFileCleanUpBlocker](./react-native/hooks/useSyncFileCleanUpBlocker/readme.md)
- [useSyncInProgress](./react-native/hooks/useSyncInProgress/readme.md)

#### Services

[](#services)

- [abortControllerFactory](./react-native/abortControllerFactory/logger/readme.md)
- [errorReporter](./react-native/services/errorReporter/readme.md)
- [FileStore](./react-native/services/FileStore/readme.md)
- [logger](./react-native/services/logger/readme.md)
- [Migrator](./react-native/services/Migrator/readme.md)
- [PermissionHelper](./react-native/services/PermissionHelper/readme.md)
- [PictureHelper](./react-native/services/PictureHelper/readme.md)
- [Request](./react-native/services/Request/readme.md)
- [SessionStore](./react-native/services/SessionStore/readme.md)
- [StateStore](./react-native/services/StateStore/readme.md)
- [Sync](./react-native/services/Sync/readme.md)
- [SyncableStateHelper](./react-native/services/SyncableStateHelper/readme.md)
- [SyncController](./react-native/services/SyncController/readme.md)
- [UuidGenerator](./react-native/services/UuidGenerator/readme.md)

#### Types

[](#types)

- [AbsentSyncableStateSingleton](./react-native/types/AbsentSyncableStateConstnat/readme.md)
- [AwaitingPullSyncableStateCollectionItem](./react-native/types/AwaitingPullSyncableStateCollectionItem/readme.md)
- [AwaitingPushSyncableStateCollectionItem](./react-native/types/AwaitingPushSyncableStateCollectionItem/readme.md)
- [BasicTableColumn](./react-native/types/BasicTableColumn/readme.md)
- [BorderStyle](./react-native/types/BorderStyle/readme.md)
- [BottomTab](./react-native/types/BottomTab/readme.md)
- [BottomTabBarProps](./react-native/types/BottomTabBarProps/readme.md)
- [BottomTabBarStyle](./react-native/types/BottomTabBarStyle/readme.md)
- [BottomTabBarStyleState](./react-native/types/BottomTabBarStateStyle/readme.md)
- [ButtonProps](./react-native/types/ButtonProps/readme.md)
- [ButtonStateStyle](./react-native/types/ButtonStateStyle/readme.md)
- [ButtonStyle](./react-native/types/ButtonStyle/readme.md)
- [CardProps](./react-native/types/CardProps/readme.md)
- [CheckboxProps](./react-native/types/CheckboxProps/readme.md)
- [CheckboxStateStyle](./react-native/types/CheckboxStateStyle/readme.md)
- [CheckboxStyle](./react-native/types/CheckboxStyle/readme.md)
- [ControlStateStyle](./react-native/types/ControlStateStyle/readme.md)
- [ControlStyle](./react-native/types/ControlStyle/readme.md)
- [CreatableSelectProps](./react-native/types/CreatableSelectProps/readme.md)
- [CustomElementTableColumn](./react-native/types/CustomElementTableColumn/readme.md)
- [CustomTextTableColumn](./react-native/types/CustomTextTableColumn/readme.md)
- [EmptyRequestBody](./react-native/types/EmptyRequestBody/readme.md)
- [FileRequestBody](./react-native/types/FileRequestBody/readme.md)
- [FiniteStateMachineRouterState](./react-native/types/FiniteStateMachineRouterState/readme.md)
- [FiniteStateMachineRoutingProps](./react-native/types/FiniteStateMachineRoutingProps/readme.md)
- [FixedHeightProps](./react-native/types/FixedHeightProps/readme.md)
- [FixedWidthProps](./react-native/types/FixedWidthProps/readme.md)
- [FlashMessageProps](./react-native/types/FlashMessageProps/readme.md)
- [FlashMessageState](./react-native/types/FlashMessageState/readme.md)
- [FlashMessageStyle](./react-native/types/FlashMessageStyle/readme.md)
- [FlatColorBackgroundProps](./react-native/types/FlatColorBackgroundProps/readme.md)
- [HeaderBodyFooterProps](./react-native/types/HeaderBodyFooterProps/readme.md)
- [HeaderIcon](./react-native/types/HeaderIcon/readme.md)
- [HeaderProps](./react-native/types/HeaderProps/readme.md)
- [HeaderStyle](./react-native/types/HeaderStyle/readme.md)
- [ImageBackgroundProps](./react-native/types/ImageBackgroundProps/readme.md)
- [Json](./react-native/types/Json/readme.md)
- [JsonRequestBody](./react-native/types/JsonRequestBody/readme.md)
- [KeyableTableCell](./react-native/types/KeyableTableCell/readme.md)
- [LimitedHeightProps](./react-native/types/LimitedHeightProps/readme.md)
- [LimitedWidthProps](./react-native/types/LimitedWidthProps/readme.md)
- [MigratableState](./react-native/types/MigratableState/readme.md)
- [MigrationList](./react-native/types/MigrationList/readme.md)
- [MigratorInterface](./react-native/types/MigratorInterface/readme.md)
- [MinimumHeightProps](./react-native/types/MinimumHeightProps/readme.md)
- [MinimumWidthProps](./react-native/types/MinimumWidthProps/readme.md)
- [NonKeyableTableCell](./react-native/types/NonKeyableTableCell/readme.md)
- [NullableEmailInputProps](./react-native/types/NullableEmailInputProps/readme.md)
- [NullableFloatInputProps](./react-native/types/NullableFloatInputProps/readme.md)
- [NullableIntegerInputProps](./react-native/types/NullableIntegerInputProps/readme.md)
- [NullablePasswordInputProps](./react-native/types/NullablePasswordInputProps/readme.md)
- [NullableTextAreaProps](./react-native/types/NullableTextAreaProps/readme.md)
- [NullableTextInputProps](./react-native/types/NullableTextInputProps/readme.md)
- [OfflineTableData](./react-native/types/OfflineTableData/readme.md)
- [OfflineTableProps](./react-native/types/OfflineTableProps/readme.md)
- [PaddingProps](./react-native/types/PaddingProps/readme.md)
- [PreflightResponse](./react-native/types/PreflightResponse/readme.md)
- [PreflightResponseCollection](./react-native/types/PreflightResponseCollection/readme.md)
- [PreflightResponseCollectionItem](./react-native/types/PreflightResponseCollectionItem/readme.md)
- [PreflightResponseSingleton](./react-native/types/PreflightResponseSingleton/readme.md)
- [ProportionalColumnProps](./react-native/types/ProportionalColumnProps/readme.md)
- [ProportionalRowProps](./react-native/types/ProportionalRowProps/readme.md)
- [PushingSyncableStateCollectionItem](./react-native/types/PushingSyncableStateCollectionItem/readme.md)
- [QueryParameter](./react-native/types/QueryParameter/readme.md)
- [QueryParameters](./react-native/types/QueryParameters/readme.md)
- [RequiredEmailInputProps](./react-native/types/RequiredEmailInputProps/readme.md)
- [RequiredFloatInputProps](./react-native/types/RequiredFloatInputProps/readme.md)
- [RequiredIntegerInputProps](./react-native/types/RequiredIntegerInputProps/readme.md)
- [RequiredPasswordInputProps](./react-native/types/RequiredPasswordInputProps/readme.md)
- [RequiredTextAreaProps](./react-native/types/RequiredTextAreaProps/readme.md)
- [RequiredTextInputProps](./react-native/types/RequiredTextInputProps/readme.md)
- [Route](./react-native/types/Route/readme.md)
- [RouteParameters](./react-native/types/RouteParameters/readme.md)
- [RouteTable](./react-native/types/RouteTable/readme.md)
- [SearchableMultiSelectProps](./react-native/types/SearchableMultiSelectProps/readme.md)
- [SearchableSelectProps](./react-native/types/SearchableSelectProps/readme.md)
- [SidebarProps](./react-native/types/SidebarProps/readme.md)
- [SortDirection](./react-native/types/SortDirection/readme.md)
- [SplitButtonStateStyle](./react-native/types/SplitButtonStateStyle/readme.md)
- [SplitButtonStyle](./react-native/types/SplitButtonStyle/readme.md)
- [SplitButtonTypeStyle](./react-native/types/SplitButtonTypeStyle/readme.md)
- [StackRoute](./react-native/types/StackRoute/readme.md)
- [StackRouteProps](./react-native/types/StackRouteProps/readme.md)
- [StackRouterState](./react-native/types/StackRouterState/readme.md)
- [StackRouteTable](./react-native/types/StackRouteTable/readme.md)
- [StackRoutingProps](./react-native/types/StackRoutingProps/readme.md)
- [StackStateItem](./react-native/types/StackStateItem/readme.md)
- [StatusPillProps](./react-native/types/StatusPillProps/readme.md)
- [StatusPillStyle](./react-native/types/StatusPillStyle/readme.md)
- [StatusPillStyleStatus](./react-native/types/StatusPillStyleStatus/readme.md)
- [SvgIcon](./react-native/types/SvgIcon/readme.md)
- [SyncableSchema](./react-native/types/SyncableSchema/readme.md)
- [SyncableState](./react-native/types/SyncableState/readme.md)
- [SyncableStateCollection](./react-native/types/SyncableStateCollection/readme.md)
- [SyncableStateCollectionItem](./react-native/types/SyncableStateCollectionItem/readme.md)
- [SyncableStateSingleton](./react-native/types/SyncableStateSingleton/readme.md)
- [SyncConfiguration](./react-native/types/SyncConfiguration/readme.md)
- [SyncConfigurationCollection](./react-native/types/SyncConfigurationCollection/readme.md)
- [SyncPullResponse](./react-native/types/SyncPullResponse/readme.md)
- [TableColumn](./react-native/types/TableColumn/readme.md)
- [TableRow](./react-native/types/TableRow/readme.md)
- [TableRowStyle](./react-native/types/TableRowStyle/readme.md)
- [TableSchema](./react-native/types/TableSchema/readme.md)
- [TableStyle](./react-native/types/TableStyle/readme.md)
- [TabRoute](./react-native/types/TabRoute/readme.md)
- [TabRouteTable](./react-native/types/TabRouteTable/readme.md)
- [TabRoutingProps](./react-native/types/TabRoutingProps/readme.md)
- [TextProps](./react-native/types/TextProps/readme.md)
- [UnderlinedTopTab](./react-native/types/UnderlinedTopTab/readme.md)
- [UnderlinedTopTabBarProps](./react-native/types/UnderlinedTopTabBarProps/readme.md)
- [UnderlinedTopTabBarStyle](./react-native/types/UnderlinedTopTabBarStyle/readme.md)
- [UnderlinedTopTabBarStyleState](./react-native/types/UnderlinedTopTabBarStyleState/readme.md)
- [UpToDateSyncableStateCollectionItem](./react-native/types/UpToDateSyncableStateCollectionItem/readme.md)
- [UpToDateSyncableStateSingleton](./react-native/types/UpToDateSyncableStateSingleton/readme.md)
- AbortControllerFactoryInterface
- ErrorReporterInterface
- FileStoreInterface
- LoggerInterface
- PermissionHelperInterface
- PictureHelperInterface
- RequestInterface
- StateStoreInterface
- SyncControllerInterface
- SyncInterface
- SyncState
- UuidGeneratorInterface

#### Utilities

[](#utilities)

- [flattenRenderedToArray](./react-native/utilities/flattenRenderedToArray/readme.md)
- [getRenderedKey](./react-native/utilities/getRenderedKey/readme.md)
- [intercalateRendered](./react-native/utilities/intercalateRendered/readme.md)
- [isRenderedByReact](./react-native/utilities/isRenderedByReact/readme.md)
- [nop](./react-native/utilities/nop/readme.md)
- [setRenderedKey](./react-native/utilities/setRenderedKey/readme.md)
- [showSettingsScreen](./react-native/utilities/showSettingsScreen/readme.md)
- [unwrapRenderedFunctionComponent](./react-native/utilities/unwrapRenderedFunctionComponent/readme.md)

### Concepts

[](#concepts)

#### Component factory methods

[](#component-factory-methods)

Most components here are wrapped in a factory method which is passed all information which is not expected to change at runtime. This allows for heavy caching of styles which should help improve performance (see the [React Native documentation](https://reactnative.dev/docs/stylesheet)).

To use them, you would do something similar to the following:

```
import { createTextComponent } from "react-native-app-helpers";

const ExampleText = createTextComponent(`example`, `red`, 12, `left`, false);

const ExampleScreen = () => (

    Hello World!  (in the "example" font, in red, at size 12, left-aligned)

);
```

#### Line height

[](#line-height)

All components herein which render text apply a line-height of 1.4x the font size. This is done to ensure consistent rendering between iOS and Android, the latter of which defaults to having more space beneath text than above.

#### Spacing

[](#spacing)

No components are to include any external padding or spacing as this is quite often a contextual matter. Instead, use wrapping components (which provide internal padding/spacing).

#### Limited use of internal state

[](#limited-use-of-internal-state)

As few components as possible rely on any form of internal state; where possible (and practical) all state is passed in via props, and changes are suggested to the parent component through callbacks (also provided via props). This makes components far more reusable.

Laravel
-------

[](#laravel)

### Installation

[](#installation-1)

```
composer require jameswilddev/react-native-app-helpers
```

### Contents

[](#contents)

- [SyncApi](./laravel/src/SyncApi.php)

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 87.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~4 days

Total

77

Last Release

267d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/94715640e0230a88f73f2b857c5af9fb4dd33ffa36a708863f148fd86914a0d6?d=identicon)[jameswilddev](/maintainers/jameswilddev)

---

Top Contributors

[![jameswilddev](https://avatars.githubusercontent.com/u/3138458?v=4)](https://github.com/jameswilddev "jameswilddev (576 commits)")[![renovate-bot](https://avatars.githubusercontent.com/u/25180681?v=4)](https://github.com/renovate-bot "renovate-bot (84 commits)")[![SteJaySulli](https://avatars.githubusercontent.com/u/60765965?v=4)](https://github.com/SteJaySulli "SteJaySulli (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jameswilddev-react-native-app-helpers/health.svg)

```
[![Health](https://phpackages.com/badges/jameswilddev-react-native-app-helpers/health.svg)](https://phpackages.com/packages/jameswilddev-react-native-app-helpers)
```

###  Alternatives

[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17878.9k](/packages/markwalet-nova-modal-response)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

592.6k2](/packages/crumbls-layup)[team-nifty-gmbh/tall-datatables

Server-side rendered datatables for Laravel and Livewire

1320.9k4](/packages/team-nifty-gmbh-tall-datatables)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.4k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
