npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

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

About

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

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

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

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

Open Software & Tools

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

© 2026 – Pkg Stats / Ryan Hefner

@mikkelscheike/email-provider-links-react-native

v1.0.2

Published

React Native component and hook for known-domain email provider login links

Readme

@mikkelscheike/email-provider-links-react-native

npm version

Open the right inbox from a React Native app. Pass an email address and get a login link for Gmail, Outlook, Yahoo, and 140 other providers.

This package looks up known email domains on device and opens the provider login URL with Linking. It matches getEmailProviderSync from @mikkelscheike/email-provider-links: the same provider list, alias normalization, and international domains. It does not query DNS, so custom company domains are not detected here.

Try the data in the live demo. The repository overview is in the project README.

  • 140 providers, 259 domains, bundled in the package
  • Alias normalization: [email protected] becomes [email protected]
  • International domains, converted to Punycode before lookup
  • No network lookup for detection, so it works offline for known providers
  • A hook and a component: read the provider yourself, or render a pressable that opens the login URL

Installation

npm install @mikkelscheike/email-provider-links-react-native

Peer dependencies:

  • react >=18.2.0
  • react-native >=0.73.0

This repository tests the package with React Native 0.87.

Open a login link

EmailProviderLink renders a pressable. The default label is Open Gmail (or whichever provider matched). Pressing it calls Linking.openURL.

import { Text } from 'react-native';
import { EmailProviderLink } from '@mikkelscheike/email-provider-links-react-native';

<EmailProviderLink email={email} fallback={<Text>Check your inbox</Text>} />

fallback is rendered when the address is invalid, the domain is unknown, or the provider has no login URL. Apple Private Relay ([email protected]) is a known provider with loginUrl: null, so it takes the fallback path and nothing is opened.

Custom label:

<EmailProviderLink email={email}>
  <Text>Open inbox</Text>
</EmailProviderLink>

Render prop, when the label needs the provider:

<EmailProviderLink email={email}>
  {(state) => <Text>Open {state.provider?.companyProvider}</Text>}
</EmailProviderLink>

If Linking.openURL rejects, the press handler swallows that error.

Read the provider yourself

useEmailProvider returns the lookup plus openLogin.

import { useEmailProvider } from '@mikkelscheike/email-provider-links-react-native';

const { provider, email, error, openLogin } = useEmailProvider('[email protected]');

// provider?.companyProvider === "Gmail"
// provider?.loginUrl === "https://mail.google.com/mail/"
// email === "[email protected]"

const opened = await openLogin();

openLogin returns false when there is no login URL and does not call Linking. Otherwise it opens the URL and returns true.

lookupEmailProvider is the same lookup without React, for code that is not a component.

import { lookupEmailProvider } from '@mikkelscheike/email-provider-links-react-native';

const result = lookupEmailProvider('[email protected]');

A match looks like this:

{
  provider: {
    companyProvider: "Gmail",
    loginUrl: "https://mail.google.com/mail/",
    type: "public_provider"
  },
  email: "[email protected]",
  detectionMethod: "domain_match"
}

email is the normalized address. provider is null when lookup fails, and error.type is one of:

| error.type | When | | --- | --- | | INVALID_EMAIL | Empty, non-string, or malformed address | | UNKNOWN_DOMAIN | Valid address, domain not in the provider list | | IDN_VALIDATION_ERROR | The domain cannot be encoded |

What this package does not do

Business-domain detection stays in the Node library. [email protected] is an unknown domain here, even when that company uses Google Workspace or Microsoft 365. Use @mikkelscheike/email-provider-links on a server for DNS lookups, batch processing, and the extended provider record.

License

MIT. See LICENSE.