React Native adapter for building hybrid apps with Turbolinks 5

Last update: Jul 30, 2022

React Native Turbolinks

A implementation of Turbolinks for iOS and Turbolinks Android for React Native.

React Native Turbolinks

Getting started

yarn add react-native-webview react-native-turbolinks
cd ios && pod install && cd .. # CocoaPods on iOS needs this extra step

Warning

  • This component only applies to projects made with react-native init or to those made with expo-cli which have since ejected. For more information about ejecting, please see the guide on Expo docs.

  • On android you should use Volume UP to show Developer Menu instead ⌘ M.

  • React Native Turbolinks doesn't support Fast Refresh, please disable it on React Native developer menu ⌘ D.

  • Start rails with rails s -b 0.0.0.0.

Basic Usage

import React, { Component } from 'react'
import Turbolinks from 'react-native-turbolinks'

export default class App extends Component {

  componentDidMount() {
    Turbolinks.addEventListener('turbolinksVisit', this.handleVisit)
    Turbolinks.addEventListener('turbolinksError', this.handleError)
    Turbolinks.startSingleScreenApp({url: 'http://MYIP:9292'})
  }

  handleVisit = (data) => {
    Turbolinks.visit({url: data.url, action: data.action})
  }

  handleError = (data) => {
    alert(data.description)
  }

  render() { return null }
}

Running the Demo

This repository includes a demo application to show off features of the framework. The demo bundles a simple HTTP server that serves a Turbolinks 5 web app on localhost at port 9292.

To run the demo, clone this repository to your computer and change into its directory. Then, Open file Example/app.json and change baseUrl with your IP and start the demo server by running Example/demo-server from the command line.

Once you’ve started the demo server, explore the demo application in the Simulator by running react-native run-ios or react-native run-android on Example folder.

React Native Turbolinks Demo Application

Methods

startSingleScreenApp(route, appOption = {})

Start a Single Screen App. Use it instead visit for first visit.

startSplitScreenApp(primaryComponent, secondaryRoute, appOption = {})

Start a Splitted Screen App. Use it instead visit for first visit. It is a good choice for iPad. (iOS Only)

visit(route)

Visit a URL or Component.

replaceWith(route)

Replace current visitable with a component. With the same route param like to visit a component.

reloadVisitable()

Reload current visitable. For example when a connection error view is launched and you want to retry.

reloadSession()

Reload current session.

removeAllCookies()

Remove all cookies. Return a promise.

dismiss(animated = true)

Dismiss a overlaped view presented by visiting a component with modal option. Return a promise.

popToRoot(animated = true)

Back until to root view. Return a promise.

back(animated = true)

Trigger a native back event. For example if you using a custom navbar and need to provide a back button. Return a promise.

renderTitle(title, subtitle = null)

Change title of current view. For example if you want to get title from page source.

renderActions(actions)

Change actions of current view. For example if you want to mount a menu looking for data-attributes on page source.

renderNavBarStyle(navBarStyle)

Change navbarStyle on run time. For example if you want to provide a way for the user to choose a theme.

injectJavaScript(script)

Function that accepts a string that will be passed to the WebView and executed immediately as JavaScript. Return a promise.

addEventListener(eventName, handler)

Adds an event handler. Supported events:

  • turbolinksVisit: Fires when you tap a Turbolinks-enabled link. The argument to the event handler is an object with keys: url, path, action.
  • turbolinksError: Fires when your visit’s network request fails.The argument to the event handler is an object with keys: code, statusCode, description.
  • turbolinksMessage: Fires when you send messages from JavaScript to your native application. The argument to the event handler is a string with the message.
  • turbolinksTitlePress: Fire when title is tapped. The arguments to the event handler is an object with keys: url, path, component.
  • turbolinksActionPress: Fire when a action is tapped. The arguments to the event handler is an object with keys: url, path, component, actionId.
  • turbolinksLeftButtonPress: Fire when left button item is tapped. The arguments to the event handler is an object with keys: url, path, component. (iOS Only)
  • turbolinksRightButtonPress: Fire when right button item is tapped. The arguments to the event handler is an object with keys: url, path, component. (iOS Only)
  • turbolinksVisitCompleted: Fire when the request has been fulfilled successfully and the page fully rendered, Here you can parse html and create a dynamic menu for example. The arguments to the event handler is url, path.

removeEventListener(eventName, handler)

Removes the listener for given event.

Objects

Route

  • Url properties
    • url: Url to visit. (Required)
  • Component properties
    • component: Component to visit. (Required)
    • modal: A boolean to show a view without navbar and backbutton. (Default false)
    • dismissable: When true is possible dismiss modal. (Default false)
    • passProps: Passes this in as props to the rendered component.
  • Common properties
    • title: The default value is the title of the Web page.
    • subtitle: A subtitle for visitable view.
    • visibleDropDown: Show a small arrow next to title.
    • hidesNavBar: Hide navigation bar. (Default false)
    • hidesShadow: Indicates whether to hide the navigation 1px hairline shadow. (Default false) (iOS Only)
    • leftButtonText/leftButtonIcon: A left button text/icon. (iOS Only)
    • rightButtonText/rightButtonIcon: A right button text/icon. (iOS Only)
    • actions: A Array of action objects to mount a menu.
    • action: If action is 'advance', so it will perform a animated push, if "replace" will perform a pop without animation. (Default 'advance')

AppOption

  • userAgent: You can check for this string on the server and use it to send specialized markup or assets to your application.
  • messageHandler: You can register a Message Handler to send messages from JavaScript to your application.
  • loadingView: Set a custom loadingView using a react component.
  • navBarStyle: {titleTextColor, subtitleTextColor, barTintColor, tintColor, menuIcon}.
  • injectedJavaScript: Set this to provide JavaScript that will be injected into the web page when the view loads.

Action

  • id: A integer identifier for the action. (Required)
  • title: A title for the action.
  • icon: A icon for the action.
  • button: A boolean to show action inside menu or in toolbar. (Default false) (Android Only)

Constants

Turbolinks.Constants.ErrorCode.httpFailure: 0

Turbolinks.Constants.ErrorCode.networkFailure: 1

Turbolinks.Constants.Action.advance: 'advance'

Turbolinks.Constants.Action.replace: 'replace'

Turbolinks.Constants.Action.restore: 'restore'

Android Style

For android set your style on android/app/src/main/res/values/styles.xml.

TODO

Resources

GitHub

https://github.com/lazaronixon/react-native-turbolinks
Comments
  • 1. Tabbar troubles with Turbolinks

    First of all, thanks for this great library. I'm trying to accomplish something but I can't get it to work. I would like to have a tab bar in combination this library. I tried the code in the Wiki and modified it a bit to work with React Navigation.

    And this is how it looks, as you can see it doesn't behave like a Turbolinks app it looks like regular webviews in tabs. Does anyone have any pointers on how to fix this, or maybe a working example?

    ScreenFlow-min

    This is what I currently have:

    App.js

    import React, {Component} from 'react';
    import Turbolinks from 'react-native-turbolinks';
    
    export default class App extends Component {
      componentDidMount() {
        Turbolinks.startSingleScreenApp({title: 'App', component: 'TabbedView'});
      }
    
      render() {
        return null;
      }
    }
    

    TabbedView.js

    import React, {Component} from 'react';
    import {Text, ScrollView, SafeAreaView} from 'react-native';
    import {WebView} from 'react-native-webview';
    import Turbolinks from 'react-native-turbolinks';
    
    import {NavigationContainer} from '@react-navigation/native';
    import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
    
    const baseUrl = 'http://localhost:9292/';
    const anotherURL = 'http://localhost:9292/';
    
    class Home extends Component {
      onLoadStart = event => {
        if (event.nativeEvent.url != baseUrl) {
          this.webview.stopLoading();
          Turbolinks.visit({url: event.nativeEvent.url});
        }
      };
    
      render() {
        return (
          <SafeAreaView style={{flex: 1}}>
            <WebView
              ref={webview => {
                this.webview = webview;
              }}
              source={{uri: baseUrl}}
              onLoadStart={this.onLoadStart}
            />
          </SafeAreaView>
        );
      }
    }
    class Aanmelden extends Component {
      onLoadStart = event => {
        if (event.nativeEvent.url != baseUrl) {
          this.webview.stopLoading();
          Turbolinks.visit({url: event.nativeEvent.url});
        }
      };
    
      render() {
        return (
          <SafeAreaView style={{flex: 1}}>
            <WebView
              ref={webview => {
                this.webview = webview;
              }}
              source={{uri: anotherURL}}
              onLoadStart={this.onLoadStart}
            />
          </SafeAreaView>
        );
      }
    }
    
    class Profile extends Component {
      render() {
        return (
          <ScrollView style={{flex: 1, backgroundColor: 'white', height: '100%'}}>
            <Text style={{flex: 1}}>
              Native view Native view Native view....
            </Text>
          </ScrollView>
        );
      }
    }
    
    const Tab = createBottomTabNavigator();
    
    export default function App() {
      return (
        <NavigationContainer>
          <Tab.Navigator>
            <Tab.Screen name="Home" component={Home} />
            <Tab.Screen name="Profile" component={Profile} />
            <Tab.Screen name="Aanmelden" component={Aanmelden} />
          </Tab.Navigator>
        </NavigationContainer>
      );
    }
    
    Reviewed by jankeesvw at 2020-05-04 20:57
  • 2. Dynamic android styles

    One of the requirements for our project is to be able to style the navigation via a remote api. This works great for iOS as we can set the colours in navBarStlye. On Android we cant do this because colours are set from styles.xml. Is there any workaround for being able to style the android navigation dynamically?

    Reviewed by nconroy at 2018-04-27 02:23
  • 3. Error while adding react-native-turbolinks to react

    I am getting following error while after running the following commands

    yarn add react-native-webview react-native-turbolinks
    cd ios && pod install && cd .. # CocoaPods on iOS needs this extra step
    

    Error

    ** BUILD FAILED **
    
    The following build commands failed:
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/ActionsViewController.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/ApplicationViewController.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/CustomVisitableView.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/NativeViewController.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/RNTurbolinksManager.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/SplitViewController.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksUtils/TurbolinksAction.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksUtils/TurbolinksNavigationController.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksUtils/TurbolinksRoute.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksUtils/TurbolinksSession.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksUtils/TurbolinksTitleView.swift
    	CompileSwift normal x86_64 **/node_modules/react-native-turbolinks/ios/TurbolinksViews/WebViewController.swift
    	CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
    (13 failures)
    

    any idea what I am getting wrong here. Thanks!

    Reviewed by wonderer007 at 2020-05-29 21:25
  • 4. Turbolinks Android Deprecated

    Thanks a lot for the amazing project

    I am just starting to learn ReactNative. I just noticed this DEPRECATION warning and I wanted to have your ideas

    https://github.com/turbolinks/turbolinks-android/wiki/Turbolinks-Android-Adapter-1.x-Deprecation

    thanks a lot Fabrizio

    Reviewed by fabriziobertoglio1987 at 2018-12-22 16:19
  • 5. Stuck at launch

    Everything seems to be working fine until the app gets stuck when launching the first screen. No idea what is causing this..

    React native is logging this: [Sun Apr 19 2020 18:28:22.485] LOG Running "StupoPlatform" with {"rootTag":1,"initialProps":{}}

    Could someone help me with this? Thanks

    Reviewed by xerervw at 2020-04-19 16:32
  • 6. Can iOS contentInsetAdjustmentBehavior be changed?

    Hi, thanks for this great project!

    Can the iOS WebView contentInsetAdjustmentBehavior be changed from react native code in order to remove the safe area of the webview (if we want the webview to take all the screen size in iPhone X)?

    Reviewed by risinglf at 2018-12-01 22:16
  • 7. Use with other navigation components?

    Is it possible to use this library with other react navigation libraries? My use case is building an app with a native tabbed navigation bar at the bottom of the screen, something like this..

    https://snack.expo.io/@react-navigation/basic-tabs

    Only each tab would be a Turbolinks view. In this example, one to /home and the other to /settings.

    I've tried dropping in a few different navigation components but nothing seems to play nicely with react-native-turbolinks yet.

    Reviewed by benreyn at 2018-02-09 08:15
  • 8. Custom Navigation

    It is great we can set an actions menu, however, we also need to set the icon for the App. Our app also needs to use an image for the Title of the navigation bar and would benefit from a more complex menu component. Is there a way to use our own toolbar rather than the one generated? Or a way to get access to the properties of the Turbolinks navigation bar?

    Reviewed by nconroy at 2018-04-26 01:00
  • 9. [Android] Silent error when selecting a file after file manager closes

    On input type="file", clicking on "Choose a file" opens the file manager, but when the file manager closes (either by selecting a file or by going back), no file is selected, and clicking on "Choose a file" does not work anymore.

    You can test it in my showcase repo.

    Edit: and here is the compiled test application

    Reviewed by fcatuhe at 2018-02-12 08:13
  • 10. Error running `bundle install`

    Hi, I'm new to react native and turbolinks. While trying to run the demo-server. I keep getting this error:

    Starting the demo server (press ^C to exit)... Installing Bundler... Installing dependencies... Error running bundle install

    Could someone help me with this? I have no idea what is causing this..

    Thanks

    Reviewed by xerervw at 2020-04-18 09:59
  • 11. How to access styles of actions menu

    How can I change the styles of the action menu? We need to prevent the menu using the text size from ios: Simulator Screen Shot - iPhone 11 Pro - 2020-01-10 at 13 44 15

    Also, some styling seems to add padding to the top? Simulator Screen Shot - iPhone X - 2020-01-10 at 13 45 23

    Reviewed by nconroy at 2020-01-10 02:46
  • 12. Bump simple-plist from 1.1.1 to 1.3.1 in /Example

    Bumps simple-plist from 1.1.1 to 1.3.1.

    Release notes

    Sourced from simple-plist's releases.

    TypeScript

    This release is a rewrite of the JavaScript code into TypeScript code to add strong typing for those who would choose to use it.

    As this is a minor release there should be minimal risk in upgrading from v1.1.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.

    Reviewed by dependabot[bot] at 2022-06-02 00:49
  • 13. Bump rack from 2.2.3 to 2.2.3.1 in /Example/server

    Bumps rack from 2.2.3 to 2.2.3.1.

    Changelog

    Sourced from rack's changelog.

    Changelog

    All notable changes to this project will be documented in this file. For info on how to format all future additions to this file please reference Keep A Changelog.

    [3.0.0] - Unreleased

    Security

    SPEC Changes

    • Response status must now be an integer greater than or equal to 100.
    • Response headers must now be an unfrozen hash.
    • Response header keys can no longer include uppercase characters.
    • Response header values can be an Array to handle multiple values (and no longer supports \n encoded headers).
    • Response body can now respond to #call (streaming body) instead of #each (enumerable body), for the equivalent of response hijacking in previous versions.
    • Middleware must no longer call #each on the body, but they can call #to_ary on the body if it responds to #to_ary.
    • rack.input is no longer required to be rewindable.
    • rack.multithread/rack.multiprocess/rack.run_once are no longer required environment keys.
    • SERVER_PROTOCOL is now a required key, matching the HTTP protocol used in the request.

    Removed

    • Remove rack.multithread/rack.multiprocess/rack.run_once. These variables generally come too late to be useful. (#1720, [@​ioquatix], [@​jeremyevans]))
    • Remove deprecated Rack::Request::SCHEME_WHITELIST. ([@​jeremyevans])
    • Remove internal cookie deletion using pattern matching, there are very few practical cases where it would be useful and browsers handle it correctly without us doing anything special. (#1844, [@​ioquatix])

    Added

    • Rack::Headers added to support lower-case header keys. ([@​jeremyevans])
    • Rack::Utils#set_cookie_header now supports escape_key: false to avoid key escaping. ([@​jeremyevans])
    • Rack::RewindableInput supports size. (@​ahorek)
    • Rack::RewindableInput::Middleware added for making rack.input rewindable. ([@​jeremyevans])
    • The RFC 7239 Forwarded header is now supported and considered by default when looking for information on forwarding, falling back to the X-Forwarded-* headers. Rack::Request.forwarded_priority accessor has been added for configuring the priority of which header to check. (#1423, [@​jeremyevans])
    • Allow response headers to contain array of values. (#1598, [@​ioquatix])

    Changed

    • BREAKING CHANGE: Require status to be an Integer. (#1662, @​olleolleolle)
    • BREAKING CHANGE: Query parsing now treats parameters without = as having the empty string value instead of nil value, to conform to the URL spec. (#1696, [@​jeremyevans])
    • Relax validations around Rack::Request#host and Rack::Request#hostname. (#1606, @​pvande)
    • Removed antiquated handlers: FCGI, LSWS, SCGI, Thin. (#1658, [@​ioquatix])
    • Removed options from Rack::Builder.parse_file and Rack::Builder.load_file. (#1663, [@​ioquatix])
    • Rack::HTTP_VERSION has been removed and the HTTP_VERSION env setting is no longer set in the CGI and Webrick handlers. (#970, [@​jeremyevans])
    • Rack::Request#[] and #[]= now warn even in non-verbose mode. (#1277, [@​jeremyevans])
    • Decrease default allowed parameter recursion level from 100 to 32. (#1640, [@​jeremyevans])
    • Attempting to parse a multipart response with an empty body now raises Rack::Multipart::EmptyContentError. (#1603, [@​jeremyevans])
    • Rack::Utils.secure_compare uses OpenSSL's faster implementation if available. (#1711, @​bdewater)
    • Rack::Request#POST now caches an empty hash if input content type is not parseable. (#749, [@​jeremyevans])

    ... (truncated)

    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.

    Reviewed by dependabot[bot] at 2022-05-27 16:44
  • 14. Bump sinatra from 2.1.0 to 2.2.0 in /Example/server

    Bumps sinatra from 2.1.0 to 2.2.0.

    Changelog

    Sourced from sinatra's changelog.

    2.2.0 / 2022-02-15

    • Handle EOFError raised by Rack and return Bad Request 400 status. #1743 by tamazon

    • Minor refactors in base.rb. #1640 by ceclinux

    • Add escaping to the static 404 page. #1645 by Chris Gavin

    • Remove detect_rack_handler method. #1652 by ceclinux

    • Respect content type set in superclass before filter. Fixes #1647 #1649 by Jordan Owens

    • Revert "Use prepend instead of include for helpers. #1662 by namusyaka

    • Fix usage of inherited Sinatra::Base classes keyword arguments. Fixes #1669 #1670 by Cadu Ribeiro

    • Reduce RDoc generation time by not including every README. Fixes #1578 #1671 by Eloy Pérez

    • Add support for per form csrf tokens. Fixes #1616 #1653 by Jordan Owens

    • Update MAINTENANCE.md with the stable branch status. #1681 by Fredrik Rubensson

    • Validate expanded path matches public_dir when serving static files. #1683 by cji-stripe

    • Fix Delegator to pass keyword arguments for Ruby 3.0. #1684 by andrewtblake

    • Fix use with keyword arguments for Ruby 3.0. #1701 by Robin Wallin

    • Fix memory leaks for proc template. Fixes #1704 #1719 by Slevin

    • Remove unnecessary test_files from the gemspec. #1712 by Masataka Pocke Kuwabara

    • Add #select, #reject and #compact methods to Sinatra::IndifferentHash. #1711 by Olivier Bellone

    • Docs: Spanish documentation: Update README.es.md with removal of Thin. #1630 by Espartaco Palma

    • Docs: German documentation: Fixed typos in German README.md. #1648 by Juri

    • Docs: Japanese documentation: Update README.ja.md with removal of Thin. #1629 by Ryuichi KAWAMATA

    • Docs: English documentation: Various minor fixes to README.md. #1663 by Yanis Zafirópulos

    • Docs: English documentation: Document when dump_errors is enabled. Fixes #1664 #1665 by Patrik Ragnarsson

    • Docs: Brazilian Portuguese documentation: Update README.pt-br.md with translation fixes. #1668 by Vitor Oliveira

    CI

    • Use latest JRuby 9.2.16.0 on CI. #1682 by Olle Jonsson

    ... (truncated)

    Commits
    • 44ce685 Bump version to 2.2.0
    • 759a8eb Block invalid requests instead of raising error
    • f6cee1c Merge pull request #1743 from tamazon/fix_EOFError
    • 59d8b26 Merge pull request #1733 from epergo/ep/update-changelog
    • c29749d lock rack version to 2.0 for now
    • df65a73 Handle EOFError raised by Rack
    • d1597ab Update changelog since last release
    • e69b6b9 Merge pull request #1728 from olleolleolle/patch-4
    • a6554e3 chore: Drop boilerplate comments
    • d6ba201 Remove ruby head from build
    • 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.

    Reviewed by dependabot[bot] at 2022-05-03 21:17
  • 15. Bump async from 2.6.3 to 2.6.4 in /Example

    Bumps async from 2.6.3 to 2.6.4.

    Changelog

    Sourced from async's changelog.

    v2.6.4

    • Fix potential prototype pollution exploit (#1828)
    Commits
    Maintainer changes

    This version was pushed to npm by hargasinski, a new releaser for async 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.

    Reviewed by dependabot[bot] at 2022-04-29 01:59
  • 16. Bump minimist from 1.2.5 to 1.2.6 in /Example

    Bumps minimist from 1.2.5 to 1.2.6.

    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.

    Reviewed by dependabot[bot] at 2022-04-11 19:14
  • 17. Bump plist from 3.0.1 to 3.0.4 in /Example

    Bumps plist from 3.0.1 to 3.0.4.

    Changelog

    Sourced from plist's changelog.

    3.0.4 / 2021-08-27

    3.0.3 / 2021-08-04

    • update xmldom to 0.6.0 to patch critical vulnerability (Mike Reinstein)
    • remove flaky saucelabs teseting badge (Mike Reinstein)

    3.0.2 / 2021-03-25

    • update xmldom to 0.5.0 to patch critical vulnerability (Mike Reinstein)
    • update saucelab credentials to point at mreinstein's saucelabs account (Mike Reinstein)
    • remove a bunch of test versions from the matrix because they weren't working in zuul + sauce (Mike Reinstein)
    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.

    Reviewed by dependabot[bot] at 2022-03-02 00:25
A set of classes and react components to make work your react-native app in a browser. (with some limitations obviously)

React Native for Web A set of classes and react components to make work your react-native app in a browser. (with some limitations obviously) GitHub r

Jul 29, 2022
React Native Webview with Javascript Bridge
React Native Webview with Javascript Bridge

Please take a look at this issue first React Native WebView Javascript Bridge I have been testing and reading a lot of way to safely create a bridge b

Jul 19, 2022
A React Native wrapper for Safari View Controller.

React Native Safari View React Native Safari View is a Safari View Controller wrapper for React Native. Documentation Install Usage Example Methods Ev

Jul 30, 2022
Simple React Native Android module to use Android's WebView inside your app
Simple React Native Android module to use Android's WebView inside your app

react-native-webview-android Simple React Native Android module to use Android's WebView inside your app (with experimental html file input support to

May 8, 2022
Crosswalk's WebView for React Native on Android.

react-native-webview-crosswalk Crosswalk's WebView for React Native on Android. Dependencies 0.4.0+: react-native >=0.32.0, react >= 15.3.0 0.3.0+: re

Jun 16, 2022
Luna - a React Native Web boilerplate
Luna - a React Native Web boilerplate

?? Luna ?? Luna is a React Native boilerplate with minimal configuration so your app can run on Android, IOS and Web concurrently. ⭐ Features: React N

Jul 27, 2022
This repository contain multitasking Hybrid Application using React-Native
This repository contain multitasking Hybrid Application using React-Native

Multitasking Calculator About Application This project is made for Multitasking Calculator that means, it have two type of Calculator i.e., BMI Calcul

Jun 15, 2022
A hybrid package of UI elements for ReactJS, from void

A hybrid package of UI elements for ReactJS, from void

Jul 16, 2022
nvim-dap-reactnative: Standalone debug adapter protocol for react native

nvim-dap-reactnative Standalone debug adapter protocol for react native. Hopefully won't have any specific editor/ide stuff As of now, first commit. W

Jul 20, 2022
🔱 Svelte component runs everywhere, adapter for react/vue2/vue3/svelte.
🔱  Svelte component runs everywhere, adapter for react/vue2/vue3/svelte.

Write components once, run everywhere. Make svelte components run inside React or Vue applications. Managing support for libraries that provide UI com

Apr 14, 2022
React adapter of the TSyringe dependency injection container 💉
React adapter of the TSyringe dependency injection container 💉

Reactject React adapter of the TSyringe dependency injection container ?? Introduction Packages Examples Support the project Introduction Start managi

May 4, 2022
PouchDB adapter using ReactNative SQLite as its backing store

pouchdb-adapter-react-native-sqlite PouchDB adapter using ReactNative SQLite as its backing store. Why? SQLite storage performs much faster than Async

May 30, 2022
Simple Solana Faucet connecting with Phantom and Solflare using @solana/wallet-adapter

Solana Faucet App built with Expo, Web3 & React Native This is a simple Solana Faucet built with Expo, Web3 & React Native that connects with Phantom

Jun 21, 2022
React, React Native and Vue UI components for building data-driven apps with Elasticsearch
React, React Native and Vue UI components for building data-driven apps with Elasticsearch

Reactive Search UI components library for Elasticsearch: Available for React, Vue and React Native Read how to build an e-commerce search UI a.) with

Aug 7, 2022
A framework for building native apps with React.

React Native Learn once, write anywhere: Build mobile apps with React. Getting Started · Learn the Basics · Showcase · Contribute · Community · Suppor

Aug 4, 2022
A framework for building native Windows apps with React.
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

Jul 31, 2022
Whirlwind is a utility-first styling framework specifically designed for React Native. It is heavily inspired by Tachyons and Tailwind CSS and uses low-level building blocks for rapidly building custom designs.

React Native Whirlwind ??️ A utility-first CSS framework designed for React Native. Whirlwind is a utility-first CSS framework specifically designed f

May 6, 2022
Vtexio-react-apps - Apps react para plafaforma VTEX.
Vtexio-react-apps - Apps react para plafaforma VTEX.

Projeto Modal + Apps Extras Projeto modal setando cookies. Desenvolvido em React + TypeScript para aplicação em e-commerce VTEXIO. ?? Este projeto se

Jan 3, 2022
Toolkit for building accessible rich web apps with React
Toolkit for building accessible rich web apps with React

Reakit Toolkit for building accessible rich web apps with React. Explore website » Sponsors By donating $100 or more you become a sponsor and help in

Aug 4, 2022
Toolkit for building accessible rich web apps with React
Toolkit for building accessible rich web apps with React

Reakit Toolkit for building accessible rich web apps with React. Explore website » Sponsors By donating $100 or more you become a sponsor and help in

Jul 30, 2022