这是indexloc提供的服务,不要输入任何密码
Skip to content

expo53: configuration, dependency, linting, and maestro fixes #2948

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 14, 2025

Conversation

markrickert
Copy link
Member

Description

This makes a few changes to @fpena's expo 53 branch in #2938:

  1. Updates to the tsconfig. All these changes bring our config in line with the expo sdk 53 config.
  • moduleResolution changed from 'node to bundler
  • module changed from es2015 to preserve
  • Added "customConditions": ["react-native"] to the compiler options.
  1. These updates to the tsconfig revealed some issues that weren't caught by the yarn compile command previously. Mostly just accidentally substituting ViewStyle for TextStyle in the type declarations.
  2. Fixes the maestro tests so the same flow works for all permutations of expo/non-expo + newArch/oldArch. ... simplifies the number of files/scripts needed, and reduces the amount of logic needed to bypass both the dev server picker screen and the dev menu bottom sheet from expo that shows up in expo dev builds in the oldArch.
  3. updates some packages to the correct versions that npx expo install --fix told me to update including the @types/react and expo-router deps.
  4. During the course of updating packages, i moved the eslint config for the main ignite package to a javascript file and made it inherit from the boilerplate's config so that our linter is consistent throughout.

Checklist

  • README.md and other relevant documentation has been updated with my changes
  • I have manually tested this, including by generating a new app locally (see docs).

Making these changes showed a bunch of linting errors and typescript compiler issues, some of which were valid.
Expo 53 - new architecture doesn’t show dev server picker
Expo 53 - no new architecture shows dev server

this fixes the issue by conditionally waiting to see if that text is on the screen and if so, tap through the expo dev client screens
@markrickert markrickert requested review from fpena and Copilot May 13, 2025 23:19
Copy link

@Copilot Copilot AI left a comment

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 aims to align the project with Expo SDK 53 changes by updating TypeScript configuration, correcting type mismatches, and standardizing dependency versions and linting configurations. Key changes include:

  • Updates to tsconfig settings to match Expo SDK 53 (moduleResolution, module, customConditions).
  • Fixes to type declarations and imports (e.g. swapping ViewStyle/TextStyle types, type assertions updates).
  • Maestro test flow simplifications and dependency updates in package.json and ESLint configurations.

Reviewed Changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/tools/snapshots/markup.test.ts.snap Snapshot string formatting updates removing unnecessary escapes.
src/commands/new.ts Renamed utility function from useDefault to getDefault for clarity.
src/commands/generate/splash-screen.ts Added an ESLint disable comment for destructured variable const preference.
package.json & boilerplate/* Updated dependency versions and TS config to reflect Expo SDK 53.
boilerplate/app/screens/DemoShowroomScreen/DemoShowroomScreen.tsx Improved type assertions and cleanup in asynchronous logic.
boilerplate/app/devtools/ReactotronConfig.ts Added a temporary @ts-ignore with clarification that it’s for debugging.
boilerplate/app/components/Toggle/* Adjusted style type definitions to unify component style expectations.
boilerplate/.maestro/* Simplified Maestro flows and removed outdated subflows.
.eslintrc.js & .eslintignore Inherited ESLint config from boilerplate and ignored snapshots/files.

@@ -180,7 +180,7 @@ module.exports = {

const yname = boolFlag(options.y) || boolFlag(options.yes)
const noTimeout = options.noTimeout ?? false
const useDefault = (option: unknown) => yname && option === undefined
Copy link
Member Author

Choose a reason for hiding this comment

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

The new linter config was complaining about "use" being a react-only keyword so i changed it to "get"

@@ -166,7 +168,11 @@ export const DemoShowroomScreen: FC<DemoTabScreenProps<"DemoShowroom">> =
}

useEffect(() => {
return () => timeout.current && clearTimeout(timeout.current)
Copy link
Member Author

Choose a reason for hiding this comment

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

the linter was complaining about this possibly returning null 🤦

Copy link
Contributor

@fpena fpena left a comment

Choose a reason for hiding this comment

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

Looks good! Thanks for the changes.

@markrickert markrickert merged commit 2e11e0f into feat/expo-sdk-53 May 14, 2025
1 check passed
@markrickert markrickert deleted the feat/expo-sdk-53-mrickert branch May 14, 2025 14:24
@frankcalise
Copy link
Contributor

frankcalise commented May 14, 2025

@markrickert in the future let's make sure we merge branches like this with feat/fix for semver which would have gone through the auto release process

the typical commit would look like

feat(boilerplate): upgraded to Expo SDK 53 (by @markrickert and @fpena)

see https://docs.infinite.red/ignite-cli/contributing/Releasing-Ignite/#a-note-about-semver for more info

markrickert added a commit that referenced this pull request May 21, 2025
* chore(typescript): update moduleResolution and module properties

Making these changes showed a bunch of linting errors and typescript compiler issues, some of which were valid.

* fix(tests): allow metro to work regardless of expo-dev-client

Expo 53 - new architecture doesn’t show dev server picker
Expo 53 - no new architecture shows dev server

this fixes the issue by conditionally waiting to see if that text is on the screen and if so, tap through the expo dev client screens

* chore(deps): update dependencies

* chore(linter): move the eslint config to a js file and inherit from the boilerplate
markrickert added a commit that referenced this pull request May 22, 2025
* chore(typescript): update moduleResolution and module properties

Making these changes showed a bunch of linting errors and typescript compiler issues, some of which were valid.

* fix(tests): allow metro to work regardless of expo-dev-client

Expo 53 - new architecture doesn’t show dev server picker
Expo 53 - no new architecture shows dev server

this fixes the issue by conditionally waiting to see if that text is on the screen and if so, tap through the expo dev client screens

* chore(deps): update dependencies

* chore(linter): move the eslint config to a js file and inherit from the boilerplate
markrickert added a commit that referenced this pull request May 28, 2025
* chore(typescript): update moduleResolution and module properties

Making these changes showed a bunch of linting errors and typescript compiler issues, some of which were valid.

* fix(tests): allow metro to work regardless of expo-dev-client

Expo 53 - new architecture doesn’t show dev server picker
Expo 53 - no new architecture shows dev server

this fixes the issue by conditionally waiting to see if that text is on the screen and if so, tap through the expo dev client screens

* chore(deps): update dependencies

* chore(linter): move the eslint config to a js file and inherit from the boilerplate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants