Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0cdf350
update phasedComponent pattern and switch direct stagedComponent call…
JasonVMo Jan 28, 2026
d9aa22e
Change files
JasonVMo Jan 28, 2026
f6b1928
fix use-slot to use new rendering patterns
JasonVMo Jan 29, 2026
b5a4900
Change files
JasonVMo Jan 29, 2026
b0eaea7
tighten up typing for framework, fixing the resulting errors
JasonVMo Jan 29, 2026
692d994
Change files
JasonVMo Jan 29, 2026
56ff4d1
Merge branch 'main' of https://github.com/microsoft/fluentui-react-na…
JasonVMo Jan 29, 2026
2821ad8
fix break from merge
JasonVMo Jan 29, 2026
1deda63
add prop extraction helper and remove hack from switch
JasonVMo Jan 29, 2026
d061b13
fix package linting error
JasonVMo Jan 29, 2026
6da801f
fix useSlot implementation
JasonVMo Jan 29, 2026
ce3ff71
add win32 test app for 0.81
JasonVMo Jan 29, 2026
ff7e681
add peer declarations for 0.78 and 0.81
JasonVMo Jan 29, 2026
f375f18
Change files
JasonVMo Jan 29, 2026
d39dfb2
fix bundling rn-win32 0.81 against furn
JasonVMo Jan 30, 2026
eb71e27
Change files
JasonVMo Jan 30, 2026
3974ddc
fix overflow rendering
JasonVMo Feb 2, 2026
59f9761
ensure old codepaths are consistent in behavior
JasonVMo Feb 2, 2026
98ebc33
centralize .gitattributes
JasonVMo Feb 2, 2026
9ae053e
update framework-base documentation and fix logic bug
JasonVMo Feb 2, 2026
e1508e2
fix dead links in markdown files
JasonVMo Feb 2, 2026
e043ddd
Change files
JasonVMo Feb 2, 2026
5fbb3d5
Merge branch 'user/jasonvmo/add-81-peer-deps' of https://github.com/m…
JasonVMo Feb 2, 2026
382cb62
upgrade to RN 81, React 19, and fix builds
JasonVMo Feb 4, 2026
0060270
Merge branch 'main' of https://github.com/microsoft/fluentui-react-na…
JasonVMo Feb 4, 2026
9d52733
fix additional package consistency issues
JasonVMo Feb 4, 2026
be8e343
fix tests for react 19
JasonVMo Feb 4, 2026
6f27ba0
Change files
JasonVMo Feb 4, 2026
23d41e0
prettier fixes and pod install updates
JasonVMo Feb 4, 2026
d6f04a5
Change files
JasonVMo Feb 4, 2026
fd76ad6
fix naming mismatch on macos callout native component
JasonVMo Feb 4, 2026
4bf5ee8
add missing snapshot updates
JasonVMo Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions apps/E2E/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@
"@fluentui-react-native/focus-zone": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native/metro-babel-transformer": "^0.74.0",
"@office-iss/react-native-win32": "^0.81.0",
"@react-native/metro-babel-transformer": "^0.81.0",
"@rnx-kit/metro-config": "catalog:",
"@types/jasmine": "catalog:",
"@types/node": "catalog:",
"@types/react": "~18.2.0",
"@types/react": "~19.1.0",
"@wdio/appium-service": "catalog:",
"@wdio/cli": "catalog:",
"@wdio/globals": "catalog:",
Expand All @@ -72,10 +72,10 @@
"cross-env": "catalog:",
"expect-webdriverio": "catalog:",
"metro-config": "^0.80.3",
"react": "18.2.0",
"react-native": "^0.74.0",
"react-native-macos": "^0.74.0",
"react-native-windows": "^0.74.0",
"react": "19.1.0",
"react-native": "^0.81.0",
"react-native-macos": "^0.81.0",
"react-native-windows": "^0.81.0",
"rimraf": "catalog:",
"ts-node": "^10.7.0",
"webdriverio": "catalog:"
Expand Down
4 changes: 2 additions & 2 deletions apps/fluent-tester/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1290,7 +1290,7 @@ PODS:
- React-logger (= 0.74.7)
- React-perflogger (= 0.74.7)
- React-utils (= 0.74.7)
- ReactNativeHost (0.5.15):
- ReactNativeHost (0.5.16):
- DoubleConversion
- glog
- RCT-Folly (= 2024.01.01.00)
Expand Down Expand Up @@ -1569,7 +1569,7 @@ SPEC CHECKSUMS:
React-runtimescheduler: 7ae98c85d480214a491c40799501c94c7a188d73
React-utils: 269c55ca0a0a9d985fc8ab90898f7c1124784d73
ReactCommon: 345cad6a151c60c5d80bcc2005457fac2e079b82
ReactNativeHost: 91d43cc8ebaf158a27f8ae406a7e8b43ec823faa
ReactNativeHost: 4296c5d13fdcafb9cb53f2f3b6ab5e427ab9a6dd
ReactTestApp-DevSupport: 52ac76197e5accf579592aa3b9aa07fd0766f211
ReactTestApp-Resources: 41fbfc3cae89be49adf9cfa9d3a9954456c65ab1
RNSVG: d39a9be65c439dfb061955f7615f1f71a51ecede
Expand Down
4 changes: 2 additions & 2 deletions apps/fluent-tester/macos/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1223,7 +1223,7 @@ PODS:
- React-logger (= 0.74.30)
- React-perflogger (= 0.74.30)
- React-utils (= 0.74.30)
- ReactNativeHost (0.5.15):
- ReactNativeHost (0.5.16):
- DoubleConversion
- glog
- RCT-Folly (= 2024.01.01.00)
Expand Down Expand Up @@ -1516,7 +1516,7 @@ SPEC CHECKSUMS:
React-runtimescheduler: abda2da3b75a17017ba04f034deb9cf0eef16734
React-utils: ac5abf4d2d95d579be3b63fa44b46af2ca38544b
ReactCommon: 1eab570cb54edc279d28066475dbcf7e5b44c29e
ReactNativeHost: 91d43cc8ebaf158a27f8ae406a7e8b43ec823faa
ReactNativeHost: 4296c5d13fdcafb9cb53f2f3b6ab5e427ab9a6dd
ReactTestApp-DevSupport: 52ac76197e5accf579592aa3b9aa07fd0766f211
ReactTestApp-Resources: 3c8739a3e3ed26f67f8ab68f13102fb9591301c8
RNSVG: d39a9be65c439dfb061955f7615f1f71a51ecede
Expand Down
27 changes: 14 additions & 13 deletions apps/tester-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"preset": "react-native"
},
"dependencies": {
"@fluentui-react-native/adapters": "workspace:*",
"@fluentui-react-native/android-theme": "workspace:*",
"@fluentui-react-native/apple-theme": "workspace:*",
"@fluentui-react-native/avatar": "workspace:*",
Expand Down Expand Up @@ -98,20 +99,20 @@
"@fluentui-react-native/eslint-config-rules": "workspace:*",
"@fluentui-react-native/kit-config": "workspace:*",
"@fluentui-react-native/scripts": "workspace:*",
"@office-iss/react-native-win32": "^0.74.0",
"@react-native-community/cli": "^13.6.4",
"@react-native-community/cli-platform-android": "^13.6.4",
"@react-native-community/cli-platform-ios": "^13.6.4",
"@office-iss/react-native-win32": "^0.81.0",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
"@react-native-community/cli-platform-ios": "^20.0.0",
"@react-native-windows/cli": "^0.74.0",
"@react-native/babel-preset": "^0.74.0",
"@react-native/metro-babel-transformer": "^0.74.0",
"@react-native/metro-config": "^0.74.0",
"@react-native/metro-config": "^0.81.0",
"@rnx-kit/cli": "catalog:",
"@rnx-kit/metro-config": "catalog:",
"@rnx-kit/metro-resolver-symlinks": "catalog:",
"@types/jasmine": "catalog:",
"@types/react": "~18.2.0",
"@types/react-test-renderer": "^18.2.0",
"@types/react": "~19.1.0",
"@types/react-test-renderer": "^19.1.0",
"@wdio/cli": "catalog:",
"@wdio/globals": "catalog:",
"@wdio/jasmine-framework": "catalog:",
Expand All @@ -120,14 +121,14 @@
"expect-webdriverio": "catalog:",
"flow-bin": "^0.113.0",
"metro-config": "^0.80.3",
"react": "18.2.0",
"react-native": "^0.74.0",
"react-native-macos": "^0.74.0",
"react-native-svg": ">=15.4.0 <15.13.0",
"react": "19.1.0",
"react-native": "^0.81.0",
"react-native-macos": "^0.81.0",
"react-native-svg": "^15.12.1",
"react-native-svg-transformer": "^1.0.0",
"react-native-test-app": "^3.9.2",
"react-native-windows": "^0.74.0",
"react-test-renderer": "18.2.0",
"react-native-windows": "^0.81.0",
"react-test-renderer": "19.1.0",
"webdriverio": "catalog:"
},
"peerDependencies": {
Expand Down
13 changes: 10 additions & 3 deletions apps/tester-core/src/FluentTester.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,16 @@ export const FluentTester: React.FunctionComponent<FluentTesterProps> = (props:
const theme = useTheme();
const themedStyles = getThemedStyles(theme);

const removeBackHandler = React.useMemo(() => {
return {
remove: undefined,
} as { remove?: () => void };
}, []);

const onBackPress = React.useCallback(() => {
setOnTestListView(true);
if (Platform.OS === 'android') {
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
if (Platform.OS === 'android' && removeBackHandler.remove) {
removeBackHandler.remove();
}
return true;
}, []);
Expand Down Expand Up @@ -187,7 +193,8 @@ export const FluentTester: React.FunctionComponent<FluentTesterProps> = (props:
setOnTestListView(false);
setSelectedTestIndex(index);
if (Platform.OS === 'android') {
BackHandler.addEventListener('hardwareBackPress', onBackPress);
// add the listener and remember the remove function so it can be cleaned up later
removeBackHandler.remove = BackHandler.addEventListener('hardwareBackPress', onBackPress).remove;
}
}}
style={mobileStyles.testListItem}
Expand Down
16 changes: 4 additions & 12 deletions apps/tester-core/src/TestComponents/Button/E2EButtonTest.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as React from 'react';
import { View } from 'react-native';
import type { NativeKeyEvent, HandledKeyEvent } from '@fluentui-react-native/adapters';

import { ButtonV1 as Button, Text } from '@fluentui/react-native';
import {
Expand All @@ -15,26 +16,17 @@ import {
BUTTON_FOCUSABLE_TEST_COMPONENT_LABEL,
} from '@fluentui-react-native/e2e-testing';
import { Stack } from '@fluentui-react-native/stack';
import type { IKeyboardEvent } from '@office-iss/react-native-win32';

import { stackStyle } from '../Common/styles';
import { testProps } from '../Common/TestProps';

function keyEvent(key: string) {
function keyEvent(key: string): HandledKeyEvent {
return {
key,
capsLockKey: false,
shiftKey: false,
ctrlKey: false,
altKey: false,
metaKey: false,
numericPadKey: false,
helpKey: false,
functionKey: false,
ArrowLeft: false,
ArrowRight: false,
ArrowUp: false,
ArrowDown: false,
};
}

Expand All @@ -49,14 +41,14 @@ export const E2EButtonTest: React.FunctionComponent = () => {

const keyPressProps = {
keyDownEvents: [keyEvent('a')],
onKeyDown: (args: IKeyboardEvent) => {
onKeyDown: (args: NativeKeyEvent) => {
if (args.nativeEvent.key === 'a') {
setKeyDetected('a (down)');
args.stopPropagation();
}
},
keyUpEvents: [keyEvent('b')],
onKeyUp: (args: IKeyboardEvent) => {
onKeyUp: (args: NativeKeyEvent) => {
if (args.nativeEvent.key === 'b') {
setKeyDetected('b (up)');
args.stopPropagation();
Expand Down
4 changes: 2 additions & 2 deletions apps/tester-core/src/TestComponents/Common/Slider.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import type { ViewProps, StyleProp, ViewStyle } from 'react-native';
import type { ViewProps, ViewStyle } from 'react-native';
import { StyleSheet, Text, View } from 'react-native';

import { Separator, Pressable } from '@fluentui/react-native';
Expand Down Expand Up @@ -49,7 +49,7 @@ const styles = StyleSheet.create({

const Track = Separator.customize({ separatorWidth: 4 });

function onThumbRenderStyle(state: IPressableState, thumbLocation: number): StyleProp<ViewStyle> {
function onThumbRenderStyle(state: IPressableState, thumbLocation: number): ViewStyle {
return {
...styles.thumb,
borderColor: state.pressed ? 'black' : state.hovered ? 'red' : '#7A7574',
Expand Down
6 changes: 3 additions & 3 deletions apps/tester-core/src/TestComponents/Menu/MenuTest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,9 @@ const MenuNofM: React.FunctionComponent = () => {
<MenuList>
<MenuItem>A plain MenuItem</MenuItem>
<MenuItem disabled>A disabled MenuItem</MenuItem>
<MenuItem accessibilityPositionInSet={9}>A plain MenuItem</MenuItem>
<MenuItem accessibilityPosInSet={9}>A plain MenuItem</MenuItem>
<MenuDivider />
{Platform.OS !== 'android' && <Submenu accessibilityPositionInSet={16} accessibilitySetSize={7} />}
{Platform.OS !== 'android' && <Submenu accessibilityPosInSet={16} accessibilitySetSize={7} />}
<MenuItem disabled accessibilitySetSize={2}>
A disabled MenuItem
</MenuItem>
Expand Down Expand Up @@ -352,7 +352,7 @@ const MenuWithCustomMenuTrigger: React.FunctionComponent<MenuProps> = (props: Me
<MenuList>
<MenuItem>A plain MenuItem</MenuItem>
<MenuItem disabled>A disabled MenuItem</MenuItem>
<MenuItem accessibilityPositionInSet={9}>A plain MenuItem</MenuItem>
<MenuItem accessibilityPosInSet={9}>A plain MenuItem</MenuItem>
<MenuDivider />
{Platform.OS !== 'android' && <Submenu />}
<MenuItem disabled accessibilitySetSize={2}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ const BasicRadioGroup: React.FunctionComponent = () => {
content="Option A"
buttonKey="A"
accessibilityLabel="Test Accessibility Label"
accessibilityPositionInSet={1}
accessibilityPosInSet={1}
accessibilitySetSize={4}
/>
<RadioButton content="Option B" buttonKey="B" accessibilityPositionInSet={2} accessibilitySetSize={4} />
<RadioButton content="Option C" buttonKey="C" accessibilityPositionInSet={3} accessibilitySetSize={4} />
<RadioButton content="Option D" buttonKey="D" accessibilityPositionInSet={4} accessibilitySetSize={4} />
<RadioButton content="Option B" buttonKey="B" accessibilityPosInSet={2} accessibilitySetSize={4} />
<RadioButton content="Option C" buttonKey="C" accessibilityPosInSet={3} accessibilitySetSize={4} />
<RadioButton content="Option D" buttonKey="D" accessibilityPosInSet={4} accessibilitySetSize={4} />
</View>
</RadioGroup>
</View>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ export const DefaultRadioGroup: React.FunctionComponent = () => {
label="Option A"
value="A"
accessibilityLabel="Test Accessibility Label"
accessibilityPositionInSet={1}
accessibilityPosInSet={1}
accessibilitySetSize={4}
/>
<Radio label="Option B" value="B" accessibilityPositionInSet={2} accessibilitySetSize={4} />
<Radio label="Option C" value="C" accessibilityPositionInSet={3} accessibilitySetSize={4} />
<Radio label="Option D" value="D" accessibilityPositionInSet={4} accessibilitySetSize={4} />
<Radio label="Option B" value="B" accessibilityPosInSet={2} accessibilitySetSize={4} />
<Radio label="Option C" value="C" accessibilityPosInSet={3} accessibilitySetSize={4} />
<Radio label="Option D" value="D" accessibilityPosInSet={4} accessibilitySetSize={4} />
</View>
</RadioGroup>
</View>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui/react-native",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/adapters",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/android-theme",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/apple-theme",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/avatar",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/badge",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/button",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/callout",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/checkbox",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/chip",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/composition",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/contextual-menu",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/default-theme",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/divider",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "upgrade to RN 81, React 19, and fix builds",
"packageName": "@fluentui-react-native/drawer",
"email": "jasonmo@microsoft.com",
"dependentChangeType": "patch"
}
Loading
Loading