# @hubspire/expo-app

> This package helps to setup an Expo project using HubSpire's boilerplate code.

Latest version **2.6.8** (published 2025-04-21) · 0 weekly downloads

## Install

```sh
npm install @hubspire/expo-app
pnpm add @hubspire/expo-app
yarn add @hubspire/expo-app
bun add @hubspire/expo-app
```

## Health

**Score 25/100 (F)** — status: maintenance-mode.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.6.8 |
| Published | 2025-04-21 |
| First published | 2024-03-07 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 56 |
| Unpacked size | 1.3 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Hosam Ashraf |
| Maintainers | hosam-hsm, sijeesh_hubspire, anoop-benzier, vimalhuber, suraj_hubspire |

## Links

- npm: https://www.npmjs.com/package/@hubspire/expo-app
- Repository: https://bitbucket.org/codehubspire/expo-app
- Homepage: https://bitbucket.org/codehubspire/expo-app#readme
- Issues: https://bitbucket.org/codehubspire/expo-app/issues
- npm.io page: https://npm.io/package/@hubspire/expo-app

## Dependencies (56)

- [expo](https://npm.io/package/expo.md) ~52.0.31
- [dayjs](https://npm.io/package/dayjs.md) ^1.11.10
- [react](https://npm.io/package/react.md) 18.3.1
- [graphql](https://npm.io/package/graphql.md) ^15.8.0
- [promise](https://npm.io/package/promise.md) ^8.3.0
- [bluebird](https://npm.io/package/bluebird.md) ^3.7.2
- [expo-blur](https://npm.io/package/expo-blur.md) ~14.0.3
- [expo-font](https://npm.io/package/expo-font.md) ~13.0.3
- [react-dom](https://npm.io/package/react-dom.md) 18.3.1
- [expo-image](https://npm.io/package/expo-image.md) ~2.0.4
- [nativewind](https://npm.io/package/nativewind.md) ^4.1.23
- [expo-camera](https://npm.io/package/expo-camera.md) ~16.0.15
- [expo-device](https://npm.io/package/expo-device.md) ~7.0.2
- [expo-router](https://npm.io/package/expo-router.md) ~4.0.17
- [tailwindcss](https://npm.io/package/tailwindcss.md) 3.4.17
- [expo-haptics](https://npm.io/package/expo-haptics.md) ~14.0.1
- [expo-linking](https://npm.io/package/expo-linking.md) ~7.0.5
- [expo-updates](https://npm.io/package/expo-updates.md) ~0.26.17
- [react-native](https://npm.io/package/react-native.md) 0.76.7
- [expo-location](https://npm.io/package/expo-location.md) ~18.0.5
- [@apollo/client](https://npm.io/package/@apollo/client.md) ^3.9.6
- [app-icon-badge](https://npm.io/package/app-icon-badge.md) ^0.1.2
- [expo-constants](https://npm.io/package/expo-constants.md) ~17.0.5
- [expo-system-ui](https://npm.io/package/expo-system-ui.md) ~4.0.8
- [expo-dev-client](https://npm.io/package/expo-dev-client.md) ~5.0.10
- [expo-status-bar](https://npm.io/package/expo-status-bar.md) ~2.0.1
- [expo-file-system](https://npm.io/package/expo-file-system.md) ~18.0.10
- [expo-web-browser](https://npm.io/package/expo-web-browser.md) ~14.0.2
- [react-native-svg](https://npm.io/package/react-native-svg.md) 15.8.0
- [react-native-web](https://npm.io/package/react-native-web.md) ~0.19.13
- [expo-image-picker](https://npm.io/package/expo-image-picker.md) ~16.0.4
- [expo-secure-store](https://npm.io/package/expo-secure-store.md) ~14.0.1
- [react-native-mmkv](https://npm.io/package/react-native-mmkv.md) ^3.2.0
- [@expo/vector-icons](https://npm.io/package/@expo/vector-icons.md) ^14.0.2
- [expo-media-library](https://npm.io/package/expo-media-library.md) ~17.0.5
- [expo-notifications](https://npm.io/package/expo-notifications.md) ~0.29.13
- [expo-splash-screen](https://npm.io/package/expo-splash-screen.md) ~0.29.21
- [@shopify/flash-list](https://npm.io/package/@shopify/flash-list.md) 1.7.1
- [@gorhom/bottom-sheet](https://npm.io/package/@gorhom/bottom-sheet.md) ^4.6.1
- [@sentry/react-native](https://npm.io/package/@sentry/react-native.md) ~6.3.0
- [expo-document-picker](https://npm.io/package/expo-document-picker.md) ~13.0.3
- [react-native-screens](https://npm.io/package/react-native-screens.md) ~4.4.0
- [expo-video-thumbnails](https://npm.io/package/expo-video-thumbnails.md) ~9.0.3
- [react-native-reanimated](https://npm.io/package/react-native-reanimated.md) ~3.16.1
- [react-native-root-toast](https://npm.io/package/react-native-root-toast.md) ^3.5.1
- [@react-navigation/drawer](https://npm.io/package/@react-navigation/drawer.md) ^7.1.1
- [@react-navigation/native](https://npm.io/package/@react-navigation/native.md) ^7.0.14
- [react-native-edge-to-edge](https://npm.io/package/react-native-edge-to-edge.md) ^1.4.3
- [react-native-dropdown-picker](https://npm.io/package/react-native-dropdown-picker.md) ^5.4.6
- [react-native-gesture-handler](https://npm.io/package/react-native-gesture-handler.md) ~2.20.2
- [@react-navigation/bottom-tabs](https://npm.io/package/@react-navigation/bottom-tabs.md) ^7.2.0
- [react-native-safe-area-context](https://npm.io/package/react-native-safe-area-context.md) 4.12.0
- [@react-native-community/netinfo](https://npm.io/package/@react-native-community/netinfo.md) 11.4.1
- [react-native-keyboard-controller](https://npm.io/package/react-native-keyboard-controller.md) ^1.12.3
- [react-native-responsive-dimensions](https://npm.io/package/react-native-responsive-dimensions.md) ^3.1.1
- [@react-native-async-storage/async-storage](https://npm.io/package/@react-native-async-storage/async-storage.md) 1.23.1

## Recent versions

- 2.6.8 (latest) — 2025-04-21
- 2.6.7 — 2025-04-09
- 2.6.6 — 2025-03-15
- 2.6.4 — 2025-03-03
- 2.6.3 — 2025-02-27
- 2.6.2 — 2025-02-25
- 2.6.1 — 2025-02-25
- 2.6.0 — 2025-02-25
- 2.5.9 — 2025-02-25
- 2.5.8 — 2025-02-24
- 2.5.7 — 2025-02-24
- 2.5.6 — 2025-02-24
- 2.5.5 — 2025-02-22
- 2.5.4 — 2025-02-21
- 2.5.3 — 2025-02-21
- … 76 more at https://npm.io/package/@hubspire/expo-app/versions

## README

## Expo Application Template

> This package helps to setup an Expo application using HubSpire's template.

### Prerequisites

Make sure you have:

- set up a bitbucket repository for the project with write access.
- set up a [Sentry](https://sentry.io) account for the project.
- the development, staging and production base API URLs.

### Usage

To create the Expo project using this template, run:

```sh
$ bunx create-expo-app <ProjectName> --template @hubspire/expo-app
```

### Getting Started

> **_NOTE:_** When running scripts, it's important to initiate them from the top-level directory of the project.

#### Project setup

- Create a .env file in root and add these environment variables:

```sh
GIT_REMOTE_URL =
SENTRY_ORG =
SENTRY_PROJECT =
SENTRY_AUTH_TOKEN =
SENTRY_DSN =
DEV_API_URL =
STAGING_API_URL =
PROD_API_URL =
OPENAPI_KEY =
FIGMA_TOKEN =
FIGMA_FILE =
```

Now run:

```sh
$ bun run project-setup
```

- Make sure that you are running this script before making any changes to the project by yourself. This will :
- Create the default environment files with the required environment variables for you. It will also update the env field inside [eas.json](eas.json) with the values you provide during setup.
- Remove/Update some values in the [app.config.ts](app.config.ts), [eas.json](eas.json), [eas-build-on-success.sh](eas-build-on-success.sh) and [package.json](package.json) files which are exclusive for the template project.
- Remove readme file used for the template project.
- Add secret folders and files to gitignore.
- Initialise new repository for the project.
- Publish an initial commit to the remote url you provided.

#### Setup push notification

- Add your google-services.json (3 files for 3 environments) files inside assets/secrets folder.
- Add [environment secrets](https://docs.expo.dev/build-reference/variables/#adding-secrets-with-eas-cli) GOOGLE_SERVICES_JSON with their corresponding values for eas build to have access to these variables.
- Make sure you have set up [server credentials](https://docs.expo.dev/push-notifications/fcm-credentials/) for android.
- Make sure you have enabled push notification and generated APNS key for your iOS build when prompted during eas build.
- Listeners to display notification, deep linking configurations for push notification and a button to send a test notification has been set up in the template.
- Refer this [documentation](https://docs.expo.dev/push-notifications/push-notifications-setup/) for more.

#### EAS

Install eas cli.

```sh
$ bun install -g eas-cli
```

Login to Expo account if you haven't already.

```sh
$ eas login
```

Configure eas build.

```sh
$ bun run build:configure
```

Configure eas update.

```sh
$ bun run update:configure
```

Add environment variables in the Expo account.

Build and run development build using eas

```sh
$ bun run build:dev:eas
```

### Testing

#### Unit Testing: [Jest](https://jestjs.io/)

```sh
$ bun run test:unit
```

#### E2E Testing: [Maestro](https://cloud.mobile.dev/)

```sh
$ bun run test:e2e:dev
```

### CI/CD

#### Bitbucket: [bitbucket-pipelines.yml](bitbucket-pipelines.yml)

> **_NOTE:_** Make sure you have set up the [EXPO_TOKEN](https://docs.expo.dev/accounts/programmatic-access/#personal-access-tokens) environment variable in your repository and [MAESTRO_API_KEY](https://developers.maestro.io/api/key/) as an [environment secret](https://docs.expo.dev/build-reference/variables/#adding-secrets-with-eas-cli).

Commits to **\_release/development** branch will trigger EAS build using **development:e2e** profile.

Commits to **_release/staging_** branch will trigger EAS build using **preview** profile.

Commits to **_release/production_** branch will trigger EAS build using **production** profile.

#### EAS: [eas-build-on-success.sh](eas-build-on-success.sh)

A successful EAS build with the **development:e2e** profile will trigger E2E testing using [Maestro](https://maestro.mobile.dev/). The flows are expected to be located inside the .maestro folder at the top-level directory of the project.

### Work in Progress

This project is actively being developed. Current work in progress includes:

- [ ] Automated component generation from Figma designs
  - [x] Integration with Figma API
  - [x] Component template generation
  - [x] Style extraction and application
  - [x] Generate test cases
  - [x] Generate stories
  - [ ] Prompt optimizations and corrections

---
_Source: https://npm.io/package/@hubspire/expo-app · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
