{"id":46281,"library":"rozenite-sqlite","title":"SQLighter - SQLite explorer for React Native devtools","description":"SQLighter is a Rozenite devtools plugin that adds a live SQLite explorer panel to React Native apps. Version 0.0.12 is the latest, with weekly releases. It allows browsing databases, inspecting tables, running SQL queries, and viewing row details. Key differentiator: library-agnostic - works with expo-sqlite, op-sqlite, react-native-quick-sqlite, or custom native modules. Ships TypeScript types, requires React Native and Rozenite devtools setup. Unlike alternatives, it integrates directly into the Rozenite debugging workflow, providing real-time database inspection without leaving the development environment.","status":"active","version":"0.0.12","language":"javascript","source_language":"en","source_url":"https://github.com/groot007/rozenite-sqlite-plugin","tags":["javascript","typescript"],"install":[{"cmd":"npm install rozenite-sqlite","lang":"bash","label":"npm"},{"cmd":"yarn add rozenite-sqlite","lang":"bash","label":"yarn"},{"cmd":"pnpm add rozenite-sqlite","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency - required for React hooks and components","package":"react","optional":false},{"reason":"Peer dependency - required for React Native environment","package":"react-native","optional":false}],"imports":[{"note":"Default export not available. Must import from 'rozenite-sqlite/react-native' subpath. Common mistake: importing from main package or using default import.","wrong":"import useRozeniteSQLite from 'rozenite-sqlite'","symbol":"useRozeniteSQLite","correct":"import { useRozeniteSQLite } from 'rozenite-sqlite/react-native'"},{"note":"Type-only import for TypeScript. Use `import type` to avoid runtime inclusion.","symbol":"type PlugParams","correct":"import type { PlugParams } from 'rozenite-sqlite/react-native'"}],"quickstart":{"code":"import * as SQLite from 'expo-sqlite';\nimport { useRozeniteSQLite } from 'rozenite-sqlite/react-native';\n\nexport default function App() {\n  useRozeniteSQLite({\n    databases: ['app.db', 'cache.db'],\n    sqlExecutor: async (dbName, query) => {\n      const db = SQLite.openDatabaseSync(dbName);\n      return db.getAllSync(query) as Record<string, unknown>[];\n    },\n  });\n\n  return null;\n}","lang":"typescript","description":"Basic setup with expo-sqlite using openDatabaseSync. Registers two databases with the SQLExecutor callback."},"warnings":[{"fix":"Ensure the component using useRozeniteSQLite is a descendant of Rozenite's DevtoolsProvider (or similar). Refer to Rozenite documentation for setup.","message":"useRozeniteSQLite must be called inside a component rendered under the Rozenite devtools context. If called outside the Rozenite provider, the panel won't receive data.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Ensure your SQLite library's query method returns an array where each element is a plain object with string keys. Use type assertion if needed.","message":"sqlExecutor callback must return a flat array of row objects (Record<string, unknown>[]). Nesting or returning null/undefined will cause the devtools panel to display empty or crash.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use the same database name strings consistently. If using expo-sqlite's openDatabaseSync, the name parameter includes the .db extension.","message":"Database names in the 'databases' array must match exactly the names used in the sqlExecutor callback (including file extension, e.g., 'app.db' not 'app'). Inconsistency will cause silent failures with no panel data.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Ensure Rozenite devtools is properly initialized and connected. Check Rozenite documentation for troubleshooting.","message":"The hook communicates over a bridge. If Rozenite devtools is not active, the hook will still run but the panel won't show. No error is thrown.","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"search_vec":"'0.0.12':26 'add':15 'agnost':50 'allow':34 'altern':79 'app':24 'brows':35 'custom':65 'databas':36,92 'debug':86 'detail':45 'develop':97 'devtool':7,12,76 'differenti':47 'direct':82 'environ':98 'explor':3,19 'expo':54 'expo-sqlit':53 'inspect':37,93 'integr':81 'javascript':99 'key':46 'latest':29 'leav':95 'librari':49 'library-agnost':48 'live':17 'modul':67 'nativ':6,23,61,66,73 'op':57 'op-sqlit':56 'panel':20 'plugin':13 'provid':88 'queri':41 'quick':62 'react':5,22,60,72 'react-native-quick-sqlit':59 'real':90 'real-tim':89 'releas':32 'requir':71 'row':44 'rozenit':11,75,85 'run':39 'setup':77 'ship':68 'sql':40 'sqlighter':1,8 'sqlite':2,18,55,58,63 'tabl':38 'time':91 'type':70 'typescript':69,100 'unlik':78 'version':25 'view':43 'week':31 'without':94 'work':51 'workflow':87","created_at":"2026-06-07T12:59:09.771195+00:00","updated_at":"2026-06-07T12:59:09.771195+00:00","problems":[{"fix":"Ensure the database is opened and stored in a map accessible to sqlExecutor. Verify the database name string exactly matches (including .db extension).","cause":"Database name mismatch between 'databases' array and sqlExecutor lookup logic, or database not opened before query.","error":"Error: Database \"app.db\" not found"},{"fix":"Check that the database instance is correctly obtained in sqlExecutor. If using expo-sqlite, ensure openDatabaseSync returns a valid database object.","cause":"sqlExecutor gives a null/undefined database object, or the SQLite library method is not correctly bound.","error":"TypeError: Cannot read properties of undefined (reading 'getAllSync')"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/groot007/rozenite-sqlite-plugin#readme","github":"https://github.com/groot007/rozenite-sqlite-plugin","docs":null,"changelog":null,"pypi":null,"npm":"rozenite-sqlite","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}