# Implement Expo Native Features

Expo apps often need native device features with careful permissions and platform handling. This skill provides focused patterns for adding camera, notifications, haptics, location, storage, app state, and keyboard behavior.

## Install

```bash
npx skillstore add cjharmath/rn-native-features
```

## Metadata

- Status: approved
- Slug: cjharmath-rn-native-features
- Skillstore revision: r1
- Version status: missing
- Tree hash: aaf6e42f11862457cad0beb4408107e08266f6e5bdeaadc0a9c2348784cf6034
- Author: CJHarmath
- GitHub username: CJHarmath
- License: MIT
- Repository: https://github.com/CJHarmath/claude-agents-skills/tree/main/skills/rn-native-features
- Ref: dd4a3ef9f20ddf38830950b4bb713df96b431fd6
- Supported tools: Claude, Codex, Claude Code
- Audit status: complete
- Agent install advisory: allowed
- Manual install advisory: allowed
- Artifact signature: available
- Audit attestation: unavailable
- Human verification: not\_verified
- Risk factors: external\_commands, network
- Quality score: 78
- Quality tier: bronze
- Public page: https://skillstore.pages.dev/skills/cjharmath-rn-native-features
- Manifest: https://skillstore.pages.dev/api/skills/cjharmath-rn-native-features/manifest

## Capabilities

- Shows permission request and status patterns for camera, media, notifications, and location.
- Provides Expo camera and image picker workflows for capture and gallery selection.
- Outlines push notification registration, local scheduling, receiving, response handling, and backend sending.
- Covers haptic feedback patterns for taps, confirmations, errors, and picker selection.
- Explains location reads, location watching, local storage, SecureStore, app state, and keyboard handling.

## Use Cases

- Permission-first camera flow: Add camera capture or gallery selection while handling granted, denied, and not-yet-requested states.
- Push notification rollout: Plan Expo push token registration, local reminders, foreground behavior, tap handling, and backend sending.
- Native capability review: Check location, haptics, secure storage, app lifecycle, and keyboard patterns before implementation.

## Prompt Templates

### Add camera permission

```
Use rn-native-features to add camera permission handling for an Expo React Native screen. Explain the states before showing code.
```

### Create image capture flow

```
Use rn-native-features to design an Expo image capture and gallery selection flow. Include permission handling, editing options, and user feedback.
```

### Implement notifications

```
Use rn-native-features to implement push notification registration, foreground handling, tap responses, and a secure backend sending plan for Expo.
```

### Audit native integration

```
Use rn-native-features to review my Expo native feature plan for permission gaps, device-only constraints, storage choices, and testing steps.
```

## Limitations

- Examples are snippets, not a complete runnable app.
- Expo SDK and package versions must be checked in the target project.
- iOS and Android permission wording still needs product and store review.
- Backend notification examples require secure token handling outside the skill.

## Best Practices

- Request and check permissions before rendering native controls.
- Test camera, haptics, location, and notifications on physical devices.
- Use SecureStore for tokens and AsyncStorage only for non-sensitive preferences.

## Anti Patterns

- Skipping denied-permission states and showing a blank native feature screen.
- Treating push notification payload routes as trusted without validation.
- Using SecureStore for large documents or general cache data.

## Security Audit

- Audited at: 2026-07-06T05:32:06.337\+00:00
- Summary: The static command findings are false positives caused by Markdown code fences in SKILL.md, not Ruby or shell execution. The hardcoded URL is the official Expo Push API endpoint in a backend notification example. The blocker finding is a keyboard layout comment, and no prompt injection or malicious intent was found.

## Stats

- Views: 196
- Downloads: 11
- Favorites: 0
- Popularity score: 0
