Skip to content

chore: update upstream to v9.0.0 - #155

Open
devs-rootstrap wants to merge 17 commits into
masterfrom
update-upstream-v9.0.0
Open

chore: update upstream to v9.0.0#155
devs-rootstrap wants to merge 17 commits into
masterfrom
update-upstream-v9.0.0

Conversation

@devs-rootstrap

Copy link
Copy Markdown
Collaborator

Integrating latest changes from obytes/react-native-template-obytes@v9.0.0

CopilotAI review requested due to automatic review settings July 16, 2026 12:42
@devs-rootstrap
devs-rootstrap requested a review from a team as a code ownerJuly 16, 2026 12:42
@label-pr-severity-rslabel-pr-severity-rsBot added the ai:clean No significant issues label Jul 16, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR syncs the template with upstream obytes/react-native-template-obytes@v9.0.0, introducing the newer “feature-based” structure, updated styling stack (Uniwind + CSS theme file), and updated tooling/docs to match upstream conventions.

Changes:

  • Migrates styling/theming toward Uniwind and a CSS-driven theme (src/global.css), updating related UI hooks/components.
  • Reworks environment configuration toward a unified env.ts + @env TS path mapping.
  • Adds/updates example feature modules (feed/auth/settings/onboarding), along with Jest + Maestro + docs updates to reflect the new structure.

Reviewed changes

Copilot reviewed 133 out of 149 changed files in this pull request and generated 18 comments.

Show a summary per file
FileDescription
uniwind-types.d.tsAdds generated Uniwind type declarations.
tsconfig.jsonUpdates TS path mapping and include list (adds env.ts).
src/lib/utils.tsUpdates utilities; currently includes unresolved merge conflict markers.
src/lib/test-utils.tsxUpdates RTL/Jest helpers; currently includes unresolved merge conflict markers.
src/lib/index.tsxRemoves previous src/lib barrel exports.
src/lib/i18n/utils.tsxRefactors i18n helpers; currently includes unresolved merge conflict markers.
src/lib/i18n/react-i18next.d.tsUpdates react-i18next typing augmentation.
src/lib/i18n/index.tsxRefactors i18n initialization; currently includes unresolved merge conflict markers.
src/lib/hooks/use-selected-theme.tsxMoves theme selection to Uniwind; currently includes unresolved merge conflict markers.
src/lib/hooks/use-is-first-time.tsxRefactors hook export style.
src/lib/hooks/index.tsxAdds lint directive and re-exports hooks.
src/lib/env.jsRemoves old env loader from src/lib.
src/lib/auth/index.tsxRemoves old auth store location (moved to features).
src/lib/api/utils.tsxMoves/shared API utils; currently includes unresolved merge conflict markers.
src/lib/api/provider.tsxUpdates React Query provider module.
src/lib/api/interceptors.tsAdds axios interceptors for auth headers + case conversion.
src/lib/api/index.tsUpdates API exports.
src/lib/api/client.tsxAdds axios client; currently includes unresolved merge conflict markers.
src/lib/api/axios.d.tsAdds axios typing workaround for interceptor handler typing.
src/global.cssIntroduces Tailwind/Uniwind CSS theme configuration under src/.
src/features/style-demo/style-screen.tsxAdds new style demo screen under feature structure.
src/features/style-demo/components/typography-demo.tsxAdds typography demo component; currently includes unresolved merge conflict markers.
src/features/style-demo/components/title.tsxAdds shared demo section title; currently includes unresolved merge conflict markers.
src/features/style-demo/components/inputs-demo.tsxAdds inputs demo; currently includes unresolved merge conflict markers.
src/features/style-demo/components/colors-demo.tsxAdds colors demo; currently includes unresolved merge conflict markers.
src/features/style-demo/components/buttons-demo.tsxAdds buttons demo; currently includes unresolved merge conflict markers.
src/features/settings/settings-screen.tsxAdds new settings screen under feature structure (uses env + i18n keys).
src/features/settings/components/theme-item.tsxAdds theme selection item; currently includes unresolved merge conflict markers.
src/features/settings/components/settings-item.tsxAdds settings row component; currently includes unresolved merge conflict markers.
src/features/settings/components/settings-container.tsxAdds grouped settings container UI.
src/features/settings/components/language-item.tsxAdds language selection item; currently includes unresolved merge conflict markers.
src/features/settings/components/delete-account-item.tsxAdds delete-account item (currently has broken imports that must be fixed).
src/features/onboarding/onboarding-screen.tsxAdds onboarding screen under feature structure.
src/features/feed/post-detail-screen.tsxAdds post detail screen under feature structure.
src/features/feed/feed-screen.tsxAdds feed list screen using FlashList.
src/features/feed/components/post-card.tsxAdds post card component (currently uses non-deterministic image selection).
src/features/feed/api.tsAdds feed API hooks (React Query Kit + axios client).
src/features/feed/add-post-screen.tsxAdds add-post screen (TanStack Form + zod).
src/features/auth/use-auth-store.tsxAdds auth store under feature structure; currently includes unresolved merge conflict markers.
src/features/auth/login-screen.tsxAdds login screen wired to the new auth store.
src/features/auth/components/login-form.tsxAdds login form using TanStack Form + zod.
src/features/auth/components/login-form.test.tsxAdds login form unit tests.
src/components/ui/utils.tsxRefactors UI utils; currently includes unresolved merge conflict markers.
src/components/ui/use-theme-config.tsxSwitches theme config hook to Uniwind; currently includes unresolved merge conflict markers.
src/components/ui/text.tsxRefactors Text component; currently includes unresolved merge conflict markers.
src/components/ui/select.tsxRefactors Select; currently includes unresolved merge conflict markers.
src/components/ui/progress-bar.tsxRefactors ProgressBar; currently includes unresolved merge conflict markers.
src/components/ui/modal.tsxRefactors Modal; currently includes unresolved merge conflict markers.
src/components/ui/modal-keyboard-aware-scroll-view.tsxUpdates keyboard-aware BottomSheet scroll view; currently includes unresolved merge conflict markers.
src/components/ui/input.tsxRefactors Input; currently includes unresolved merge conflict markers.
src/components/ui/index.tsxSwitches Svg interop approach to withUniwind via StyledSvg.
src/components/ui/image.tsxRefactors Image wrapper; currently includes unresolved merge conflict markers.
src/components/ui/icons/*.tsxRefactors icon components (several now rely on className styling).
src/components/ui/form-utils.tsAdds TanStack Form field error extraction helper.
src/components/ui/focus-aware-status-bar.tsxSwitches status bar styling to Uniwind; currently includes unresolved merge conflict markers.
src/components/ui/checkbox.tsxRefactors Checkbox/Radio/Switch; currently includes unresolved merge conflict markers.
src/components/ui/button.tsxRefactors Button; currently includes unresolved merge conflict markers.
src/components/typography.tsxRemoves old non-feature typography demo component.
src/components/title.tsxRemoves old non-feature title component.
src/components/colors.tsxRemoves old non-feature colors demo component.
src/components/buttons.tsxRemoves old non-feature buttons demo component.
src/app/onboarding.tsxRoutes onboarding to feature screen; currently includes unresolved merge conflict markers.
src/app/feed/add-post.tsxRoutes add-post to feature screen; currently includes unresolved merge conflict markers.
src/app/feed/[id].tsxRoutes post detail to feature screen; currently includes unresolved merge conflict markers.
src/app/+html.tsxAdds eslint disable comment for dangerouslySetInnerHTML on web.
src/app/(app)/style.tsxRoutes style tab to feature screen; currently includes unresolved merge conflict markers.
src/app/(app)/settings.tsxRoutes settings tab to feature screen; currently includes unresolved merge conflict markers.
src/app/(app)/index.tsxRoutes feed tab to feature screen; currently includes unresolved merge conflict markers.
src/app/(app)/_layout.tsxUpdates app tabs layout; currently includes unresolved merge conflict markers.
src/app/_layout.tsxUpdates root providers/css/theme/auth hydration; currently includes unresolved merge conflict markers.
src/api/common/client.tsxRemoves old axios client location.
scripts/i18next-syntax-validation.jsUpdates i18n syntax validation; currently includes unresolved merge conflict markers.
README.mdUpdates README content; currently includes unresolved merge conflict markers.
prompts/*Removes several prompt markdown files.
metro.config.jsUpdates Metro config for Uniwind; currently includes unresolved merge conflict markers.
lint-staged.config.jsUpdates lint-staged tasks (notably JSON handling).
jest.config.jsUpdates Jest ignore patterns and setup filename.
jest-setup.tsExpands Jest mocks for Reanimated/MMKV/localization.
global.cssRemoves root CSS entry (moved to src/global.css).
eslint.config.mjsSwitches ESLint configuration style; currently includes unresolved merge conflict markers.
env.tsAdds unified environment schema + runtime env object.
eas.jsonUpdates EAS profiles; currently includes unresolved merge conflict markers.
docs/src/content/docs/**Updates documentation to match upstream structure/tools (Uniwind, TanStack Form, feature-based APIs).
claude.mdAdds project overview/dev workflow guide.
babel.config.jsRemoves NativeWind-specific Babel preset/plugins.
app.config.tsUpdates Expo config + font plugin; currently includes unresolved merge conflict markers.
.vscode/settings.jsonUpdates editor settings (disables Prettier, enables ESLint fixes); currently includes unresolved merge conflict markers.
.maestro/**Updates Maestro flows and string quoting.
.gitignoreIgnores ios/ and android/.
.github/workflows/**Updates workflow YAML formatting and some messages.
.github/actions/**Adds composite EAS build action and tweaks composite action YAML formatting.
.envAdds example env file for the new env strategy.
tests/components/ui/*.test.tsxUpdates UI tests; currently includes unresolved merge conflict markers.
package.jsonUpdates scripts/deps; currently includes unresolved merge conflict markers.
pnpm-lock.yamlUpdates lockfile; currently includes unresolved merge conflict markers.
Comments suppressed due to low confidence (6)

src/lib/utils.ts:16

  • This file still contains unresolved git merge-conflict markers (e.g., <<<<<<< HEAD). TypeScript will not compile until the conflict is resolved and only one createSelectors implementation remains.
    src/lib/test-utils.tsx:15
  • Unresolved merge-conflict markers are present here (e.g., <<<<<<< HEAD). Jest setup/helpers will fail to parse until the conflict is resolved.
    src/lib/api/utils.tsx:45
  • Unresolved merge-conflict markers are present in getUrlParameters/pagination helpers. This file will not compile until the conflict is resolved and only one implementation remains.
    src/features/settings/components/theme-item.tsx:6
  • This file still has unresolved merge-conflict markers at the top (and later in the useMemo for selecting the theme). It will not compile until resolved.
    src/features/settings/components/settings-item.tsx:8
  • Unresolved merge-conflict markers are present, and the file currently contains both Item and SettingsItem variants. This will break compilation until the conflict is resolved.
    src/features/settings/components/language-item.tsx:12
  • Unresolved merge-conflict markers are present at the top and in the language list memoization. This file will not compile until the conflict is resolved.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 1 to +7
import type TranslateOptions from 'i18next';
<<<<<<< HEAD
import { changeLanguage as i18nChangeLanguage, t } from 'i18next';
import memoize from 'lodash.memoize';
import { useCallback } from 'react';
import { NativeModules, Platform } from 'react-native';
=======
Comment on lines +1 to +8
<<<<<<< HEAD
import { getLocales } from 'expo-localization';
import i18n, { dir, use } from 'i18next';
=======
/* eslint-disable react-refresh/only-export-components */
import { getLocales } from 'expo-localization';
import i18n from 'i18next';
>>>>>>> f6309e9
Comment on lines +1 to +8
import axios from 'axios';
<<<<<<< HEAD:src/api/common/client.tsx

import { Env } from '@/lib/env';
=======
import Env from 'env';
>>>>>>> f6309e9:src/lib/api/client.tsx

Comment on lines +7 to +16
<<<<<<< HEAD:src/lib/auth/index.tsx
import { createSelectors } from '../utils';
import { getToken, removeToken, setToken, type TokenType } from './utils';

interface AuthState {
=======
type AuthState = {
>>>>>>> f6309e9:src/features/auth/use-auth-store.tsx
token: TokenType | null;
status: 'idle' | 'signOut' | 'signIn';
@@ -0,0 +1,91 @@
import Env from 'env';
Comment threadeslint.config.mjs
Comment on lines +7 to 23
<<<<<<< HEAD
import pluginJest from 'eslint-plugin-jest';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import reactCompiler from 'eslint-plugin-react-compiler';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import sonarjs from 'eslint-plugin-sonarjs';
import tailwind from 'eslint-plugin-tailwindcss';
=======
import reactCompiler from 'eslint-plugin-react-compiler';
>>>>>>> f6309e9
import testingLibrary from 'eslint-plugin-testing-library';
// eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member, import/namespace
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
import unusedImports from 'eslint-plugin-unused-imports';
import { configs, parser } from 'typescript-eslint';

const __dirname = path.dirname(fileURLToPath(import.meta.url));

<<<<<<< HEAD
export default defineConfig([
globalIgnores([
Comment on lines +16 to 21
<<<<<<< HEAD
if (message.includes('$t(') && !/\$t\(\w+:\w+(?:\.\w+)*\)/g.test(message)) {
=======
if (message.includes('$t(') && !/\$t\(\w+:\w+(?:\.\w+)*\)/.test(message)) {
>>>>>>> f6309e9
throw new SyntaxError(
Comment threadpackage.json
Comment on lines 1 to +8
{
<<<<<<< HEAD
"name": "react-native-template",
"version": "1.9.0",
=======
"name": "obytesapp",
"version": "9.0.0",
>>>>>>> f6309e9
Comment threadapp.config.ts
Comment on lines 47 to 49
orientation: 'portrait',
icon: './assets/icon.png',
userInterfaceStyle: 'automatic',
Comment on lines 3 to +13
import Svg, { Path } from 'react-native-svg';

export const CaretDown = ({ ...props }: SvgProps) => (
<Svg
width={12}
height={13}
fill="none"
{...props}
className="stroke-black dark:stroke-white"
>
<Path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={1.5}
d="M9.75 4.744 6 8.494l-3.75-3.75"
/>
</Svg>
);
export function CaretDown({ ...props }: SvgProps) {
return (
<Svg
width={12}
height={13}
fill="none"
{...props}
className="stroke-black dark:stroke-white"
>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:cleanNo significant issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@devs-rootstrap@yjose