• Экраны
  • Доки
1Online
ПодпискаКаталог

Начало

С чего начать
Установка
Использование

Справочник

Справочник CLI
Сервер MCP
Навыки агента
Анимированные иконки
Если что-то сломалось
Доступность

Проект

О проекте
Журнал изменений
Как участвовать
Лицензия

Установка

Нативная основа, на которой построены компоненты Astra.

Пакета Astra для установки не существует. Здесь вы настраиваете нативные зависимости, на которых построены компоненты, и CLI, который их копирует.

В Expo Go пойдут не все компоненты

Skia и ещё несколько нативных модулей требуют сборки для разработки. Компоненты, построенные только на Reanimated и Gesture Handler, в Expo Go работают как надо.


1. Поставьте общие зависимости

npx expo install react-native-reanimated react-native-worklets react-native-gesture-handler react-native-svg
npx expo install @shopify/react-native-skia expo-haptics expo-blur expo-symbols @expo/vector-icons
ПакетДля чего
react-native-reanimatedлюбой анимированный компонент — не опционален
react-native-workletsедет отдельно от Reanimated 4; нужен 76 компонентам
react-native-gesture-handlerперетаскивание, свайп и нажатие
react-native-svgвекторные формы, иконки и анимация по путям
@shopify/react-native-skiaшейдеры, градиенты и эффекты, рисуемые на канве
expo-hapticsтактильный отклик при нажатии
expo-blurповерхности матового стекла
expo-symbols / @expo/vector-iconsнаборы иконок

На странице каждого компонента перечислено всё, что ему нужно сверх этого. Ставьте только то, чем пользуетесь — ничто из этого не обязательно заранее.


2. Добавьте Babel-плагин Reanimated

Он должен стоять последним в массиве plugins:

babel.config.js
module.exports = {
  presets: ["babel-preset-expo"],
  plugins: ["react-native-reanimated/plugin"],
};

Затем сбросьте кэш:

npx expo start --clear

3. Оберните корень в GestureHandlerRootView

Всему, что работает на жестах, это нужно выше по дереву:

app/_layout.tsx
import { GestureHandlerRootView } from "react-native-gesture-handler";

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      {children}
    </GestureHandlerRootView>
  );
}

4. Инициализируйте CLI

npx astra-rn init
pnpm dlx astra-rn init
yarn dlx astra-rn init
bunx --bun astra-rn init

Он спросит, куда класть компоненты, как их раскладывать и что делать с npm-пакетами, которые они импортируют, а потом напишет component.config.json. В файл попадёт только то, что отличается от умолчаний — с ответами по умолчанию это папка и найденный менеджер пакетов:

component.config.json
{
  "$schema": "#",
  "outDir": "src/shared/components",
  "packageManager": "npm"
}

Алиас должен совпадать с сопоставлением путей в вашем tsconfig.json — init читает его и предлагает тот, что уже работает. Все ключи перечислены в справочнике CLI.

Этот шаг можно пропустить целиком, если вам удобнее копировать исходник со страниц компонентов руками.


5. Добавьте компонент

npx astra-rn add accordion
pnpm dlx astra-rn add accordion
yarn dlx astra-rn add accordion
bunx --bun astra-rn add accordion

Всё, что он импортирует, приезжает вместе с ним, а любой npm-пакет, которого нет в проекте, будет предложен к установке. После любого нативного изменения пересоберите нативную цель — npx expo run:ios — а не перезапускайте Metro.

Дальше: Использование или справочник CLI со всеми флагами.

На этой странице

1. Поставьте общие зависимости2. Добавьте Babel-плагин Reanimated3. Оберните корень в GestureHandlerRootView4. Инициализируйте CLI5. Добавьте компонент

Сделано в Astra