npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

expo-live-updates-activities

v0.1.0

Published

iOS Live Activities and Android Live Updates

Readme

Expo Live Updates & Activities

Demo

iOS Live Activity

iOS Demo

Android Live Updates

Android Demo

This module provides a unified API for using Live Activities on iOS and Live Updates on Android.

  • iOS: Control Live Activities from your JavaScript code. The UI is built natively with SwiftUI.
  • Android: Display and manage ongoing notifications with rich content and progress bars.

Installation

npx expo install expo-live-updates-activities

iOS Setup: Live Activities

Live Activities on iOS require a native Widget Extension. The easiest way to create one is by using the expo-apple-targets plugin.

Special thanks to Evan Bacon for creating the expo-apple-targets plugin, which makes this process much simpler.

1. Add the Widget Extension

First, install the expo-apple-targets plugin:

npx expo install expo-apple-targets

Next, create a directory for your widget, for example, example/targets/widget. Inside this directory, you'll need a few files to configure the widget.

2. Configure the Widget

You'll need to create the following files inside your widget directory (e.g., example/targets/widget):

  • expo-target.config.js: Configures the native target.
  • index.swift: The entry point for your widget.
  • WidgetLiveActivity.swift: The main SwiftUI view for your Live Activity.
  • Info.plist: The information property list for the widget.

You can refer to the example directory in this project for a complete working setup.

3. Run npx expo prebuild

After setting up your widget files, run npx expo prebuild --clean to generate the native Xcode project with your new widget target.

Android Setup: Live Updates

Android configuration is handled automatically by the Expo module. No extra setup is required.

API Usage

The module provides a simple API to manage live updates from your JavaScript code.

iOS API

startActivity(data)

Starts a new Live Activity.

  • data (string): A JSON string containing the initial data for the activity.
import ExpoLiveUpdatesActivities from "expo-live-updates-activities";

ExpoLiveUpdatesActivities.startActivity(
  JSON.stringify({
    title: "Hello",
    subtitle: "World",
    description: "This is a test",
  })
);

updateActivity(data)

Updates an ongoing Live Activity.

  • data (string): A JSON string containing the updated data.
ExpoLiveUpdatesActivities.updateActivity(
  JSON.stringify({
    title: "Hello",
    subtitle: "Updated Subtitle",
    description: "This is an updated test",
  })
);

endActivity(data, dismissalPolicy)

Ends the Live Activity.

  • data (string): A JSON string containing the final data to display.
  • dismissalPolicy ('immediate' | 'after' | 'default'): The dismissal policy for the activity.
ExpoLiveUpdatesActivities.endActivity(
  JSON.stringify({
    title: "Hello",
    subtitle: "World",
    description: "This is the final update",
  }),
  "immediate"
);

Android API

The Android API provides several methods for showing different types of live updates.

showStandardLiveUpdate(config)

Displays a standard notification with a title and text.

showBigTextLiveUpdate(config)

Displays a notification with an expandable big text section.

showCallLiveUpdate(config)

Displays a notification for an incoming or ongoing call.

showProgressLiveUpdate(config)

Displays a notification with a progress bar.

cancelLiveUpdate()

Cancels the ongoing live update.

Please refer to the example/App.tsx file for detailed usage of the Android API.