Skip to content

Align public type for Touchable#57419

Closed
huntie wants to merge 1 commit into
react:mainfrom
huntie:export-D110483989
Closed

Align public type for Touchable#57419
huntie wants to merge 1 commit into
react:mainfrom
huntie:export-D110483989

Conversation

@huntie

@huntie huntie commented Jul 2, 2026

Copy link
Copy Markdown
Member

Summary:
Problem

Under the Strict TypeScript API, Touchable was a value-only TypeScript export referencing TouchableImpl, which leaked additional {Mixin, renderDebugView} members.

Fix

Export a declaration-merged Touchable type at root, specifying a public interface for this module that excludes these members.

Impact

  • API snapshot cleanup: Hides internal TouchableImpl and TouchableMixinImpl details.
  • Functional: Removes Touchable.renderDebugView() from the public API. This is non-breaking as this type was not previously modelled under the manual TS types.
  • Functional: Fixes equivalence of Touchable when referenced as a type under Uniwind — which was a breaking change vs the manual TS types (extra props were leaked).

https://github.com/uni-stack/uniwind/blob/6b498f2ada673d2b92915c79a703286078b953c2/packages/uniwind/types.d.ts#L40

Notes

  • As part of this change, other Libraries//*Impl APIs were audited to check for similar internal API leaks. This is the only obvious instance.
  • Also simplify outdated doc comment (Touchable subtypes are intended for primary use and have separate docs pages).

Changelog:
[General][Fixed] - Strict TypeScript API: Export a public Touchable type object, reducing its API to match the previous manual types

Differential Revision: D110483989

Summary:
**Problem**

Under the Strict TypeScript API, `Touchable` was a value-only TypeScript export referencing `TouchableImpl`, which leaked additional `{Mixin, renderDebugView}` members.

**Fix**

Export a declaration-merged `Touchable` type at root, specifying a public interface for this module that excludes these members.

**Impact**

- API snapshot cleanup: Hides internal `TouchableImpl` and `TouchableMixinImpl` details.
- **Functional**: Removes `Touchable.renderDebugView()` from the public API. This is **non-breaking** as this type was not previously modelled under the manual TS types.
- **Functional**: Fixes equivalence of `Touchable` when referenced as a type under Uniwind — which was a breaking change vs the manual TS types (extra props were leaked).

https://github.com/uni-stack/uniwind/blob/6b498f2ada673d2b92915c79a703286078b953c2/packages/uniwind/types.d.ts#L40

**Notes**

- As part of this change, other `Libraries/`/`*Impl` APIs were audited to check for similar internal API leaks. This is the only obvious instance.
- Also simplify outdated doc comment (`Touchable` subtypes are intended for primary use and have separate docs pages).

Changelog:
[General][Fixed] - **Strict TypeScript API**: Export a public `Touchable` type object, reducing its API to match the previous manual types

Differential Revision: D110483989
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 2, 2026
@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels Jul 2, 2026
@meta-codesync

meta-codesync Bot commented Jul 2, 2026

Copy link
Copy Markdown

@huntie has exported this pull request. If you are a Meta employee, you can view the originating Diff in D110483989.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Warning

JavaScript API change detected

This PR commits an update to ReactNativeApi.d.ts, indicating a change to React Native's public JavaScript API.

  • Please include a clear changelog message.
  • This change will be subject to additional review.

This change was flagged as: POTENTIALLY_BREAKING

@huntie huntie closed this Jul 2, 2026
@huntie huntie deleted the export-D110483989 branch July 2, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant