-
Notifications
You must be signed in to change notification settings - Fork 2
/
state_of_react.yml
660 lines (541 loc) · 23.5 KB
/
state_of_react.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
locale: th-TH
translations:
###########################################################################
# General
###########################################################################
- key: general.state_of_react.intro
t: |
React has been around for a while now, and it's clear that it has become one of the dominant front-end frameworks.
Yet even so, React is still evolving at a fast pace, and the community is doing its best to keep up.
With the State of React developer survey, we are hoping to make sense of that evolution, and help developers find their way in the vast React ecosystem.
- key: general.state_of_react.description
t: The annual developer survey about the React ecosystem
- key: features.features_intro_react
t: |
Welcome to the survey! This first part is all about figuring out
which of the official React APIs you know about and use.
By the way, if you want to tell us more about any of your choices, just click that little "comment" icon!
- key: tools.tools_intro_react
t: |
The next couple sections focus on the **libraries** and **frameworks** that make up
the React ecosystem. Let us know what you're excited about!
# sections
- key: sections.main_apis.title
t: Main APIs
- key: sections.main_apis.description
t: Stable, established React features
- key: sections.hooks.title
t: Hooks
- key: sections.hooks.description
t: React's built-in hooks
- key: sections.new_apis.title
t: New APIs
- key: sections.new_apis.description
t: Newly-introduced or experimental features
- key: sections.component_libraries.title
t: Component Libraries
- key: sections.component_libraries.description
t: The building blocks of your front-end
# - key: sections.data_management.title
# t: Data Management
# - key: sections.data_management.description
# t: Loading and managing application data
- key: sections.state_management.title
t: State Management
- key: sections.state_management.description
t: Libraries for managing application state
- key: sections.data_loading.title
t: Data Loading
- key: sections.data_loading.description
t: Utilities for loading and managing data
- key: sections.back_end_infrastructure.title
t: Back-End & Infrastructure
- key: sections.back_end_infrastructure.description
t: Bundling & serving your app
# - key: sections.usage.title
# t: Back-End & Infrastructure
# - key: sections.usage.description
# t: Bundling & serving your app
# old sections
# - key: sections.ui_libraries.title
# t: UI Libraries
# - key: sections.ui_libraries.description
# t: Component libraries and other UI toolkits.
# - key: sections.meta_frameworks.title
# t: Meta Frameworks
# - key: sections.meta_frameworks.description
# t: Frameworks that help render and serve your React app
# - key: sections.testing.title
# t: Testing
# - key: sections.testing.description
# t: Testing utilities and libraries
- key: sections.other_tools.title
t: Other Tools
- key: sections.other_tools.description
t: Other React utilities and libraries
- key: sections.usage_react.title
t: Usage
- key: sections.usage_react.description
t: How you use React on a daily basis
- key: tools.data_loading_heading
t: Data Loading Libraries
- key: tools.state_management_heading
t: State Management Libraries
# features
- key: features.main_apis_pain_points
t: Main APIs Pain Points
- key: features.main_apis_pain_points.question
t: What pain points have you encountered related to the APIs mentioned above?
- key: features.hooks_pain_points
t: Hooks Pain Points
- key: features.hooks_pain_points.question
t: What pain points have you encountered with hooks?
- key: features.new_apis_pain_points
t: New APIs Pain Points
- key: features.new_apis_pain_points.question
t: What pain points have you encountered related to new APIs?
# main features
- key: features.fragment.description
t: >
`<Fragment>`, often used via `<>...</>` syntax, lets you group elements without a wrapper node.
- key: features.profiler.description
t: >
`<Profiler>` lets you measure rendering performance of a React tree programmatically.
- key: features.strictmode.description
t: >
`<StrictMode>` lets you find common bugs in your components early during development.
- key: features.createportal.description
t: >
`createPortal` lets you render some children into a different part of the DOM.
- key: features.createcontext.description
t: >
`createContext` lets you create a context that components can provide or read.
- key: features.forwardref.description
t: >
`forwardRef` lets your component expose a DOM node to parent component with a ref.
- key: features.lazy.description
t: >
`lazy` lets you defer loading component’s code until it is rendered for the first time.
- key: features.memo.description
t: >
`memo` lets you skip re-rendering a component when its props are unchanged.
- key: features.createroot.description
t: >
`createRoot` lets you create a root to display React components inside a browser DOM node.
- key: features.hydrateroot.description
t: >
`hydrateRoot` lets you display React components inside a browser DOM node whose HTML content was previously generated by `react-dom/server`.
# hooks
- key: features.usecallback.description
t: >
`useCallback` is a React Hook that lets you cache a function definition between re-renders.
- key: features.usecontext.description
t: >
`useContext` is a React Hook that lets you read and subscribe to context from your component.
- key: features.usedebugvalue.description
t: >
`useDebugValue` is a React Hook that lets you add a label to a custom Hook in React DevTools.
- key: features.usedeferredvalue.description
t: >
`useDeferredValue` is a React Hook that lets you defer updating a part of the UI.
- key: features.useeffect.description
t: >
`useEffect` is a React Hook that lets you synchronize a component with an external system.
- key: features.useid.description
t: >
`useId` is a React Hook for generating unique IDs that can be passed to accessibility attributes.
- key: features.usememo.description
t: >
`useMemo` is a React Hook that lets you cache the result of a calculation between re-renders.
- key: features.usereducer.description
t: >
`useReducer` is a React Hook that lets you add a reducer to your component.
- key: features.useref.description
t: >
`useRef` is a React Hook that lets you reference a value that’s not needed for rendering.
- key: features.usestate.description
t: >
`useState` is a React Hook that lets you add a state variable to your component.
- key: features.usesyncexternalstore.description
t: >
`useSyncExternalStore` is a React Hook that lets you subscribe to an external store.
- key: features.usetransition.description
t: >
`useTransition` is a React Hook that lets you update the state without blocking the UI.
# new features
- key: features.suspense.description
t: >
`<Suspense>` lets you display a fallback until its children have finished loading.
- key: features.use_hook.description
t: >
`use` is a React Hook that lets you read the value of a resource like a Promise or context.
- key: features.usetransition.description
t: >
`useTransition` is a React Hook that lets you update the state without blocking the UI.
- key: features.starttransition.description
t: >
`startTransition` lets you update the state without blocking the UI.
- key: features.react_server_components.description
t: >
Components that run exclusively on the server.
- key: features.use_client.description
t: >
`'use client'` marks source files whose components execute on the client.
- key: features.use_server.description
t: >
`'use server'` marks server-side functions that can be called from client-side code.
- key: features.server_actions.description
t: >
React's built-in solution for server mutations.
- key: features.taint_api.description
t: >
Prevent a specific object or value from being passed to a Client Component.
- key: features.cache.description
t: >
`cache` lets you cache the result of a data fetch or computation.
- key: features.useformstatus.description
t: >
`useFormStatus` is a Hook that gives you status information of the last form submission.
- key: features.useformstate.description
t: >
`useFormState` is a Hook that allows you to update state based on the result of a form action.
# tools
- key: tools.component_libraries_others
t: Other Libraries
- key: tools.component_libraries_others.question
t: What other component libraries have you used?
- key: tools.component_libraries_pain_points
t: Component Pain Points
- key: tools.component_libraries_pain_points.question
t: What pain points have you encountered related to working with components?
# - key: tools.ui_libraries_happiness
# t: Happiness
# - key: tools.ui_libraries_happiness.description
# t: How happy are you with the state of UI libraries?
- key: tools.state_management_others
t: Other State Management Libraries
- key: tools.state_management_others.question
t: What other libraries have you used to manage state in your apps?
- key: tools.state_management_pain_points
t: State Management Pain Points
- key: tools.state_management_pain_points.question
t: What pain points have you encountered related to state management?
# - key: tools.state_management_happiness
# t: Happiness
# - key: tools.state_management_happiness.description
# t: How happy are you with the available state management libraries?
- key: tools.data_loading_others
t: Other Data Loading Libraries
- key: tools.data_loading_others.question
t: What other libraries have you used for data loading?
- key: tools.data_loading_pain_points
t: Data Loading Pain Points
- key: tools.data_loading_pain_points.question
t: What pain points have you encountered related to data loading?
# - key: tools.data_loading_happiness
# t: Happiness
# - key: tools.data_loading_happiness.description
# t: How happy are you with the state of data loading libraries?
- key: tools.meta_frameworks_others
t: Other Meta-Frameworks
# - key: tools.meta_frameworks_happiness
# t: Happiness
# - key: tools.meta_frameworks_happiness.description
# t: How happy are you with the current state of meta-frameworks?
- key: tools.meta_frameworks_heading
t: Meta-Frameworks
- key: tools.other_back_end_tools_heading
t: Other Back-End Tools & Services
- key: tools.back_end_infrastructure_pain_points
t: Back-End Pain Points
- key: tools.back_end_infrastructure_pain_points.question
t: What pain points have you encountered related to back-end and infrastructure?
- key: other_tools.testing
t: Testing Libraries
- key: other_tools.testing.question
t: Which libraries do you use to test your React apps?
# - key: tools.testing_happiness
# t: Happiness
# - key: tools.testing_happiness.description
# t: How happy are you with the current state of testing libraries?
- key: other_tools.mobile_development
t: Mobile Development
- key: other_tools.mobile_development.question
t: Which libraries have you used for mobile development?
# - key: tools.mobile_development_others
# t: Other Mobile Development Tools
# - key: tools.mobile_development_happiness
# t: Happiness
# - key: tools.mobile_development_happiness.description
# t: How happy are you with the current state of mobile development?
# other tools
- key: other_tools.form_libraries
t: Form Libraries
# - key: other_tools.form_libraries.description
# t: Libraries for generating and validating forms.
- key: other_tools.form_libraries.question
t: Which libraries have you used to manage forms?
- key: options.form_libraries.na
t: None
- key: other_tools.build_tools
t: Build Tools
# - key: other_tools.build_tools.description
# t: Build tools and bundlers.
- key: other_tools.build_tools.question
t: Which build tools and bundlers have you used?
- key: other_tools.animation_libraries
t: Animation
# - key: other_tools.animation.description
# t: Libraries to help manage animations and transitions.
- key: other_tools.animation_libraries.question
t: Which animation libraries have you used?
- key: other_tools.auth
t: Authentication
# - key: other_tools.auth.description
# t: Libraries and services for managing authentication and accounts.
- key: other_tools.auth.question
t: Which libraries and services have you used to handle authentication?
- key: other_tools.data_visualization_libraries
t: Data Visualization
# - key: other_tools.data_visualization.description
# t: Data visualization and graphics libraries.
- key: other_tools.data_visualization_libraries.question
t: Which data visualization and graphics libraries have you used?
- key: other_tools.css_tools
t: CSS Tools & Libraries
# - key: other_tools.css_tools.description
# t: CSS libraries, frameworks, and utilities you use to style your React app.
- key: other_tools.css_tools.question
t: Which libraries or frameworks have you used to style your React apps?
- key: other_tools.other_frontend_frameworks
t: Other Front-end Frameworks
# - key: other_tools.other_frontend_frameworks.description
# t: >
# Other front-end frameworks
- key: other_tools.other_frontend_frameworks.question
t: >
Which other front-end frameworks have you used?
- key: other_tools.hosting
t: Hosting Services
# - key: other_tools.hosting.description
# t: Services you use to host your React apps.
- key: other_tools.hosting.question
t: Which of services have you used to host your React apps?
- key: other_tools.backend_language
t: Back-end Languages
- key: other_tools.backend_language.question
t: Which language(s) are your back-end apps written in?
- key: other_tools.other_services
t: Other Services
- key: other_tools.other_services.question
t: What other services have you used with your React apps?
- key: other_tools.validation
t: Schema & Validation Libraries
- key: other_tools.validation.question
t: Which libraries have you used for validating data against a schema?
- key: other_tools.ai_tools
t: AI Tools
- key: other_tools.ai_tools.question
t: What AI tools or services have you used to help you write React code?
- key: other_tools.renderers
t: React Renderers
- key: other_tools.renderers.question
t: Which libraries have you used to render React to different platforms or environments?
- key: other_tools.other_tools
t: Other Tools
- key: other_tools.other_tools.question
t: What other tools have you used to develop React apps?
# CSS
- key: options.css_tools.plain_css
t: CSS (plain, “vanilla” CSS)
# react pain points
- key: options.react_pain_points.rerenders
t: Managing component re-renders
- key: options.react_pain_points.testing
t: Testing
- key: options.react_pain_points.data_loading
t: Data loading and async operations
- key: options.react_pain_points.state_management
t: State management (`useState`, Redux, Context, etc.)
- key: options.react_pain_points.bundle_sizes
t: Keeping client bundle sizes down
- key: options.react_pain_points.server_rendering
t: Server-Side Rendering & Server Components
- key: options.react_pain_points.css_styling
t: CSS & Styling
- key: options.react_pain_points.attribute_names
t: “Wrong” attribute names such as `className`, `htmlFor`, etc.
- key: options.react_pain_points.synthetic_events
t: Synthetic events
- key: options.react_pain_points.ref_management
t: Ref management
- key: options.react_pain_points.memoization
t: Memoization
- key: options.react_pain_points.animations
t: Animations & Transitions
- key: options.react_pain_points.forms
t: Forms
- key: options.react_pain_points.typescript
t: Lack of official native TypeScript support
# usage type
- key: usage.react_usage_type
t: React Usage
- key: usage.react_usage_type.question
t: In what context do you primarily use React?
# react version
- key: usage.react_version
t: React Version
- key: usage.react_version.question
t: Which version of React do you use the most on a daily basis?
- key: options.react_version.react_v16x
t: 16.x
- key: options.react_version.react_v17x
t: 17.x
- key: options.react_version.react_v18x
t: 18.x
- key: options.react_version.react_canary
t: Canary
- key: options.react_version.not_sure
t: Not sure
# JS App Patterns
- key: usage.js_app_patterns
t: Application Patterns
- key: usage.js_app_patterns.question
t: Which of the following architecture and rendering patterns have you used **in the last year**?
- key: options.js_app_patterns.single_page_app
t: Single Page Application (SPA)
- key: options.js_app_patterns.single_page_app.description
t: Apps that run entirely in the browser
- key: options.js_app_patterns.multiple_page_app
t: Multi-Page Application (MPA)
- key: options.js_app_patterns.multiple_page_app.description
t: Apps that run entirely on the server, with minimal client-side dynamic behavior
- key: options.js_app_patterns.static_site_generation
t: Static Site Generation (SSG)
- key: options.js_app_patterns.static_site_generation.description
t: Pre-rendered static content, with or without a client-side dynamic element
- key: options.js_app_patterns.server_side_rendering
t: Server-Side Rendering (SSR)
- key: options.js_app_patterns.server_side_rendering.description
t: Dynamically rendering HTML content on the server before rehydrating it on the client
- key: options.js_app_patterns.partial_hydration
t: Partial Hydration
- key: options.js_app_patterns.partial_hydration.description
t: Only hydrating some of your components on the client (e.g. React Server Components)
- key: options.js_app_patterns.progressive_rehydration
t: Progressive Hydration
- key: options.js_app_patterns.progressive_rehydration.description
t: Controlling the order of component hydration on the client
- key: options.js_app_patterns.islands_architecture
t: Islands Architecture
- key: options.js_app_patterns.islands_architecture.description
t: Isolated islands of dynamic behavior with multiple entry points in an otherwise static site (Astro, Eleventy)
- key: options.js_app_patterns.progressive_enhancement
t: Progressive Enhancement
- key: options.js_app_patterns.progressive_enhancement.description
t: Making sure an app is functional even without JavaScript
- key: options.js_app_patterns.incremental_static_generation
t: Incremental Static Generation
- key: options.js_app_patterns.incremental_static_generation.description
t: Being able to dynamically augment or modify a static site even after the initial build (Next.js ISR, Gatsby DSG)
- key: options.js_app_patterns.streaming_ssr
t: Streaming SSR
- key: options.js_app_patterns.streaming_ssr.description
t: Breaking down server-rendered content in smaller streamed chunks
- key: options.js_app_patterns.resumability
t: Resumability
- key: options.js_app_patterns.resumability.description
t: Serializing framework state on the server so the client can resume execution with no duplicated code execution.
- key: options.js_app_patterns.edge_rendering
t: Edge Rendering
- key: options.js_app_patterns.edge_rendering.description
t: Altering rendered HTML at the edge before sending it on to the client
- key: options.js_app_patterns.micro_frontend
t: Micro Frontend
- key: options.js_app_patterns.domain_driven_design
t: Domain-Driven Design
- key: options.js_app_patterns.serverless
t: Serverless
- key: options.js_app_patterns.pespa
t: PESPA
- key: usage.what_do_you_use_react_for
t: React Usage
- key: usage.what_do_you_use_react_for.question
t: What do you use React for?
- key: usage.react_pain_points
t: React Pain Points
- key: usage.state_of_react
t: Happiness
- key: usage.state_of_react.question
t: How happy are you with the current state of React?
- key: usage.usage_pain_points
t: Other Pain Points
- key: usage.usage_pain_points.question
t: Any other React pain points that you would like to mention?
# new features
- key: usage.new_features
t: New Features
- key: usage.new_features.question
t: Which of these recent and upcoming new features are you most excited about?
- key: options.new_features.asset_loading
t: Asset Loading
- key: options.new_features.asset_loading.description
t: Fully integrate Suspense with the loading lifecycle of stylesheets, fonts, and images
- key: options.new_features.cache.description
t: An API to assist with caching data.
- key: options.new_features_react_forget.description
t: An automatic reactivity compiler for React
- key: options.new_features.new_docs
t: New Documentation
- key: options.new_features.new_docs.description
t: React's updated documentation site.
- key: options.new_features.offscreen_rendering
t: Offscreen Rendering
- key: options.new_features_offscreen_rendering.description
t: Rendering screens in the background without additional performance overhead.
- key: options.new_features.use_hook
t: >
`use` Hook
- key: options.new_features.use_hook.description
t: >
`use` unwraps the value of a promise, but it can be used inside normal components and Hooks, including on the client.
- key: options.new_features.transition_tracing
t: Transition Tracing
- key: options.new_features.transition_tracing.description
t: Detect when React Transitions become slower and investigate why they may be slow.
# what do you use React for?
- key: options.what_do_you_use_react_for.static_sites
t: Static sites
- key: options.what_do_you_use_react_for.design_systems
t: Design systems
- key: options.what_do_you_use_react_for.web_apps
t: Web apps
- key: options.what_do_you_use_react_for.mobile_apps
t: Mobile apps
- key: options.what_do_you_use_react_for.desktop_apps
t: Desktop apps
# resources
- key: resources.learning_methods_react
t: Learning Methods
- key: resources.learning_methods_react.question
t: What type of resources have you used to learn React?
- key: resources.blogs_news_magazines_react
t: Blogs & Newsletters
- key: resources.blogs_news_magazines_react.question
t: Which blogs, magazines, or newsletters do you consult to keep up with React news?
- key: resources.sites_courses_react
t: Sites & Courses
- key: resources.sites_courses_react.question
t: Which sites or courses have you used to learn React?
- key: resources.podcasts_react
t: Podcasts
- key: resources.podcasts_react.question
t: Which React or web development podcasts do you listen to?
- key: resources.video_creators_react
t: Video Creators
- key: resources.video_creators_react.question
t: Which React or web development video creators do you watch on YouTube, Twitch, etc.?
- key: resources.people_react
t: People
- key: resources.people_react.question
t: Who do you read, follow, or just want to highlight in the React community?