Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/afraid-wings-admire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@kingstinct/react-native-activity-kit": patch
---

update readme
163 changes: 158 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,168 @@
# react-native-activity-kit
# @kingstinct/react-native-activity-kit

To install dependencies:
A powerful React Native library for iOS Live Activities using ActivityKit, built with Nitro Modules for optimal performance.

## 📱 Features

- **iOS Live Activities**: Create and manage live activities that appear on the lock screen and Dynamic Island
- **Real-time Updates**: Update activity content in real-time with push notifications or local updates
- **TypeScript Support**: Fully typed API for enhanced developer experience
- **Nitro Modules**: Built on Nitro for high-performance native interactions
- **Expo Compatible**: Easy integration with Expo projects via plugin

## 🚀 Installation

```bash
# npm
npm install @kingstinct/react-native-activity-kit

# yarn
yarn add @kingstinct/react-native-activity-kit

# bun
bun install @kingstinct/react-native-activity-kit
```

## ⚙️ Configuration

### Expo Setup

Add the plugin to your `app.json` or `app.config.js`:

```json
{
"expo": {
"plugins": [
"@kingstinct/react-native-activity-kit"
]
}
}
```

The plugin automatically enables Live Activities support in your iOS Info.plist.

### Manual Setup

For non-Expo projects, add this to your iOS `Info.plist`:

```xml
<key>NSSupportsLiveActivities</key>
<true/>
```

## 📖 Usage

```typescript
import { ActivityKit } from '@kingstinct/react-native-activity-kit';

// Check if Live Activities are available
if (ActivityKit.isAvailable) {
// Start a new activity
const activity = ActivityKit.startActivity(
// Attributes (static data)
{
title: "Pizza Order",
orderId: "12345"
},
// State (dynamic data)
{
status: "preparing",
estimatedTime: 15
},
// Options
{
staleDate: new Date(Date.now() + 30 * 60 * 1000), // 30 minutes
relevanceScore: 0.8
}
);

// Update the activity
activity.update({
status: "ready",
estimatedTime: 0
});

// End the activity
activity.end({
status: "completed"
});
}
```

### Listening to Updates

```typescript
// Subscribe to activity updates
ActivityKit.subscribeToActivityUpdates((activity) => {
console.log('Activity updated:', activity.id, activity.activityState);
});

// Subscribe to enablement changes
ActivityKit.subscribeToActivityEnablementUpdates((enabled) => {
console.log('Live Activities enabled:', enabled);
});
```

## 🏗️ Development

This is a monorepo containing:

- `packages/react-native-activity-kit/`: The main library
- `apps/activity-kit-example/`: Example Expo app demonstrating usage

### Setup

```bash
bun install
```

To run:
### Development Commands

```bash
bun run index.ts
# Build the library
bun run codegen

# Lint code
bun run lint

# Type checking
bun run typecheck

# Clean build artifacts
bun run clean:node_modules

# Create a changeset for versioning
bun run create-changeset
```

This project was created using `bun init` in bun v1.2.19. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
## 🛠️ Architecture

Built on [Nitro Modules](https://github.com/mrousavy/nitro) for:
- **High Performance**: Direct Swift/Kotlin bindings
- **Type Safety**: Full TypeScript support
- **Modern Architecture**: Uses the latest React Native architecture

## 📱 Platform Support

- ✅ iOS 16.1+ (Live Activities requirement)
- ❌ Android (Live Activities are iOS-only)

## 🤝 Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests and linting (`bun run lint && bun run typecheck`)
5. Commit your changes (`git commit -m 'Add amazing feature'`)
6. Push to the branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request

## 📄 License

MIT License - see [LICENSE](LICENSE) for details.

## 🔗 Links

- [GitHub Repository](https://github.com/kingstinct/react-native-activity-kit)
- [npm Package](https://www.npmjs.com/package/@kingstinct/react-native-activity-kit)
- [iOS ActivityKit Documentation](https://developer.apple.com/documentation/activitykit)
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Pod::Spec.new do |s|
s.authors = package["author"]

s.platforms = { :ios => min_ios_version_supported }
s.source = { :git => "https://github.com/mrousavy/nitro.git", :tag => "#{s.version}" }
s.source = { :git => "https://github.com/kingstinct/react-native-activity-kit.git", :tag => "#{s.version}" }

s.source_files = [
# Implementation (Swift)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Pod::Spec.new do |s|
s.authors = package["author"]

s.platforms = { :ios => min_ios_version_supported }
s.source = { :git => "https://github.com/mrousavy/nitro.git", :tag => "#{s.version}" }
s.source = { :git => "https://github.com/kingstinct/react-native-activity-kit.git", :tag => "#{s.version}" }

# Only include the essential files for App Extensions
s.source_files = [
Expand Down
6 changes: 3 additions & 3 deletions packages/react-native-activity-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@
],
"repository": {
"type": "git",
"url": "git+https://github.com/mrousavy/nitro.git"
"url": "git+https://github.com/kingstinct/react-native-activity-kit.git"
},
"author": "Marc Rousavy <me@mrousavy.com> (https://github.com/mrousavy)",
"license": "MIT",
"bugs": {
"url": "https://github.com/mrousavy/nitro/issues"
"url": "https://github.com/kingstinct/react-native-activity-kit/issues"
},
"homepage": "https://github.com/mrousavy/nitro#readme",
"homepage": "https://github.com/kingstinct/react-native-activity-kit#readme",
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
Expand Down
Loading