File tree 4 files changed +50
-0
lines changed
resources/com/vaadin/flow/server/frontend/dependencies/react19
test/java/com/vaadin/flow/server/frontend
4 files changed +50
-0
lines changed Original file line number Diff line number Diff line change @@ -95,6 +95,10 @@ public class FeatureFlags implements Serializable {
95
95
"https://github.com/vaadin/web-components/issues/5340" , true ,
96
96
"com.vaadin.flow.component.card.Card" );
97
97
98
+ public static final Feature REACT19 = new Feature (
99
+ "React 19 (default in Vaadin 25)" , "react19" ,
100
+ "https://react.dev/blog/2024/12/05/react-19" , true , null );
101
+
98
102
private List <Feature > features = new ArrayList <>();
99
103
100
104
File propertiesFolder = null ;
@@ -123,6 +127,7 @@ public FeatureFlags(Lookup lookup) {
123
127
features .add (new Feature (COPILOT_EXPERIMENTAL ));
124
128
features .add (new Feature (DASHBOARD_COMPONENT ));
125
129
features .add (new Feature (CARD_COMPONENT ));
130
+ features .add (new Feature (REACT19 ));
126
131
loadProperties ();
127
132
}
128
133
Original file line number Diff line number Diff line change 37
37
import org .slf4j .Logger ;
38
38
import org .slf4j .LoggerFactory ;
39
39
40
+ import com .vaadin .experimental .FeatureFlags ;
40
41
import com .vaadin .flow .server .Constants ;
41
42
import com .vaadin .flow .server .frontend .scanner .ClassFinder ;
42
43
import com .vaadin .flow .server .frontend .scanner .FrontendDependencies ;
@@ -302,6 +303,10 @@ Map<String, String> getDefaultDependencies() {
302
303
if (options .isReactEnabled ()) {
303
304
dependencies
304
305
.putAll (readDependencies ("react-router" , "dependencies" ));
306
+ if (options .getFeatureFlags ().isEnabled (FeatureFlags .REACT19 )) {
307
+ dependencies
308
+ .putAll (readDependencies ("react19" , "dependencies" ));
309
+ }
305
310
} else {
306
311
dependencies
307
312
.putAll (readDependencies ("vaadin-router" , "dependencies" ));
@@ -368,6 +373,9 @@ Map<String, String> getDefaultDevDependencies() {
368
373
if (options .isReactEnabled ()) {
369
374
defaults .putAll (
370
375
readDependencies ("react-router" , "devDependencies" ));
376
+ if (options .getFeatureFlags ().isEnabled (FeatureFlags .REACT19 )) {
377
+ defaults .putAll (readDependencies ("react19" , "devDependencies" ));
378
+ }
371
379
}
372
380
373
381
return defaults ;
Original file line number Diff line number Diff line change
1
+ {
2
+ "private" : true ,
3
+ "description" : " A list of Flow dependencies when using React 19" ,
4
+ "dependencies" : {
5
+ "react" : " 19.0.0" ,
6
+ "react-dom" : " 19.0.0"
7
+ },
8
+ "devDependencies" : {
9
+ "@types/react" : " 19.0.2" ,
10
+ "@types/react-dom" : " 19.0.2"
11
+ }
12
+ }
Original file line number Diff line number Diff line change @@ -127,6 +127,31 @@ public void getDefaultDependencies_includesAllDependencies() {
127
127
Assert .assertEquals (expectedDependencies , actualDependendencies );
128
128
}
129
129
130
+ @ Test
131
+ public void react19UsedWhenFeatureFlagIsOn () {
132
+ Map <String , String > react18Deps = nodeUpdater .getDefaultDependencies ();
133
+ Map <String , String > react18DevDeps = nodeUpdater
134
+ .getDefaultDevDependencies ();
135
+ Mockito .when (options .getFeatureFlags ().isEnabled (FeatureFlags .REACT19 ))
136
+ .thenReturn (true );
137
+
138
+ Map <String , String > react19Deps = nodeUpdater .getDefaultDependencies ();
139
+ Map <String , String > react19DevDeps = nodeUpdater
140
+ .getDefaultDevDependencies ();
141
+
142
+ Assert .assertTrue (react18Deps .get ("react" ).startsWith ("18." ));
143
+ Assert .assertTrue (react18Deps .get ("react-dom" ).startsWith ("18." ));
144
+ Assert .assertTrue (react18DevDeps .get ("@types/react" ).startsWith ("18." ));
145
+ Assert .assertTrue (
146
+ react18DevDeps .get ("@types/react-dom" ).startsWith ("18." ));
147
+
148
+ Assert .assertTrue (react19Deps .get ("react" ).startsWith ("19." ));
149
+ Assert .assertTrue (react19Deps .get ("react-dom" ).startsWith ("19." ));
150
+ Assert .assertTrue (react19DevDeps .get ("@types/react" ).startsWith ("19." ));
151
+ Assert .assertTrue (
152
+ react19DevDeps .get ("@types/react-dom" ).startsWith ("19." ));
153
+ }
154
+
130
155
@ Test
131
156
public void getDefaultDevDependencies_includesAllDependencies_whenUsingVite () {
132
157
Map <String , String > defaultDeps = nodeUpdater
You can’t perform that action at this time.
0 commit comments