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 🙏

© 2025 – Pkg Stats / Ryan Hefner

wireguard-native-bridge

v1.0.15

Published

A React Native bridge for WireGuard VPN

Readme

WireGuard React Native Example 🚀

This project provides a simple example of how to integrate WireGuard VPN into a React Native application using the wireguard-native-bridge module. 🎯✨🔧

Features 🎉

  • Connect to a WireGuard VPN easily
  • Disconnect from the VPN easily
  • Display connection status

Installation 🔧

Make sure you have React Native set up on your system. Then, install the required dependency:

npm install wireguard-native-bridge

or

yarn add wireguard-native-bridge

Configuration ⚙️

The VPN configuration is defined using a string with WireGuard settings:

const config = `
[Interface]
PrivateKey = EXAMPLE_PRIVATE_KEY
Address = 10.0.0.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = EXAMPLE_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
`;

Replace EXAMPLE_PRIVATE_KEY, EXAMPLE_PUBLIC_KEY, and other details with actual values from your VPN provider. 🔑🌐📡

Usage 📲⚡🛠️

Connecting to VPN 🔗

To connect to the VPN, the app:

  1. Calls WireguardModule.prepareVPN() inside a useEffect hook to ensure VPN is ready.
  2. Calls WireguardModule.startTunnel(config) when the user taps the "Connect VPN" button.
  3. Updates the UI and shows an alert if the connection is successful.

Disconnecting from VPN ❌

To disconnect, the app:

  1. Calls WireguardModule.stopTunnel() when the "Disconnect VPN" button is tapped.
  2. Updates the UI and shows an alert confirming the disconnection.

Example Code 💻

The main logic for handling VPN connections is in the connectVPN and disconnectVPN functions:

const connectVPN = async () => {
  try {
    await WireguardModule.startTunnel(config);
    setIsConnected(true);
    Alert.alert('Success', 'VPN connected successfully');
  } catch (error) {
    console.error('VPN connection failed:', error);
    Alert.alert('Error', 'Failed to connect to VPN');
  }
};

const disconnectVPN = async () => {
  try {
    await WireguardModule.stopTunnel();
    setIsConnected(false);
    Alert.alert('Success', 'VPN disconnected successfully');
  } catch (error) {
    console.error('VPN disconnection failed:', error);
    Alert.alert('Error', 'Failed to disconnect VPN');
  }
};

UI Preview 🎨

The app provides a basic UI with a title and a button to toggle the VPN connection.

<TouchableOpacity
  style={[styles.button, isConnected ? styles.disconnectButton : styles.connectButton]}
  onPress={isConnected ? disconnectVPN : connectVPN}
>
  <Text style={styles.buttonText}>
    {isConnected ? 'Disconnect VPN' : 'Connect VPN'}
  </Text>
</TouchableOpacity>

Notes 📌

  • Ensure that your app has the necessary permissions to use VPN services on Android and iOS.
  • The WireGuard module may require additional setup depending on the platform.
  • Always replace example values with real VPN credentials.

License 📜

This project is licensed under the MIT License.