Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
KyselyProvider
✓ import { KyselyProvider } from 'kysely-expo'
✗ import KyselyProvider from 'kysely-expo'
Named export; default export does not exist.
useKysely
✓ import { useKysely } from 'kysely-expo'
✗ import { useKysely } from 'kysely'
Hook provided by kysely-expo, not by Kysely itself.
SQLiteType
✓ import { SQLiteType } from 'kysely-expo'
✗ import { SQLiteType } from 'expo-sqlite'
Enum defined in kysely-expo for type converter configuration.
ColumnNameBasedConverter
✓ import { ColumnNameBasedConverter } from 'kysely-expo'
✗ import { ColumnNameBasedConverter } from 'kysely'
Type for column-name-based conversion rules.
Complete example of setting up KyselyProvider with Expo SQLite, defining a database schema, and using useKysely hook inside a component.
import { KyselyProvider, useKysely } from 'kysely-expo';
import { Generated, type Kysely } from 'kysely';
interface LogTable {
id: Generated<number>;
message: string;
created_at: Date;
}
interface Database {
logs: LogTable;
}
function InnerComponent() {
const db = useKysely<Database>();
const addLog = async () => {
await db.insertInto('logs').values({ message: 'Hello', created_at: new Date() }).execute();
};
return <button onClick={addLog}>Add Log</button>;
}
export default function App() {
return (
<KyselyProvider<Database>
database="logs.db"
autoAffinityConversion
debug
onInit={async (db: Kysely<Database>) => {
await db.schema.createTable('logs')
.addColumn('id', 'integer', col => col.autoIncrement().primaryKey())
.addColumn('message', 'text')
.addColumn('created_at', 'text')
.execute();
}}
>
<InnerComponent />
</KyselyProvider>
);
}
Errors
Common errors & fixes
Cannot find module 'kysely-expo'
Package not installed or peer dependencies not met.
fixRun `npm install kysely-expo expo-sqlite kysely react`
Type 'false' is not assignable to type 'true'
Using both autoAffinityConversion and columnNameBasedConversion simultaneously.
fixSet only one converter: either autoAffinityConversion: true or columnNameBasedConversion: [...], not both.
Invalid type 'string' for column 'id'. STRICT mode only allows: INT, INTEGER, REAL, TEXT, BLOB, ANY
Attempting to use a type alias like 'string' instead of 'text' in schema definition with STRICT mode enabled.
fixUse SQLite type keywords: 'text', 'integer', 'real', 'blob', 'any' instead of TypeScript type names.
Audit
Dependencies
expo-sqliterequiredProvides the underlying SQLite database API for Expo
kyselyrequiredCore query builder library; this package provides a dialect for it
reactrequiredRequired for KyselyProvider component used in React/Expo apps