# runtime
Documentation: [Chrome Runtime API](https://developer.chrome.com/docs/extensions/reference/runtime)
A wrapper for the Chrome `runtime` API, including messaging, updates, and lifecycle events.
## Methods
- [connect(extensionId, connectInfo?)](#connect)
- [connectNative(application)](#connectNative)
- [getContexts(filter)](#getContexts) [MV3]
- [getManifest()](#getManifest)
- [getId()](#getId)
- [getManifestVersion()](#getManifestVersion)
- [isManifestVersion3()](#isManifestVersion3)
- [getPackageDirectoryEntry()](#getPackageDirectoryEntry)
- [getPlatformInfo()](#getPlatformInfo)
- [getBrowserInfo()](#getBrowserInfo) [Firefox]
- [getUrl(path)](#getUrl)
- [openOptionsPage()](#openOptionsPage)
- [reload()](#reload)
- [requestUpdateCheck()](#requestUpdateCheck)
- [restart()](#restart) [MV3]
- [restartAfterDelay(seconds)](#restartAfterDelay) [MV3]
- [sendMessage(message)](#sendMessage)
- [setUninstallUrl(url)](#setUninstallUrl)
## Events
- [onConnect(callback)](#onConnect)
- [onConnectExternal(callback)](#onConnectExternal)
- [onInstalled(callback)](#onInstalled)
- [onMessage(callback)](#onMessage)
- [onMessageExternal(callback)](#onMessageExternal)
- [onRestartRequired(callback)](#onRestartRequired)
- [onStartup(callback)](#onStartup)
- [onSuspend(callback)](#onSuspend)
- [onSuspendCanceled(callback)](#onSuspendCanceled)
- [onUpdateAvailable(callback)](#onUpdateAvailable)
- [onUserScriptConnect(callback)](#onUserScriptConnect)
- [onUserScriptMessage(callback)](#onUserScriptMessage)
---
### connect
```
connect(extensionId: string, connectInfo?: object): chrome.runtime.Port
```
Opens a long-lived connection to another extension or app.
### connectNative
```
connectNative(application: string): chrome.runtime.Port
```
Connects to a native application.
### getContexts [MV3]
```
getContexts(filter: chrome.runtime.ContextFilter): Promise
```
Retrieves extension contexts matching the filter (Manifest V3 only).
### getManifest
```
getManifest(): chrome.runtime.Manifest
```
Returns the extension's manifest details.
### getId
```
getId(): string
```
Returns the extension ID.
### getManifestVersion
```
getManifestVersion(): 2 | 3
```
Retrieves the manifest version (2 or 3).
### isManifestVersion3
```
isManifestVersion3(): boolean
```
Checks if the extension uses Manifest V3.
### getPackageDirectoryEntry
```
getPackageDirectoryEntry(): Promise
```
Gets the root directory of the extension package.
### getPlatformInfo
```
getPlatformInfo(): Promise
```
Returns information about the current platform.
### getBrowserInfo [Firefox]
```
getBrowserInfo(): Promise<{ name: string; vendor: string; version: string; buildID: string; }>
```
Returns information about the browser. Available only in Firefox.
### getUrl
```
getUrl(path: string): string
```
Converts a relative path to an absolute extension URL.
### openOptionsPage
```
openOptionsPage(): Promise
```
Opens the extension's options page.
### reload
```
reload(): void
```
Reloads the extension.
### requestUpdateCheck
```
requestUpdateCheck(): Promise<{ status: chrome.runtime.RequestUpdateCheckStatus; details?: chrome.runtime.UpdateCheckDetails; }>
```
Checks for an update and returns status and details.
### restart [MV3]
```
restart(): void
```
Restarts the browser to apply updates (Manifest V3 only).
### restartAfterDelay [MV3]
```
restartAfterDelay(seconds: number): Promise
```
Schedules a browser restart after the given delay in seconds (Manifest V3 only).
### sendMessage
```
sendMessage(message: M): Promise
```
Sends a single message to the extension or app and awaits a response.
### setUninstallUrl
```
setUninstallUrl(url: string): Promise
```
Sets a URL to be opened upon uninstallation.
### onConnect
```
onConnect(callback: (port: chrome.runtime.Port) => void): () => void
```
Fires when a connection is made by another extension or content script. Returns an unsubscribe function.
### onConnectExternal
```
onConnectExternal(callback: (port: chrome.runtime.Port) => void): () => void
```
Fires when an external extension connects. Returns an unsubscribe function.
### onInstalled
```
onInstalled(callback: (details: chrome.runtime.InstalledDetails) => void): () => void
```
Fires when the extension is installed or updated. Returns an unsubscribe function.
### onMessage
```
onMessage(
callback: (
message: any,
sender: chrome.runtime.MessageSender,
sendResponse: (response?: any) => void
) => void
): () => void
```
Fires when a message is sent to the extension. Returns an unsubscribe function.
### onMessageExternal
```
onMessageExternal(
callback: (
message: any,
sender: chrome.runtime.MessageSender,
sendResponse: (response?: any) => void
) => void
): () => void
```
Fires when a message is sent from another extension. Returns an unsubscribe function.
### onRestartRequired
```
onRestartRequired(callback: (reason: chrome.runtime.OnRestartRequiredReason) => void): () => void
```
Fires when a restart is required (e.g., after an OS or app update). Returns an unsubscribe function.
### onStartup
```
onStartup(callback: () => void): () => void
```
Fires when the browser starts up. Returns an unsubscribe function.
### onSuspend
```
onSuspend(callback: () => void): () => void
```
Fires when the extension is being suspended. Returns an unsubscribe function.
### onSuspendCanceled
```
onSuspendCanceled(callback: () => void): () => void
```
Fires when a previously dispatched `onSuspend` event is canceled. Returns an unsubscribe function.
### onUpdateAvailable
```
onUpdateAvailable(callback: (details: chrome.runtime.UpdateAvailableDetails) => void): () => void
```
Fires when an update is available. Returns an unsubscribe function.
### onUserScriptConnect
```
onUserScriptConnect(callback: (port: chrome.runtime.Port) => void): () => void
```
Fires when a user script establishes a connection. Returns an unsubscribe function.
### onUserScriptMessage
```
onUserScriptMessage(
callback: (
message: any,
sender: chrome.runtime.MessageSender,
sendResponse: (response?: any) => void
) => void
): () => void
```
Fires when a message arrives from a user script. Returns an unsubscribe function.