iOS Today Widget in React Native

Overview

React Native Today Widget

Experimental library investigating limits of implementation iOS App Extensions using React Native.

Sample result from Complex example:

today_widget_example

What is Today Widget?

Getting started

This library will help you to add iOS Today Widget App Extension without need to open XCode.

Dependencies

  • xcodeproj for linking script:
$ gem install xcodeproj

You may need to use sudo gem install xcodeproj or sudo gem install -n /usr/local/bin xcodeproj depends on your Ruby installation.

  • For React Native compatibility, check peerDependencies in package.json

Setup

$ yarn add react-native-today-widget
$ react-native link

You could use $ npm i react-native-today-widget --save as well, but don't forget to save it in package.json dependencies. Otherwise RN will not link it.

Whenever you change Bundle Identifier (CFBundleIdentifier) for main app, you have to run ./node_modules/.bin/bundle-id script or reinstall the module (rm -rf node_modules/react-native-today-widget && yarn)

Manual linking

react-native link should works, but in case of some troubles, you could follow general guide for linking libraries.

  • file for Step 1 is /node_modules/react-native-today-widget/ios/RNTodayWidgetExtension.xcodeproj
  • as a Step 2, add TodayWidgetExtension.appex to Embedded Binaries on the General tab for your main target
  • in Step 3, add $(SRCROOT)/../node_modules/react-native-today-widget/ios/TodayWidgetExtension to Header Search Paths

Usage

All you need is to create an index.widget.js file at the root and register there your component for key TodayWidgetExtension:

const TodayWidget = () => (
  <View>
    <Text>
      Hello Today Widget!
    </Text>
  </View>
);

AppRegistry.registerComponent('TodayWidgetExtension', () => TodayWidget);

Please note that registering both the widget and the main app in index.js file can cause memory issues. Because the app is also bundled (even if you don't use it in your widget), and it causes 'Unable to load' error. When we split the registration into two different files, the widget and the main app are bundled seperately. See blog post from Maxim Toyberman.

In place of TodayWidget component, you could use any JSX component. See Basic example.

Run your app as usual:

react-native run-ios

Display new widget on Search screen or by force touch on your app icon (on devices supporting 3D Touch).

If you need to see logs from TodayWidgetExtension, use:

react-native log-ios

In your extension scheme’s Run phase, you specify a host app as the executable

Memory limitation

The memory limit for Today Widget on device is 16 MB. (Great explanation is in this talk by Conrad Kramer)

Verified experimentally using XCode debugger - while loading big image, Today Widget crashes as soon as it reaches 16 MB memory usage.

Memory usage of Basic example with just one Text element is about 11 MB. Up to 13 MB during content rendering.

For running Today Widget on device you have to use Release build configuration. Development mode adds too much overhead. Only possibility to run the widget on device in development mode is using Instruments tool to temporarily disable the limit.

Notes

To investigate more iOS App Extensions with React Native check those:

API Reference

DevMenu

Default dev menu is not available in widget, but you could use DevSettings from NativeModules or this prepared DevMenu component to enable Live/Hot reload or remote JS debugging.

  • children - trigger element (TouchableOpacity by default)
  • style - overriding default style for trigger element
  • title - set trigger text ('DM' by default)
Example
import { DevMenu } from 'react-native-today-widget';

const TodayWidget = () => (
  <View>
    <Text>Hello Today Widget!</Text>
    {__DEV__ && <DevMenu />
      /* Has to be a last element to be clickable,
      because it has absolute position */
    }
  </View>
);

Screenshot of opened Developer Menu:

developer_menu

openURL([url:string])

Asks the system open a URL on behalf of the currently running app extension.

  • url - the URL to open

If you employ this method to open other apps from your widget, your App Store submission might entail additional review to ensure compliance with the intent of widgets.

setExpandable([expandable:boolean = true], [maxHeight:number = 110])

Enables to display native Show More / Less button in top right corner of the widget (iOS 10).

  • expandable - if false Show More / Less button is hidden
  • maxHeight - height of expanded widget

Height of collapsed Today Widget is always 110px on iOS 10.

Example
import { setExpandable } from 'react-native-today-widget';

const TodayWidget = () => {
  const isExpandable = true;
  const maxHeight = 500;
  setExpandable(isExpandable, maxHeight);
  const onLayout = (event) => {
    const height = event.nativeEvent.layout.height;
    if (height <= 110) {
      console.log('widget is in compact mode');
    }
    else if (height > 110) {
      console.log('widget is in expanded mode');
    }
  }
  return (
    <View onLayout={onLayout}>
      <Text>
        Hello Today Widget!
      </Text>
    </View>
  );
};

You could try Expandable example

Comments
  • Unable to Load

    Unable to Load

    I am trying to render a verrrry simple today widget but all I get is "Unable to Load". The code uses one View and one Text, and I am running on a simulator in release mode:

    const TodayWidget = () => (
      <View>
    
        <Text>
          Hello Today Widget!
        </Text>
    
      </View>
    );
    
    bug 
    opened by joncursi 39
  • [error] react-native link Package name not found in {app-folder}/android/app/src/debug/AndroidManifest.xml

    [error] react-native link Package name not found in {app-folder}/android/app/src/debug/AndroidManifest.xml

    I've been receiving this error when I try to use react-native link command after installing.

    rnpm-install ERR! ERRPACKAGEJSON No package found. Are you sure this is a React Native project?
    
    Package name not found in {app-folder}/android/app/src/debug/AndroidManifest.xml
    

    react-native-cl version: 2.0.1 react-native version: 0.47.2 npm version - 5.3.0 yarn version - 0.28.4

    In the case that this is indeed a bug and not a misconfiguration of my part, how should I do the manual instalation of the extension in the lib? I've tried to do it using the scripts contained in the bin folder, but so far I could not get it right.

    opened by rodrigopk 11
  • Memory usage too high?

    Memory usage too high?

    I can't seem to run the today widget on a device. I've tried creating my own today widget as well, and it seems to crash with an 'Unable to load' screen. This is likely because of too much memory usage. Does anyone have any insight into this?

    Priority: High 
    opened by simonayzman 10
  • How to share data between main App and widget?

    How to share data between main App and widget?

    Hello!

    I'm trying to share data as you do in "Complex example". But with https://github.com/kevinresol/react-native-default-preference

    Have you been able to use UserDefaults to share data?

    Description

    In main app:

    await DefaultPreference.setName("NAME_OF_YOUR_GROUP")
    await DefaultPreference.set("key1", "value1")
    

    In widget:

    await DefaultPreference.setName("NAME_OF_YOUR_GROUP")
    const k = await DefaultPreference.get("key1")
    

    k is undefined. Should be value1

    opened by kesha-antonov 9
  • Instalation error: Could not write domain /../ios/TodayWidgetExtension/Info.plist;

    Instalation error: Could not write domain /../ios/TodayWidgetExtension/Info.plist;

    Hello;

    I'm trying to install the react-native-today-widget in version 0.6.4 because of the react-native version of my project (0.44.3), I'm having this problem when I try to install the package:

    yarn add [email protected]
    yarn add v0.24.5
    [1/4] 🔍  Resolving packages...
    [2/4] 🚚  Fetching packages...
    [3/4] 🔗  Linking dependencies...
    [4/4] 📃  Building fresh packages...
    [1/1] ⡀ react-native-today-widget: setting ".TodayWidgetExtension" as CFBundleIdentifier for
    /../ios/TodayWidgetEx
    [-/1] ⡀ waiting...
    [-/1] ⡀ waiting...
    [-/1] ⡀ waiting...
    error /Users/algartelecom/Documents/Josiane/testTodayWidget/node_modules/react-native-today-widget: Command failed.
    Exit code: 1
    Command: sh
    Arguments: -c ./bin/setBundleId.sh
    Directory: /Users/algartelecom/Documents/Josiane/testTodayWidget/node_modules/react-native-today-widget
    Output:
    ./bin/setBundleId.sh: line 3: realpath: command not found
    usage: dirname path
    sed: 1: "s/^\s*"name": "(.*?)",$ ...": RE error: repetition-operator operand invalid
    Reading CFBundleIdentifier from: /../../../ios//Info.plist
    2018-01-08 16:46:09.080 defaults[13479:375454]
    The domain/default pair of (/../../../ios//Info.plist, CFBundleIdentifier) does not exist
    setting ".TodayWidgetExtension" as CFBundleIdentifier for  /../ios/TodayWidgetExtension/Info.plist
    2018-01-08 16:46:09.219 defaults[13489:375499] Could not write domain /../ios/TodayWidgetExtension/Info.plist; exiting
    info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
    

    Assuming I can not update the version of my project, what can I do to fix this?

    Project Version: react-native 0.44.3 Version of react-native-today-widget: 0.6.4

    Thanks!

    opened by josianeReis 6
  • Cannot get basic example to display widget

    Cannot get basic example to display widget

    Description

    Please describe expected and actual behavior. Following steps from example app.

    Steps to reproduce

    System configuration

    Please add result of react-native info command and react-native-today-widget version used latest rn version and used npm install from master branch. screen shot 2018-05-01 at 8 54 53 am

    opened by j-mendez 5
  • Unable to install with yarn: Could not write domain

    Unable to install with yarn: Could not write domain

    $ yarn add react-native-today-widget
    yarn add v0.24.5
    [1/5] 🔍  Resolving packages...
    [2/5] 🚚  Fetching packages...
    [3/5] 🔗  Linking dependencies...
    [4/5] 📃  Building fresh packages...
    [-/8] ⠈ waiting...
    [-/8] ⠈ waiting...
    [8/8] ⠈ react-native-today-widget: setting ".TodayWidgetExtension" as CFBundleIdentifier for  /../ios/TodayW
    [-/8] ⠈ waiting...
    error /Users/jcursi/Sites/joncursi/redbirdNative/node_modules/react-native-today-widget: Command failed.
    Exit code: 1
    Command: sh
    Arguments: -c ./bin/setBundleId.sh
    Directory: /Users/jcursi/Sites/joncursi/redbirdNative/node_modules/react-native-today-widget
    Output:
    ./bin/setBundleId.sh: line 3: realpath: command not found
    usage: dirname path
    sed: 1: "s/^\s*"name": "(.*?)",$ ...": RE error: repetition-operator operand invalid
    Reading CFBundleIdentifier from: /../../../ios//Info.plist
    2017-07-10 16:34:36.024 defaults[29636:174124] 
    The domain/default pair of (/../../../ios//Info.plist, CFBundleIdentifier) does not exist
    setting ".TodayWidgetExtension" as CFBundleIdentifier for  /../ios/TodayWidgetExtension/Info.plist
    2017-07-10 16:34:36.184 defaults[29645:174193] Could not write domain /../ios/TodayWidgetExtension/Info.plist; exiting
    info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
    
    opened by joncursi 5
  • Failed to build iOS project.

    Failed to build iOS project.

    Description

    I was just following the steps in /Example/Basic and nothing else. I added react-native-today-widget and run react-native link. Then TodayWidget.js and index.widget.js. At last, I run react-native run-ios, and then it said failed to build ios project. 屏幕快照 2019-06-30 下午10 38 25

    Steps to reproduce

    Just steps above.

    System configuration

    I'm using [email protected].

    Results of react-native info:

    info
      React Native Environment Info:
        System:
          OS: macOS 10.14.5
          CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
          Memory: 145.09 MB / 8.00 GB
          Shell: 5.3 - /bin/zsh
        Binaries:
          Node: 10.16.0 - /usr/local/bin/node
          Yarn: 1.6.0 - ~/.yarn/bin/yarn
          npm: 6.9.0 - /usr/local/bin/npm
          Watchman: 4.9.0 - /usr/local/bin/watchman
        SDKs:
          iOS SDK:
            Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
        IDEs:
          Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
        npmPackages:
          react: 16.8.3 => 16.8.3
          react-native: 0.59.9 => 0.59.9
        npmGlobalPackages:
          create-react-native-app: 1.0.0
          react-native-cli: 2.0.1
    
    opened by RyanLiu0235 2
  • Issue opening app by clicking widget Component

    Issue opening app by clicking widget Component

    Description

    I have implemented this widget by following this example Building a React-Native Today Widget in iOS I want to link a view to component in widget(icon) etc. When click that item it should open app and goto that screen. But I don't know how to do it. This code is working fine and showing images in widget except of opening app.

    This is the code of my index.widget.js file

    import React from 'react'
    import {AppRegistry, Platform, Text, View, Image, TouchableOpacity, Linking} from 'react-native'
    openMe = async (pm) => {
        console.warn(pm)
        Linking.openURL('appName://Camera/0')
    }
    const TodayWidget = () => (
    <View style={{ flex: 1, flexDirection:'row', justifyContent: 'center',alignItems:'center'}}>
        <View style={{flex:1, justifyContent:'center',alignItems:'center'}}>
            <TouchableOpacity  onPress={() => this.openMe('first')}>
                <Image source={require('./app/Images/camera.png')} resizeMode='contain' style={{width:50,height:50}} />
            </TouchableOpacity>
        </View>
    
        <View style={{flex:1, justifyContent:'center',alignItems:'center'}}>
            <TouchableOpacity  onPress={() => this.openMe('second')}>
                <Image source={require('./app/Images/camera.png')} resizeMode='contain' style={{width:50,height:50}}/>
            </TouchableOpacity>
        </View>
    </View>
    )
    if (Platform.OS === 'ios') {
    AppRegistry.registerComponent('AITodayWidget', () => TodayWidget)
    }
    

    Steps to reproduce

    Please follow this example Building a React-Native Today Widget in iOS

    System configuration

    OS: macOS High Sierra 10.13.6 Node: 9.6.1 Yarn: 0.15.1 npm: 6.4.1 Watchman: 4.9.0 Xcode: Xcode 10.0 Build version 10A255 Android Studio: 3.1 AI-173.4907809

    Packages: (wanted => installed) react: 16.2.0 => 16.2.0 react-native: ^0.52.0 => 0.52.3

    opened by asad-qbatch 2
  • Error: Bundle identifier

    Error: Bundle identifier

    while attempting to run my app, it reached the following build error:

    The following build commands failed: ValidateEmbeddedBinary build/Build/Products/Debug-iphonesimulator/WidgetTest.app/PlugIns/TodayWidgetExtension.appex (1 failure)

    and above it listed this:

    `error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.

    	Embedded Binary Bundle Identifier:	.TodayWidgetExtension
    	Parent App Bundle Identifier:		org.reactjs.native.example.WidgetTest`
    

    i installed all the dependencies and multiple tests yielded the same error. am i doing anything wrong? i copy-pasted the widget code from the example and it still doesnt work.

    opened by ghost 2
  • Bump loader-utils from 1.1.0 to 1.4.1 in /Examples/Complex

    Bump loader-utils from 1.1.0 to 1.4.1 in /Examples/Complex

    Bumps loader-utils from 1.1.0 to 1.4.1.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    v1.4.0

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    v1.3.0

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    v1.2.3

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    v1.2.2

    1.2.2 (2018-12-27)

    Bug Fixes

    • fixed a hash type extracting in interpolateName (#137) (f8a71f4)

    v1.2.1

    1.2.1 (2018-12-25)

    ... (truncated)

    Changelog

    Sourced from loader-utils's changelog.

    1.4.1 (2022-11-07)

    Bug Fixes

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    1.2.2 (2018-12-27)

    Bug Fixes

    • fixed a hash type extracting in interpolateName (#137) (f8a71f4)

    1.2.1 (2018-12-25)

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by evilebottnawi, a new releaser for loader-utils since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump qs from 6.5.2 to 6.5.3 in /Examples/Basic

    Bump qs from 6.5.2 to 6.5.3 in /Examples/Basic

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs from 6.4.0 to 6.4.1 in /Examples/Expandable

    Bump qs from 6.4.0 to 6.4.1 in /Examples/Expandable

    Bumps qs from 6.4.0 to 6.4.1.

    Changelog

    Sourced from qs's changelog.

    6.4.1

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] use safer-buffer instead of Buffer constructor
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] Clean up license text so it’s properly detected as BSD-3-Clause
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 486aa46 v6.4.1
    • 727ef5d [Fix] parse: ignore __proto__ keys (#428)
    • cd1874e [Robustness] stringify: avoid relying on a global undefined (#427)
    • 45e987c [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 90a3bce [meta] fix README.md (#399)
    • 9566d25 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • 74227ef Clean up license text so it’s properly detected as BSD-3-Clause
    • 35dfb22 [actions] backport actions from main
    • 7d4670f [Dev Deps] backport from main
    • 0485440 [Fix] use safer-buffer instead of Buffer constructor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /Examples/Basic

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /Examples/Basic

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump loader-utils from 1.1.0 to 1.4.2 in /Examples/Complex

    Bump loader-utils from 1.1.0 to 1.4.2 in /Examples/Complex

    Bumps loader-utils from 1.1.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    v1.4.0

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    v1.3.0

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    v1.2.3

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    v1.2.2

    1.2.2 (2018-12-27)

    Bug Fixes

    ... (truncated)

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    1.2.2 (2018-12-27)

    Bug Fixes

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by evilebottnawi, a new releaser for loader-utils since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump chownr from 1.0.1 to 1.1.4 in /Examples/Basic

    Bump chownr from 1.0.1 to 1.1.4 in /Examples/Basic

    Bumps chownr from 1.0.1 to 1.1.4.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump ua-parser-js from 0.7.12 to 0.7.31

    Bump ua-parser-js from 0.7.12 to 0.7.31

    Bumps ua-parser-js from 0.7.12 to 0.7.31.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Matěj Kříž
Matěj Kříž
Mobile-first, accessible components for React Native & Web to build a customizable Design System.

NativeBase is a mobile-first, accessible component library for building a consistent design system across android, iOS & web. Website Documentation Ta

GeekyAnts 18.8k Jan 4, 2023
A UI library for react native, provides 20+ pure JS(ES6) components, focusing on content display and action control.

Teaset ???? 中文完整文档版 A UI library for react native, provides 20+ pure JS(ES6) components, focusing on content display and action control. Installation

null 2.9k Jan 9, 2023
An "awesome" type curated list of how to use React Native and Meteor together

Awesome React Native Meteor An "awesome" type curated list of how to use React Native and Meteor together. Based on Awesome React Native which was bas

Meteor Factory 153 Oct 23, 2022
Component library for React Native

first-born Getting Started These instructions will get you a copy of the project up and running on your local machine for development and testing purp

99x 272 Dec 9, 2022
An utility style framework for React Native

An utility React Native style framework for rapidly building custom user interfaces. Documentation For full documentation, please check https://osmics

OsmiCSX 222 Dec 26, 2022
A framework to test a React Native app during runtime

react-native-diagnose A react runtime diagnose component Rationale Testing native applications is complicated There are features that can only be test

Netbeast 24 Feb 14, 2022
Cross-Platform React Native UI Toolkit

Cross Platform React Native UI Toolkit Get Started Installation Follow these instructions to install React Native Elements! Usage Start using the comp

React Native Elements 23.1k Dec 31, 2022
Customizable set of components for React Native applications

Shoutem UI Shoutem UI is a set of styleable components that enables you to build beautiful React Native applications for iOS and Android. All of our c

Shoutem 4.8k Jan 5, 2023
react-native stateless functional UI components to get you up and running quickly

panza Panza is a collection of ui-components for react-native modelled after iOS. This library is currently undergoing a rewrite and will be updated s

null 258 Dec 16, 2022
Highly customizable and theming components for React Native

@blankapp/ui English | 简体中文 Table of Contents Introduction Features Quick Start Prerequisites Installation Run the new app Discussion License Created

Blankapp 106 Nov 10, 2022
UI & API Components Library for React Native

React Native Common Cross Platform React Native UI Toolkit & API Get Started Installation $ yarn add react-native-common or $ npm install react-native

Reza Ghorbani 63 Feb 14, 2022
React Native Components and APIs for the Web

React Native for Web "React Native for Web" makes it possible to run React Native components and APIs on the web using React DOM. Documentation The do

Nicolas Gallagher 20.4k Jan 3, 2023
A framework for building native Windows apps with React.

React Native for Windows Build native Windows apps with React. See the official React Native website for an introduction to React Native. React Native

Microsoft 15.2k Jan 5, 2023
🤖 React Native Android widgets bridged to JS, a proof of concept

React Native Android Widget Proof Of Concept ?? Using React Native and having Android widgets is possible. Create buttons in Java / Android XML to tri

Netbeast 203 Dec 1, 2022
A simple Facebook Chat Head like bubble for react native

react-native-floating-bubble A simple Facebook Chat Head like bubble for react native. Special thanks to bubble-for-android because this is just react

null 158 Dec 16, 2022
iOS Today Widget in React Native

React Native Today Widget Experimental library investigating limits of implementation iOS App Extensions using React Native. Sample result from Comple

Matěj Kříž 374 Dec 30, 2022
iOS Today Widget in React Native

React Native Today Widget Experimental library investigating limits of implementation iOS App Extensions using React Native. Sample result from Comple

Matěj Kříž 374 Dec 30, 2022
Easy, cross-platform credit-card input for your React Native Project! Start accepting payment 💰 in your app today!

React Native Credit Card Input Easy (and good looking) credit-card input for your React Native Project ?? ?? Code: <CreditCardInput onChange={this._on

Sam Aryasa 1.4k Dec 26, 2022
A React Native module for launching today's most popular navigation/ride apps to navigate to a destination.

React Native Launch Navigator A React Native module for launching today's most popular navigation/ride apps to navigate to a destination. Platforms: A

Dave Alden 117 Dec 19, 2022
A React Native module for launching today's most popular navigation/ride apps to navigate to a destination.

React Native Launch Navigator A React Native module for launching today's most popular navigation/ride apps to navigate to a destination. Platforms: A

Dave Alden 117 Dec 19, 2022