Detecting the Provider
To detect if a user has already installed Phantom, a web application should check for the existence of a
phantom
object. Phantom's browser extension and mobile in-app browser will both inject a phantom
object into the window of any web application the user visits, provided that site is using https://
, on localhost
, or is 127.0.0.1.
Phantom will not inject the provider into iframes or sites use http://
.If a
phantom
object exists, Solana apps can interact with Phantom via the API found at window.phantom.solana
. This solana
object is also available at window.solana
to support legacy integrations. To detect if Phantom is installed, an application should check for an additional
isPhantom
flag.const isPhantomInstalled = window.phantom?.solana?.isPhantom
If Phantom is not installed, we recommend you redirect your users to our website. Altogether, this may look like the following.
const getProvider = () => {
if ('phantom' in window) {
const provider = window.phantom?.solana;
if (provider?.isPhantom) {
return provider;
}
}
window.open('https://phantom.app/', '_blank');
};
For an example of how a React application can detect Phantom, please refer to the
getProvider
function in our sandbox. Last modified 10mo ago