expo-router
Version:
Expo Router is a file-based router for React Native and web applications.
389 lines • 11.3 kB
JSON
{
"name": "expo-router",
"version": "58.0.30",
"description": "Expo Router is a file-based router for React Native and web applications.",
"keywords": [
"expo",
"react-native"
],
"homepage": "https://docs.expo.dev/routing/introduction/",
"bugs": {
"url": "https://github.com/expo/expo/issues"
},
"license": "MIT",
"author": "650 Industries, Inc.",
"repository": {
"type": "git",
"url": "https://github.com/expo/expo.git",
"directory": "packages/expo-router"
},
"files": [
"link",
"android",
"!android/.gitignore",
"!android/build/**",
"local-maven-repo",
"assets",
"build",
"internal",
"vendor",
"_ctx-html.js",
"_ctx-shared.js",
"_ctx.*",
"_error.js",
"app.plugin.js",
"babel.js",
"entry-classic.js",
"entry.js",
"expo-module.config.json",
"index.d.ts",
"ios",
"node",
"plugin",
"rsc",
"_async-server-import.js"
],
"sideEffects": [
"rsc/entry.js",
"entry-classic.js",
"entry.js"
],
"main": "build/index.js",
"types": "build/index.d.ts",
"exports": {
".": {
"types": {
"expo-source": "./src/index.tsx",
"default": "./build/index.d.ts"
},
"expo-source": "./src/index.tsx",
"default": "./build/index.js"
},
"./internal/*": {
"types": {
"expo-source": "./src/internal/*.ts",
"default": "./build/internal/*.d.ts"
},
"expo-source": "./src/internal/*.ts",
"default": "./build/internal/*.js"
},
"./build/Route": {
"types": {
"expo-source": "./src/Route.tsx",
"default": "./build/Route.d.ts"
},
"expo-source": "./src/Route.tsx",
"default": "./build/Route.js"
},
"./build/matchers": {
"types": {
"expo-source": "./src/matchers.tsx",
"default": "./build/matchers.d.ts"
},
"expo-source": "./src/matchers.tsx",
"default": "./build/matchers.js"
},
"./build/*.js": {
"types": {
"expo-source": "./src/*.ts",
"default": "./build/*.d.ts"
},
"expo-source": "./src/*.ts",
"default": "./build/*.js"
},
"./build/*": {
"types": {
"expo-source": "./src/*.ts",
"default": "./build/*.d.ts"
},
"expo-source": "./src/*.ts",
"default": "./build/*.js"
},
"./drawer": {
"types": {
"expo-source": "./src/layouts/Drawer.tsx",
"default": "./build/layouts/Drawer.d.ts"
},
"expo-source": "./src/layouts/Drawer.tsx",
"default": "./build/layouts/Drawer.js"
},
"./head": {
"types": {
"expo-source": "./src/head/index.ts",
"default": "./build/head/index.d.ts"
},
"expo-source": "./src/head/index.ts",
"default": "./build/head/index.js"
},
"./html": {
"types": {
"expo-source": "./src/html.ts",
"default": "./build/html.d.ts"
},
"expo-source": "./src/html.ts",
"default": "./build/html.js"
},
"./js-stack": {
"types": {
"expo-source": "./src/layouts/JSStack.tsx",
"default": "./build/layouts/JSStack.d.ts"
},
"expo-source": "./src/layouts/JSStack.tsx",
"default": "./build/layouts/JSStack.js"
},
"./js-tabs": {
"types": {
"expo-source": "./src/layouts/Tabs.tsx",
"default": "./build/layouts/Tabs.d.ts"
},
"expo-source": "./src/layouts/Tabs.tsx",
"default": "./build/layouts/Tabs.js"
},
"./js-top-tabs": {
"types": {
"expo-source": "./src/layouts/TopTabs.tsx",
"default": "./build/layouts/TopTabs.d.ts"
},
"expo-source": "./src/layouts/TopTabs.tsx",
"default": "./build/layouts/TopTabs.js"
},
"./native-stack": {
"types": {
"expo-source": "./src/react-navigation/native-stack/index.tsx",
"default": "./build/react-navigation/native-stack/index.d.ts"
},
"expo-source": "./src/react-navigation/native-stack/index.tsx",
"default": "./build/react-navigation/native-stack/index.js"
},
"./react-navigation": {
"types": {
"expo-source": "./src/react-navigation/index.ts",
"default": "./build/react-navigation/index.d.ts"
},
"expo-source": "./src/react-navigation/index.ts",
"default": "./build/react-navigation/index.js"
},
"./server": {
"types": {
"expo-source": "./src/server/index.ts",
"default": "./build/server/index.d.ts"
},
"expo-source": "./src/server/index.ts",
"default": "./build/server/index.js"
},
"./stack": {
"types": {
"expo-source": "./src/stack.ts",
"default": "./build/stack.d.ts"
},
"expo-source": "./src/stack.ts",
"default": "./build/stack.js"
},
"./tabs": {
"types": {
"expo-source": "./src/layouts/Tabs.tsx",
"default": "./build/layouts/Tabs.d.ts"
},
"expo-source": "./src/layouts/Tabs.tsx",
"default": "./build/layouts/Tabs.js"
},
"./testing-library": {
"types": {
"expo-source": "./src/testing-library/index.tsx",
"default": "./build/testing-library/index.d.ts"
},
"expo-source": "./src/testing-library/index.tsx",
"default": "./build/testing-library/index.js"
},
"./ui": {
"types": {
"expo-source": "./src/ui/index.ts",
"default": "./build/ui/index.d.ts"
},
"expo-source": "./src/ui/index.ts",
"default": "./build/ui/index.js"
},
"./native-tabs": {
"types": {
"expo-source": "./src/native-tabs/index.ts",
"default": "./build/native-tabs/index.d.ts"
},
"expo-source": "./src/native-tabs/index.ts",
"default": "./build/native-tabs/index.js"
},
"./unstable-native-tabs": {
"types": {
"expo-source": "./src/unstable-native-tabs.ts",
"default": "./build/unstable-native-tabs.d.ts"
},
"expo-source": "./src/unstable-native-tabs.ts",
"default": "./build/unstable-native-tabs.js"
},
"./unstable-split-view": {
"types": {
"expo-source": "./src/split-view/index.ts",
"default": "./build/split-view/index.d.ts"
},
"expo-source": "./src/split-view/index.ts",
"default": "./build/split-view/index.js"
},
"./rsc": {
"types": {
"expo-source": "./src/rsc/exports.tsx",
"default": "./build/rsc/exports.d.ts"
},
"expo-source": "./src/rsc/exports.tsx",
"default": "./build/rsc/exports.js"
},
"./rsc/internal": {
"types": {
"expo-source": "./src/rsc/router/host.tsx",
"default": "./build/rsc/router/host.d.ts"
},
"expo-source": "./src/rsc/router/host.tsx",
"default": "./build/rsc/router/host.js"
},
"./link": {
"types": "./link/index.d.ts",
"default": "./link/index.js"
},
"./rsc/headers": {
"types": "./rsc/headers.d.ts",
"default": "./rsc/headers.js"
},
"./rsc/headers.js": {
"types": "./rsc/headers.d.ts",
"default": "./rsc/headers.js"
},
"./_ctx-html": "./_ctx-html.js",
"./_ctx-shared": "./_ctx-shared.js",
"./_ctx": {
"types": "./_ctx.d.ts",
"browser": "./_ctx.web.js",
"default": "./_ctx.js"
},
"./_error.js": "./_error.js",
"./_error": "./_error.js",
"./entry-classic.js": "./entry-classic.js",
"./entry-classic": "./entry-classic.js",
"./entry.js": "./entry.js",
"./entry": "./entry.js",
"./rsc/entry": "./rsc/entry.js",
"./rsc/entry.js": "./rsc/entry.js",
"./assets/*": "./assets/*",
"./app.plugin.js": "./app.plugin.js",
"./plugin": "./plugin/build/index.js",
"./package.json": "./package.json"
},
"dependencies": {
"@expo/log-box": "^58.0.15",
"@expo/metro-runtime": "^58.0.17",
"@expo/schema-utils": "^58.0.3",
"@radix-ui/react-slot": "^1.2.0",
"@radix-ui/react-tabs": "^1.1.12",
"@react-native-masked-view/masked-view": "^0.3.2",
"@react-native/normalize-colors": "0.88.1",
"client-only": "^0.0.1",
"expo-glass-effect": "^58.0.5",
"expo-server": "^58.0.6",
"expo-status-bar": "^58.0.4",
"nanoid": "^3.3.18",
"react-fast-compare": "^3.2.2",
"react-is": "^19.1.0",
"react-native-drawer-layout": "^4.2.12",
"react-native-screens": "^4.30.1 || ^5.0.0-alpha.3",
"server-only": "^0.0.1",
"sf-symbols-typescript": "^2.1.0",
"standard-navigation": "^0.0.5"
},
"devDependencies": {
"@expo/ui": "^58.0.27",
"@jest/globals": "^30.0.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.0",
"@testing-library/react-native": "^14.0.1",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^30.0.0",
"@types/node": "^22.14.0",
"@types/react": "~19.3.0",
"@types/react-dom": "^19.1.7",
"@types/react-is": "^19.0.0",
"expect": "^30.0.0",
"expect-type": "^1.3.0",
"expo-symbols": "^58.0.4",
"immer": "^10.1.1",
"react-native-gesture-handler": "~3.2.1",
"react-native-pager-view": "^8.0.2",
"react-native-reanimated": "4.7.0",
"react-native-safe-area-context": "~5.9.1",
"react-native-tab-view": "^4.3.0",
"react-native-web": "~0.21.4",
"react-native-worklets": "0.13.0",
"react-server-dom-webpack": "~19.0.8"
},
"peerDependencies": {
"@expo/log-box": "^58.0.15",
"@expo/metro-runtime": "^58.0.17",
"@expo/ui": "^58.0.27",
"@testing-library/react-native": ">= 14.0.0",
"expo": "*",
"expo-constants": "^58.0.15",
"expo-linking": "^58.0.16",
"expo-symbols": "^58.0.4",
"react": "*",
"react-dom": "*",
"react-native": "*",
"react-native-gesture-handler": "*",
"react-native-reanimated": "*",
"react-native-safe-area-context": ">= 5.4.0",
"react-native-screens": "^4.30.1 || ^5.0.0-alpha.3",
"react-native-web": "*",
"react-native-worklets": "*",
"react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4 || ~19.3.0"
},
"peerDependenciesMeta": {
"@expo/ui": {
"optional": true
},
"expo-symbols": {
"optional": true
},
"@testing-library/react-native": {
"optional": true
},
"react-dom": {
"optional": true
},
"react-native-gesture-handler": {
"optional": true
},
"react-native-reanimated": {
"optional": true
},
"react-native-web": {
"optional": true
},
"react-native-worklets": {
"optional": true
},
"react-server-dom-webpack": {
"optional": true
}
},
"scripts": {
"precompile-android": "et prebuild-android-package-for-publish",
"build": "pnpm run build:lib && pnpm run build:plugin",
"build:lib": "expo-build cjs:src",
"build:plugin": "expo-build --base plugin cjs:src",
"clean": "expo-module clean",
"lint": "oxlint --config oxlint.config.mjs .",
"format": "expo-module format",
"swift:format": "../../scripts/swift-format.sh",
"swift:lint": "../../scripts/swift-format.sh --lint",
"test": "jest",
"expo-module": "expo-module",
"depscheck": "expo-module depscheck",
"typecheck": "tsc -b tsconfig.all.json"
}
}