diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 73d40756..d1cc2244 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -79,6 +79,27 @@ jobs:
./reactfire-${{ github.run_id }}/unpack.sh
- name: Run tests
run: npm run test
+ type-check:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ react: ["18", "19"]
+ fail-fast: false
+ name: Type check (React ${{ matrix.react }})
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Setup node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '24'
+ cache: 'npm'
+ - name: Install deps
+ run: npm ci
+ - name: Install React ${{ matrix.react }} types
+ run: npm install --no-save react@${{ matrix.react }} react-dom@${{ matrix.react }} @types/react@${{ matrix.react }} @types/react-dom@${{ matrix.react }}
+ - name: Type check
+ run: npx tsc --noEmit
publish:
runs-on: ubuntu-latest
name: Publish (NPM)
diff --git a/docs/reference/functions/AuthCheck.md b/docs/reference/functions/AuthCheck.md
index 9bedbb15..aa03a2be 100644
--- a/docs/reference/functions/AuthCheck.md
+++ b/docs/reference/functions/AuthCheck.md
@@ -6,7 +6,7 @@
# ~~Function: AuthCheck()~~
-> **AuthCheck**(`__namedParameters`): `Element`
+> **AuthCheck**(`__namedParameters`): `ReactElement`
Defined in: [src/auth.tsx:247](https://github.com/FirebaseExtended/reactfire/blob/main/src/auth.tsx#L247)
@@ -18,7 +18,7 @@ Defined in: [src/auth.tsx:247](https://github.com/FirebaseExtended/reactfire/blo
## Returns
-`Element`
+`ReactElement`
## Deprecated
diff --git a/docs/reference/functions/SuspenseWithPerf.md b/docs/reference/functions/SuspenseWithPerf.md
index ea4a1e9d..6ab06a72 100644
--- a/docs/reference/functions/SuspenseWithPerf.md
+++ b/docs/reference/functions/SuspenseWithPerf.md
@@ -6,7 +6,7 @@
# Function: SuspenseWithPerf()
-> **SuspenseWithPerf**(`__namedParameters`): `Element`
+> **SuspenseWithPerf**(`__namedParameters`): `ReactElement`
Defined in: [src/performance.tsx:9](https://github.com/FirebaseExtended/reactfire/blob/main/src/performance.tsx#L9)
@@ -18,4 +18,4 @@ Defined in: [src/performance.tsx:9](https://github.com/FirebaseExtended/reactfir
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/type-aliases/StorageImageProps.md b/docs/reference/type-aliases/StorageImageProps.md
index 5fd6a740..b75fa337 100644
--- a/docs/reference/type-aliases/StorageImageProps.md
+++ b/docs/reference/type-aliases/StorageImageProps.md
@@ -14,7 +14,7 @@ Defined in: [src/storage.tsx:36](https://github.com/FirebaseExtended/reactfire/b
### placeHolder?
-> `optional` **placeHolder?**: `JSX.Element`
+> `optional` **placeHolder?**: `React.ReactNode`
Defined in: [src/storage.tsx:40](https://github.com/FirebaseExtended/reactfire/blob/main/src/storage.tsx#L40)
diff --git a/docs/reference/variables/AnalyticsProvider.md b/docs/reference/variables/AnalyticsProvider.md
index 1e51416e..67edf246 100644
--- a/docs/reference/variables/AnalyticsProvider.md
+++ b/docs/reference/variables/AnalyticsProvider.md
@@ -6,7 +6,7 @@
# Variable: AnalyticsProvider
-> `const` **AnalyticsProvider**: (`props`) => `Element`
+> `const` **AnalyticsProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:74](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L74)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:74](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/AppCheckProvider.md b/docs/reference/variables/AppCheckProvider.md
index dd717bde..ff42596a 100644
--- a/docs/reference/variables/AppCheckProvider.md
+++ b/docs/reference/variables/AppCheckProvider.md
@@ -6,7 +6,7 @@
# Variable: AppCheckProvider
-> `const` **AppCheckProvider**: (`props`) => `Element`
+> `const` **AppCheckProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:72](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L72)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:72](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/AuthProvider.md b/docs/reference/variables/AuthProvider.md
index 47de1c97..11ea5392 100644
--- a/docs/reference/variables/AuthProvider.md
+++ b/docs/reference/variables/AuthProvider.md
@@ -6,7 +6,7 @@
# Variable: AuthProvider
-> `const` **AuthProvider**: (`props`) => `Element`
+> `const` **AuthProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:73](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L73)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:73](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/DatabaseProvider.md b/docs/reference/variables/DatabaseProvider.md
index c2a3a7e7..e8069948 100644
--- a/docs/reference/variables/DatabaseProvider.md
+++ b/docs/reference/variables/DatabaseProvider.md
@@ -6,7 +6,7 @@
# Variable: DatabaseProvider
-> `const` **DatabaseProvider**: (`props`) => `Element`
+> `const` **DatabaseProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:75](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L75)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:75](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/FirestoreProvider.md b/docs/reference/variables/FirestoreProvider.md
index 6e680dcf..d689f31f 100644
--- a/docs/reference/variables/FirestoreProvider.md
+++ b/docs/reference/variables/FirestoreProvider.md
@@ -6,7 +6,7 @@
# Variable: FirestoreProvider
-> `const` **FirestoreProvider**: (`props`) => `Element`
+> `const` **FirestoreProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:76](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L76)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:76](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/FunctionsProvider.md b/docs/reference/variables/FunctionsProvider.md
index 0557ac83..918b2609 100644
--- a/docs/reference/variables/FunctionsProvider.md
+++ b/docs/reference/variables/FunctionsProvider.md
@@ -6,7 +6,7 @@
# Variable: FunctionsProvider
-> `const` **FunctionsProvider**: (`props`) => `Element`
+> `const` **FunctionsProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:77](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L77)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:77](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/PerformanceProvider.md b/docs/reference/variables/PerformanceProvider.md
index ef926f29..ee2fcc28 100644
--- a/docs/reference/variables/PerformanceProvider.md
+++ b/docs/reference/variables/PerformanceProvider.md
@@ -6,7 +6,7 @@
# Variable: PerformanceProvider
-> `const` **PerformanceProvider**: (`props`) => `Element`
+> `const` **PerformanceProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:78](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L78)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:78](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/RemoteConfigProvider.md b/docs/reference/variables/RemoteConfigProvider.md
index 071b8e4c..8d3d3625 100644
--- a/docs/reference/variables/RemoteConfigProvider.md
+++ b/docs/reference/variables/RemoteConfigProvider.md
@@ -6,7 +6,7 @@
# Variable: RemoteConfigProvider
-> `const` **RemoteConfigProvider**: (`props`) => `Element`
+> `const` **RemoteConfigProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:80](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L80)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:80](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/docs/reference/variables/StorageProvider.md b/docs/reference/variables/StorageProvider.md
index f558ec1c..dbcb81c1 100644
--- a/docs/reference/variables/StorageProvider.md
+++ b/docs/reference/variables/StorageProvider.md
@@ -6,7 +6,7 @@
# Variable: StorageProvider
-> `const` **StorageProvider**: (`props`) => `Element`
+> `const` **StorageProvider**: (`props`) => `ReactElement`
Defined in: [src/sdk.tsx:79](https://github.com/FirebaseExtended/reactfire/blob/main/src/sdk.tsx#L79)
@@ -18,4 +18,4 @@ Defined in: [src/sdk.tsx:79](https://github.com/FirebaseExtended/reactfire/blob/
## Returns
-`Element`
+`ReactElement`
diff --git a/src/auth.tsx b/src/auth.tsx
index d535b894..267ffd4d 100644
--- a/src/auth.tsx
+++ b/src/auth.tsx
@@ -244,7 +244,7 @@ export function ClaimsCheck({ user, fallback, children, requiredClaims }: Claims
*
* Meant for Concurrent mode only (``). [More detail](https://github.com/FirebaseExtended/reactfire/issues/325#issuecomment-827654376).
*/
-export function AuthCheck({ fallback, children, requiredClaims }: AuthCheckProps): JSX.Element {
+export function AuthCheck({ fallback, children, requiredClaims }: AuthCheckProps): React.ReactElement {
const { data: user } = useUser();
const suspenseMode = useSuspenseEnabledFromConfigAndContext();
diff --git a/src/performance.tsx b/src/performance.tsx
index 78a0455c..7f444bae 100644
--- a/src/performance.tsx
+++ b/src/performance.tsx
@@ -6,7 +6,7 @@ export interface SuspensePerfProps {
fallback: React.ReactNode;
}
-export function SuspenseWithPerf({ children, traceId, fallback }: SuspensePerfProps): JSX.Element {
+export function SuspenseWithPerf({ children, traceId, fallback }: SuspensePerfProps): React.ReactElement {
// TODO: Should this import firebase/performance?
const perf = typeof globalThis !== 'undefined' ? globalThis.performance : undefined;
diff --git a/src/sdk.tsx b/src/sdk.tsx
index 2e7af1a6..ee66ffff 100644
--- a/src/sdk.tsx
+++ b/src/sdk.tsx
@@ -28,7 +28,7 @@ export const RemoteConfigSdkContext = React.createContext(SdkContext: React.Context) {
- return function SdkProvider(props: React.PropsWithChildren<{ sdk: Sdk }>) {
+ return function SdkProvider(props: React.PropsWithChildren<{ sdk: Sdk }>): React.ReactElement {
if (!props.sdk) throw new Error('no sdk provided');
const contextualAppName = useFirebaseApp().name;
diff --git a/src/storage.tsx b/src/storage.tsx
index 90ea56c1..5a0299da 100644
--- a/src/storage.tsx
+++ b/src/storage.tsx
@@ -37,7 +37,7 @@ export type StorageImageProps = {
storagePath: string;
storage?: FirebaseStorage;
suspense?: boolean;
- placeHolder?: JSX.Element;
+ placeHolder?: React.ReactNode;
};
function StorageFromContext(props: StorageImageProps & React.DetailedHTMLProps, HTMLImageElement>) {
@@ -48,7 +48,7 @@ function StorageFromContext(props: StorageImageProps & React.DetailedHTMLProps;
}
-function INTERNALStorageImage(props: StorageImageProps & React.DetailedHTMLProps, HTMLImageElement>): JSX.Element {
+function INTERNALStorageImage(props: StorageImageProps & React.DetailedHTMLProps, HTMLImageElement>): React.ReactNode {
const { storage, storagePath, suspense, placeHolder, ...imgProps } = props;
const reactfireOptions: ReactFireOptions = {