Skip to content

core

Invoke your custom commands.

This package is also accessible with window.__TAURI__.core when app.withGlobalTauri in tauri.conf.json is set to true.

Defined in: packages/api/src/core.ts:77

Type Parameter Default type
T unknown

new Channel<T>(onmessage?): Channel<T>;

Defined in: packages/api/src/core.ts:87

Parameter Type
onmessage? (response) => void

Channel<T>

Property Type Description Defined in
id number The callback id returned from transformCallback packages/api/src/core.ts:79

get onmessage(): (response) => void;

Defined in: packages/api/src/core.ts:142

(response) => void

set onmessage(handler): void;

Defined in: packages/api/src/core.ts:138

Parameter Type
handler (response) => void

void

__TAURI_TO_IPC_KEY__(): string;

Defined in: packages/api/src/core.ts:146

string

toJSON(): string;

Defined in: packages/api/src/core.ts:150

string


Defined in: packages/api/src/core.ts:156

new PluginListener(
plugin,
event,
channelId): PluginListener;

Defined in: packages/api/src/core.ts:161

Parameter Type
plugin string
event string
channelId number

PluginListener

Property Type Defined in
channelId number packages/api/src/core.ts:159
event string packages/api/src/core.ts:158
plugin string packages/api/src/core.ts:157

unregister(): Promise<void>;

Defined in: packages/api/src/core.ts:167

Promise<void>


Defined in: packages/api/src/core.ts:315

A rust-backed resource stored through tauri::Manager::resources_table API.

The resource lives in the main process and does not exist in the Javascript world, and thus will not be cleaned up automatically except on application exit. If you want to clean it up early, call Resource.close

import { Resource, invoke } from '@tauri-apps/api/core';
export class DatabaseHandle extends Resource {
static async open(path: string): Promise<DatabaseHandle> {
const rid: number = await invoke('open_db', { path });
return new DatabaseHandle(rid);
}
async execute(sql: string): Promise<void> {
await invoke('execute_sql', { rid: this.rid, sql });
}
}

new Resource(rid): Resource;

Defined in: packages/api/src/core.ts:322

Parameter Type
rid number

Resource

get rid(): number;

Defined in: packages/api/src/core.ts:318

number

close(): Promise<void>;

Defined in: packages/api/src/core.ts:330

Destroys and cleans up this resource from memory. You should not call any method on this object anymore and should drop any reference to it.

Promise<void>

Defined in: packages/api/src/core.ts:232

2.0.0

Property Type Defined in
headers HeadersInit packages/api/src/core.ts:233

type InvokeArgs =
| Record<string, unknown>
| number[]
| ArrayBuffer
| Uint8Array;

Defined in: packages/api/src/core.ts:227

Command arguments.

1.0.0


type PermissionState = "granted" | "denied" | "prompt" | "prompt-with-rationale";

Defined in: packages/api/src/core.ts:202

const SERIALIZE_TO_IPC_FN: "__TAURI_TO_IPC_KEY__" = '__TAURI_TO_IPC_KEY__';

Defined in: packages/api/src/core.ts:59

A key to be used to implement a special function on your types that define how your type should be serialized when passing across the IPC.

Given a type in Rust that looks like this

#[derive(serde::Serialize, serde::Deserialize)
enum UserId {
String(String),
Number(u32),
}

UserId::String("id") would be serialized into { String: "id" } and so we need to pass the same structure back to Rust

import { SERIALIZE_TO_IPC_FN } from "@tauri-apps/api/core"
class UserIdString {
id
constructor(id) {
this.id = id
}
[SERIALIZE_TO_IPC_FN]() {
return { String: this.id }
}
}
class UserIdNumber {
id
constructor(id) {
this.id = id
}
[SERIALIZE_TO_IPC_FN]() {
return { Number: this.id }
}
}
type UserId = UserIdString | UserIdNumber

function addPluginListener<T>(
plugin,
event,
cb): Promise<PluginListener>;

Defined in: packages/api/src/core.ts:182

Adds a listener to a plugin event.

Type Parameter
T
Parameter Type
plugin string
event string
cb (payload) => void

Promise<PluginListener>

The listener object to stop listening to the events.

2.0.0


function checkPermissions<T>(plugin): Promise<T>;

Defined in: packages/api/src/core.ts:209

Get permission state for a plugin.

This should be used by plugin authors to wrap their actual implementation.

Type Parameter
T
Parameter Type
plugin string

Promise<T>


function convertFileSrc(filePath, protocol?): string;

Defined in: packages/api/src/core.ts:289

Convert a device file path to an URL that can be loaded by the webview. Note that asset: and http://asset.localhost must be added to app.security.csp in tauri.conf.json. Example CSP value: "csp": "default-src 'self' ipc: http://ipc.localhost; img-src 'self' asset: http://asset.localhost" to use the asset protocol on image sources.

Additionally, "enable" : "true" must be added to app.security.assetProtocol in tauri.conf.json and its access scope must be defined on the scope array on the same assetProtocol object.

Parameter Type Default value Description
filePath string undefined The file path.
protocol string 'asset' The protocol to use. Defaults to asset. You only need to set this when using a custom protocol.

string

the URL that can be used as source on the webview.

import { appDataDir, join } from '@tauri-apps/api/path';
import { convertFileSrc } from '@tauri-apps/api/core';
const appDataDirPath = await appDataDir();
const filePath = await join(appDataDirPath, 'assets/video.mp4');
const assetUrl = convertFileSrc(filePath);
const video = document.getElementById('my-video');
const source = document.createElement('source');
source.type = 'video/mp4';
source.src = assetUrl;
video.appendChild(source);
video.load();

1.0.0


function invoke<T>(
cmd,
args?,
options?): Promise<T>;

Defined in: packages/api/src/core.ts:251

Sends a message to the backend.

Type Parameter
T
Parameter Type Description
cmd string The command name.
args InvokeArgs The optional arguments to pass to the command.
options? InvokeOptions The request options.

Promise<T>

A promise resolving or rejecting to the backend response.

import { invoke } from '@tauri-apps/api/core';
await invoke('login', { user: 'tauri', password: 'poiwe3h4r5ip3yrhtew9ty' });

1.0.0


function isTauri(): boolean;

Defined in: packages/api/src/core.ts:337

boolean


function requestPermissions<T>(plugin): Promise<T>;

Defined in: packages/api/src/core.ts:218

Request permissions.

This should be used by plugin authors to wrap their actual implementation.

Type Parameter
T
Parameter Type
plugin string

Promise<T>


function transformCallback<T>(callback?, once?): number;

Defined in: packages/api/src/core.ts:69

Stores the callback in a known location, and returns an identifier that can be passed to the backend. The backend uses the identifier to eval() the callback.

Type Parameter Default type
T unknown
Parameter Type Default value
callback? (response) => void undefined
once? boolean false

number

An unique identifier associated with the callback function.

1.0.0


© 2026 Tauri Contributors. CC-BY / MIT