Skip to content

Conversation

@JasonVMo
Copy link
Contributor

Platforms Impacted

  • all

Description of changes

These changes help prepare FURN to go to RN 0.81, the next version that office will use.

Runtime Changes

Moved from using the classic runtime to the new react-jsx runtime. The classic runtime is no longer supported in react 19+ which will be a requirement for 0.81. The implementation was already in place but switching over required the following changes:

  • switched tsconfig.json files to use "jsx": "react-jsx" which causes the default behavior to be react's jsx-runtime.
  • removed the old @jsxRuntime classic and @jsx withSlots calls, replacing them with @jsxImportSource @fluentui-react-native/framework-base
  • made all the babel configs use the automatic runtime and removed any lingering references to the classic runtime.
  • added a root level jsx-runtime.js file in framework-base which allows the files to be brought in even if export maps aren't supported.
  • changed the exports to refer to the js files and removed the direct typescript references via the "react-native" field in package.json. This ensures that we control the JS produced and that consumers with older babel-configs don't get burned.

Build Changes

The main build change is to add a lint-package command for each package which allows us to reconfigure package.json files from the root without needing to make a ton of manual changes. The summary of build changes are:

  • added lint-package command to each package. Run it with --fix to automatically update things.
  • moved depcheck and align-deps to be run by the lint package command
  • added a lint-package and lint-package-fix command to the root to do the runs.
  • used env injection to allow configuring fix runs from the root more easily.
  • switched builds to use tsgo (the typescript native preview) now that we are on TS 5.9+
  • added dedicated build-cjs and build-esm commands to allow the two passes to run faster, commands are added/updated by lint-package
  • added code in lint-package to enforce canonical order and alphabetical ordering of certain sub-collections.
  • reworked the align-deps profiles and usage a bit, also made them come from a common core.
  • extended the yarn catalog usage and added enforcement to lint-package script
  • updated some tool versions and lint rules and fixed the new errors brought in by the tool updates.

There's probably more I'm forgetting. My apologies for the sheer number of changes but this should minimize the churn in the future.

Verification

Pipeline runs and tests

@JasonVMo JasonVMo requested a review from a team as a code owner January 21, 2026 07:23
@tido64
Copy link
Member

tido64 commented Jan 21, 2026

Running align-deps per package is significantly slower than once at the root level. Can we make it a prebuild step or similar?

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