A React Native library for creating iOS Today Widget App Extensions without using Xcode.
React Native Today Widget is an experimental library that enables React Native developers to build iOS Today Widget App Extensions directly from JavaScript. It allows the creation of custom widgets for the iOS Today View without requiring native Xcode development, using React Native components to define the UI.
React Native developers who need to add iOS Today View widgets to their apps without writing native Swift/Objective-C code. It is specifically for teams already using React Native who want to extend their app's functionality to the iOS Today View.
Developers choose this library because it eliminates the need to open Xcode for widget setup, leveraging the existing React Native ecosystem and JavaScript skills. Its unique selling point is enabling Xcode-free widget creation with features like expandable widgets, a built-in developer menu, and adherence to iOS memory constraints.
iOS Today Widget in React Native
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a linking script to add iOS Today Widget extensions without opening Xcode, simplifying integration for React Native projects as described in the setup steps.
Allows defining widget UI with React Native components in an `index.widget.js` file, leveraging existing JavaScript skills and the React Native ecosystem.
Includes a `DevMenu` component for enabling Live/Hot reload and remote JS debugging within the widget, easing development and debugging workflows.
Provides `setExpandable` API for native Show More/Less buttons with customizable expanded height, enhancing widget functionality on iOS 10 and above.
Marked as experimental, which may lead to breaking changes, limited long-term support, and potential bugs, making it risky for production use.
With a 16 MB memory limit and basic examples using 11-13 MB, there is minimal room for additional features, increasing the risk of crashes on iOS devices.
Requires installing the `xcodeproj` gem and handling manual linking steps; changes to bundle identifiers necessitate reinstallation, adding maintenance overhead.