Panel discussion: State Management

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

FAQ

State management is a strategy used to manage a state that exists outside of components in a Vue application. It involves a system to manage, interact with, and maintain data that goes beyond the lifecycle of individual components.

Yes, Vue 3 introduced the Composition API and a reactivity package which allows more direct management of reactive states. While Vuex 4 remains compatible with Vue 3 without major changes, new tools like Pinia are emerging as simpler alternatives for state management.

Pinia is a store library for Vue that is simpler and less opinionated than Vuex. It offers better TypeScript support and integrates seamlessly with the Composition API of Vue 3. Pinia allows for scalable state management, suitable for both small and large applications.

For new projects in Vue 3, it is recommended to use Pinia if a store is needed. Pinia is simpler, supports server-side rendering, and is considered the future direction for Vue state management. However, Vuex 4 can still be used, especially for projects requiring a Flux architecture.

Yes, Pinia and Vuex can coexist in the same project. This allows for partial migration where you can gradually shift from Vuex to Pinia without needing to refactor the entire state management at once.

Vuex ORM is a tool that facilitates managing relational data in Vuex stores by providing an Object-Relational Mapping-like interface. It is useful for applications with complex relationships and models, helping to deduplicate and efficiently manage nested and relational data.

Eduardo San Martin Morote
Eduardo San Martin Morote
Kia King Ishii
Kia King Ishii
Vanessa Otto
Vanessa Otto
33 min
27 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Vanessa, Kia, and Eduardo discuss Vue.js and state management, emphasizing the evolution of state management in Vue, the introduction of Pinia as a simpler alternative to Vuex, and the comparison between Vue X and Pinia in terms of flexibility and adaptability. They explore transitioning from local state to Flux architecture, efficient data handling with VueXORM, and the importance of optimal data access in Vue components. The discussion also covers server-side data storage, cache usage, and audience engagement with VxOrm for deduplicating data in Vuex.

1. Introduction to Vue.js and State Management

Short description:

Vanessa introduces herself, shares her Vue.js journey and fear of state management. Kia and Eduardo also greet the audience. Eduardo explains the concept of state management outside components.

So, hi, and first of all, hi, I'm Vanessa. In comparison to those beautiful people next to me, this direction, I think, I'm not a core member. I'm also not really into open source. I'm very sorry, but I started my journey with Vue.js in 2017 and have loved it ever since. I guess how most of the people here in the conference. And one of my key experiences was as I added Vue.x, as I finally added Vue.x, that I was being afraid to use it beforehand because I thought state management store sounds complicated. And I think I did a lot of very complicated things before. I just did the simple thing of adding Vue.x.

Before we hop into the discussions, I want to say hi to Kia and Eduardo and starting maybe, Kia, with you, you can quickly introduce yourself and say hello to everybody. Okay. Thank you, Vanessa. Hello, everybody. I'm Kia. I'm a Vue.js Core Team member and so excited to be here. So I'm hoping to have so much fun. Yeah. I hope you too. Okay. And hello, Eduardo. Hello. Well, I think you just need to talk before. Yes. You just introduced yourself before. So for everybody who missed it, watch the recording of the awesome talk of Eduardo beforehand. And Eduardo, so I would have my first question to you.

Before we get into the detail question, I thought we start with the complicatest question of them all. What is state management? State management is a strategy you use to deal with a state that is outside of components in your application. That's the key point. The clue is in the title. So everything that doesn't belong in a component, everything that goes beyond the component life, everything that, it doesn't have to be, there is no rule about the features or the business, the logic belong to, but it's about specifics is state that cannot be in one component.

2. State Management Evolution in Vue

Short description:

State management in Vue three introduces new composition API with reactivity package. Vue X version four maintains compatibility with Vue three. PNF by Eduardo and Vue X five are upcoming global state management tools.

It has to be outside. So you need something to manage it. You need a way to, strategy to manage that state, interact with it, read, write, et cetera. Would you then say that state is always something that is global or can there also be a local state? There is a local state. Yeah, components have local state, right? Makes sense. Okay, and since there is now Vue three, if I think of Vue two, I think state management store, Vuex, has something changed? And I know we saw the talk before about Pinya, but has something changed in general since we have Vue three when it comes to state management in Vue? Who should answer this? Kia. Okay, okay. So in terms of state management, if we include Vue three inside the state management, there's a new composition API. So this composition API, and more specifically W3 has this new reactivity package. And actually you can use this package outside of Vue. And this provides a basic Vue reactive system. And it does pretty much the same thing that you used to do in Vue two. In Vue two, you had options API, you define like data property and he becomes reactive. But now you can import reactivity package independent from the Vue. And you can define many kinds of reactive objects like ref reactive, computed and such. So that's one big new thing on the Vue. In terms of Vue X, actually there is a Vue X version four which is compatible with version Vue three. But it hasn't changed anything. Just a slightly difference between Vue two version is the installation logic, I think. But other things stays quite the same. So in terms of Vue X at the moment right now, there is no big difference from the Vue two. In other words, you can migrate Vue X three to Vue X four pretty easily. You can just straightforward. But in terms of what coming next is PNF. It's currently created by Eduardo and that's the new thing. And also Vue X five, these two share the very same thing, but this is the new thing coming to the Vue three as a global state management tool. All right. We now said, I think Pinya already 10 times. And I will ask the question to, and like for everybody who hasn't seen the talk before and to say in one or two, three, five sentences what it actually is. But what I would like to know, so in Vue two there was just Vue X for me as a go-to method to have state management.

3. State Management Techniques in Vue

Short description:

Trying different approaches with Vue, considering Pinia as the future alternative to Vuex for simplicity and effectiveness in global state management.

I tried, as I said in the beginning, some weird things beforehand. Like I actually tried to misuse the root element of Vue to add global variables there until I found out that, oh, this is not reactive. And I did a lot of prop trailing in the beginning. So this things where you have props, props, props way better with Vuex. But when I start now a completely new project with Vue3, would you go immediately for Vuex? Maybe for Pinia which we'll talk about? Or is there also different other new techniques we don't know about yet? Kia?

Well, at the moment, if you can, I think you should start with Pinia when you need a store, because that's the future of Vuex or that's the direction where Vue is going. But also why I recommend Pinia is that it's very simple. And I think it's the simplest form of global store that Vue provides, and with all the server-side rendering support, and devtool support, and everything out of the box. And I'm not saying other state management tool is bad options or not suited for Vue. But it's just other state management usually is much more complicated, even like Vuex4.

So maybe the difficulty level is Pinia, Vuex4, and XState and other stuff. So I think for the first step, I think people should reach out to Pinia. And if they need more powerful or, I should say, more opinionated state management system, then they can go reach out. If they want a Flux architecture, you can use Vuex4. If you need more like state machine kind of state management, you go to XState or LovatzJS. So I think the first choice should be Vue or Pinia. And hopefully, in the future, maybe Vuex5. I don't know. But if you go with Pinia, I think you're on the right path.

4. Understanding Pinia in Vue

Short description:

Exploring Pinia as a store library for Vue 2 and Vue 3, focusing on simplicity and scalability in state management solutions.

That's a great answer. So we stop dancing around the word Eduardo. What is Pinia? Pinia is a store alternative. So it's a library for Vue. It's like Vuex. It's a store library. It's not Flux. It's much more simpler. It's even less opinionated than Vuex, which is already not. I mean, Vuex4 and below. And it was initially an experiment that was two years ago to have something, so a store that has an API that works with TypeScript out of the box, using the composition API. So it started as something for Vue 2. And today it works with both Vue 2 and Vue 3. And it was my vision of how to have a state management solution that can scale up. So it can be used for applications that grow because you can have all different stores, but it can also scale down in the way that, as Kia says, it's simple, it's very simple. So you can really put it in a small application and you don't get a big overhead about it. I would even go further than Kia and say that you can even start by not using anything. You can start using, if you don't have service at rendering, then you can just use a reactive object and some functions, and split, as you were saying, the reactivity packet. I mean, you don't import from the activity, from you if you're in a new application.

PINIA is a store library for Vue 2 and Vue 3 with a focus on development experience. So now that it has, the API for defining stores is the same for Vue X5, or at least the RFC, we are pretty much aligned. Like I think maybe the name, the key ID, because we're passing as the first parameter, everything is the same. Like you could copy paste the code and have the same, just change the import and it will work. And then there are differences with Vue X5 is the plugin architecture, the hot module replacement, but probably Vue X5 will have the same. And then the testing, but I think that it will be very easy to keep something compatible at least for the testing. The plugins, I think we need to go for an RFC, and then I will adapt PINIA so that at some point, either PINIA offers something on top of Vue X, either it becomes Vue X. So it doesn't have to be maintained anymore. So for very small applications, so I'm not sure if I'm the only one, but I am using Vue.js without server-side rendering. I kind of use it as the modern jQuery at some points. I'd like to have just this plain reactive property that I use and shares local and global state with it through different components.

5. Comparison: Vue X vs. Pinya

Short description:

Discussing the differences between Vue X and Pinya in terms of API alignment and simplicity, emphasizing the adaptability and future development plans.

What I thought about as I heard, okay, there's now Vue X and there's now Pinya. Eduardo, are you afraid that there could be a react like thought over that like with Redux and MobX, like the team Redux and the team MobX? What could we all do to not have two teams, but just to say, okay, some people work better with Vue X and some people work better with Pinya? No, because the difference between MobX and Redux or what was the other one you said? Redux? Are fundamental, like what's the term in English. They have a fundamental difference in the way you think and organize. The API is completely different. Vue X and Pinya have the same API. The aim of Pinya is to find a way to use, to benefit from the composition API. And the reason Vue X is so simple or it's aiming to be so simple is because you don't need that much. And Kia is working on the SSR, which is one of the most complicated part, I think, like the iteration part of Revs, reactive objects. That part is not used by Pinya right now. So I think that's some... Even that part I will be able to use the same as Vue X. If Vue X goes in that direction, it's gonna be better than Pinya. It's not gonna be worse. It's either gonna be as good as Pinya or better. So I'm gonna adapt Pinya to match that. So it's not like a person who does a store with Pinya has something to learn with Vue X5, which is not a case for MobX and Redux because they are fundamentally different in the way you even think about it. And also, you don't really have to learn much. Like, when you see a store defined with Vue X, Pinya, state getters, actions, is pretty self-explanatory. If you use the function API, you're just creating a component that doesn't render anything, right? It's like a setup function. So you just create Redux computer inside your watch, whatever you want. Understood. So we are looking in a bright future without wars between two teams. Yeah. Eduardo, what would you answer, or what would you tell people if they are now in their company talking to their colleagues, having like a sure fix and pitching for using from now on Pinya instead of Vue X on this certain project? If someone then says, yeah, but it's something new, I don't know if there are already best practices. And I think it's just like, there's one guy implementing it and what if he decides to do something else now? So it's not new per se. It's two years old. I was planning on releasing a stable today, but all the things came up, so I didn't do it. The reason so it's not new. You have much better type screen support. Like you're gonna have a little easier life developing with Vienya than with UX3 and 4.

6. State Management Flexibility and App Size

Short description:

Exploring the flexibility of using Vienya with existing code bases, the possibility of partial migrations, and the relevance of state management for apps of varying sizes.

And we know that. So unless you have, the only reason to not use Vienya is you have an existing code base. So that's what UX4 exists for. It's because that way people can migrate to Vue 3 without having to change the store. So that's very important. But you can actually use both at the same time. They do not conflict. So you can do a partial migration. I've seen applications that do a partial migration. Yeah, a partial migration so they use both. Honestly, as we say with so many things, give it a try. Just look at the dogs and try it by yourself. And when you're gonna see all those things also conflicting without you having to type anything, you're gonna start enjoying the library and start wondering, okay, why we didn't start before using this? It also works for Vue too, by the way.

Great. So also to get the next question out of the way, as well Vuex, as well Pinja is working for any kind of sizes for the projects as I understood it now from tiny applications to big e-commerce pages. So there's also not a decision like, okay, I take Vuex for big, big applications and Pinja just for small ones. Yeah, no, it's the same. Another thing. I don't know what you mean, what you think. I think so. One or the other. Yeah, it's all depends on what you're building, really. And when we talk about state management, I think people tend to think that for large apps, we need state management. And for the small apps, we don't need state management or you shouldn't use state management. But I partially disagree with this because I agree that more the app becomes bigger, it becomes more complicated. So there's a high chance global store might be needed, but it's not 100% the case, right? And even if you have very, very small application, it could have simple global state, for example, like application config, or maybe some session information, like user who's logged in right now or not. So for those information, I think even if your app is so small, you still need store. And in that situation, I think Pinior or BX Five, and those small simple state management gets very handy, you can just use it and you get all the benefit. And even if your app becomes so huge, if your app is maybe, let's say, like very functional app, where there isn't much of a state, all you do is calculation, and even though the app is huge, there's not so many state in the application, then maybe you don't need any state management, right? So it really depends what kind of state management your application is requiring. And I think Vue is currently moving to what to become more simple.

QnA

State Management Transition and UI vs. Data State

Short description:

Discussing the transition from Vue local state to Flux architecture, emphasizing the importance of choosing the right state management approach based on project needs, and highlighting the differentiation between UI and data business logic states.

So currently Vue 2, when you need global store, we need to use VueX, and VueX currently has this Flux architecture. So there's a huge, this tech gap, right? You go to Vue local state to Flux architecture. So now you have to learn Flux architecture to just do super simple store management. But we're trying to lower this barrier. For PINIA and VueX 5, we're going to make the state management much, much simpler and easy to use. But not necessarily, we're saying that Flux architecture is bad or anything. It's just Flux architecture is more opinionated, it has more rules. It has certain ways to use the store, and it might be best fit for your project and maybe not, but the key is you have to choose for your project, right? What kind of management for state management you need. So I think it's matter of the choice, and we're trying to add a simpler choice in between going to the full Flux architecture to simple store management. And I think it's going to make this store ecosystem much, and the learning costs and everything much linear, I think for the views free.

Moving on from the decision, everybody out there use what you like. Try it out both of them, and also let us know on Twitter and everywhere else what you will go for. But since we're now talking about Ikea, what you just said about sometimes very small applications need state management, and sometimes bigger ones might not need it at all. Do you differentiate between UI state and data business logic state, like if you fetch something from endpoints, do you store it in a different place when your UI logic, like, okay, it's loading, it's clicked, it's shown, it's user logged in, et cetera?

Well, I do differentiate the data and UI state, but I think it's sometimes hard to differentiate within the store. For example, I tend to manage all the UI state within Vue component, but for example, there is some global UI component, like, for example, like snack bar, shown on the red light button on the window, like notification stuff. And those things are like global UI, because the notification happens, and no matter what you do on the UI, it has to stay there. So you can't really put this state on the component, right? You need to have this state on the store. In that sense, some UI state has to go into store sometimes, but other than that, most of the time, I always try to put UI state on the component and never put them in Vuexel store, unless it's absolutely necessary. And for the data, because I'm the author of Vuexel, I usually put all the data, for example, like users or posts or any kind of data into store, because usually those data comes from the server side, what you call the API, and you get the data from the server.

Server-side Data Storage and Cache Usage

Short description:

Discussing the importance of storing server-side global data in the global store, preferences in accessing store data, including client-side cache usage for improved user experience, and considerations for managing data layers efficiently.

And when you think about it, the server is global state, right? You don't know what you're going to get until you hit API. So for me, it really makes sense to store that data to the global store because it is global state, I mean, on the server side state. But I think it's all down to preference, but that's what I do often with my own project, yeah.

Eduardo, would you like something to add to the question? I agree with the UI state, I can do the same. Sometimes you, in very specific cases, you go out of the component, but as much as possible, in some of the components, API calls depends on the application. It means that some API calls, you can cache them and use a local cache, so you can do a stairwell revalidate things to make the application look as if it's really fast. I mean, or as if you have the old data immediately and you request again, and so it's very smooth.

But very often, I just do the components for simple apps. And then if I have bigger traffic or other things, I do add a cache layer. Usually, that cache layer. So there are multiple layers of cache. Cache is a really complicated topic. So you have also the server cache, which is way more important than the client-side cache. But you can also use some client-side cache to improve the user experience. And I think that I always start outside of the server layer store if I can, unless I need to use that state right away in multiple places or multiple pages. User page, for example.

Optimal Data Access in Vue Components

Short description:

Discussing whether to access the store in each child component or pass data as props from the top-level component, considering the complexity of managing store data in child components, API call strategies for different application types, and the preference for passing data as props rather than accessing global state directly in child components.

Okay. So next question from real projects out there. If you have a component and you get something from the store there, if it's UX, linear, or composable, whatever. And then you have some couple of child components which also need one object of the store. Would you rather, in each child component, access the store to get the same global object again? Or would you again, then use a property to pass this object down to have a component, a child component that doesn't know that there is a store that exists here. You already have, I see you. Very, very good question. And I really don't have a straight answer to this. I would love to hear what Eduardo thinks about this and how you do it in your project. But usually I prefer to fetch all the store data on the page component. So you know, on the top level component and pass down those data to the child component as a props. But sometimes you might want to have, you might want to access store from the child component. And for example, when you're building like dashboard page, right, and you have many different kinds of data shown in the dashboard. And in this kind of case, if you fetch all the data on the parent component, then the parent component becomes really huge because this component has to fetch all the data for its own child component, right? So in these kinds of cases, it's much simpler to create child component that fetches its own global state. And by the way, it goes exactly same to the API coding problem. Should child component call API or the parent component call API and passed on the props. I think it's the exact same problem but I still don't know the answer but I prefer to pass down as a props but I'm still exercising whether it's good idea to access those global state on the child component or not. I really don't know. What do you think Eduardo? I think that most like 80% of the applications they do a few like one, two API calls and you do that on the page level. You can have other very complex applications but that's not even 20% like 1% of the application or 5% of the applications. And usually they optimize their API a lot. So you can do a lot of API calls and then you do those API calls in a more localized fashion. So you go into the child component. I usually go, in my applications I don't have that complexity, I think of doing that many API requests. So I do one other page level. I think it's way easier to handle. And if I can pass it as a prop, I pass it as a prop. So I don't even need the store. I avoid doing what I've seen called as prop, grading. So basically I don't like to create an artificial prop in a component just to pass it down to another component.

Efficient Data Handling and VueXORM

Short description:

Avoid unnecessary props in components, consider using store for complex applications, and the benefits of having data centralized in the store. Exploring VueXORM for ORM-like API access to store data and addressing the issue of duplicated data in nested JSON trees.

I don't create a prop in a component if you don't use a prop, the component. In Vue 3 and with a composition API you have an easier access to inject provide but I rather avoid them for most cases. Like it's more, I rather use it for UI state and components like an interacting, for example a time component, maybe that, but not for that time. Like not for the things that you fetch from the API. And if you already have complex that have that and have a very complex application, for example you might have maps overlap or things that overlap with maps maybe you have multiple, it could be seen as multiple mini applications running together and interacting with each other. Then the story is probably easier to see. It's probably easier to have the store than using a provide or having multiple props or doing the fetching from the children component. And the good point about having the data on the store is that you can actually ask the component to fetch. Also the children to fetch is not as much as a big deal than not having a store compared to only using that saying, okay I can only do fetching in my pages. When you don't have a store, it's usually a bigger deal but if you have a store, it's easier to allow yourself to do the fetching from different places not only just the page component. It's always it depends the answer anyway but most of the cases it's true. Page. Yeah. But that was good point. Having a store makes it easier to access the data across the component. I mean, that's the point of store but there's one big advantage over passing stream down the props, I think. Yeah. Yeah.

What I like is this idea of if you just pass a prop through but you don't even use this prop in this middle component is a good rule to see, okay, maybe there is a new tree that opens in this tree of components where it makes sense again to access a store again and live there in your own world. What I completely switching the topic now there are something called VueXORM and I'm not sure if it's known by everybody. So Pia, what is this framework? When do I need this? What does it do for me? Okay, so VueXORM is as name suggests, it gives a ORM like API access to store. So if you ever used like Lalabel or Lubion Rails, they all have active records or Lalabel has Eloquent. So they're ORM object creation mappers. So you can do things like user.find and you're passing the ID and you get the ID from user from database friend. And I wanted to do the pretty much same thing on the front end because I couldn't stand the idea of having duplicated data inside store. For example, you're fetching for, let's say you are trying to fetch post data, blog post data from the server. And maybe the post has also field and also is a user object, right? And maybe the post has a comments and maybe comments has also as well and also it's also a user object, right? So when you fetch these kinds of nested JSON tree, there's a good chance you have duplicated data everywhere. So you have same user, but in a multiple place. If you store this data in the store directly, there are gonna be three different user, but actually those are the same users. And if you want to update this, it's going to be really hard, right? Because you have to look into every single record and find out if those had the same ID or not.

Efficient Data Management and Audience Engagement

Short description:

Exploring VxOrm for deduplicating data in Vuex, controlling data fetching, and updating entities efficiently. Consider VxORM for apps with complex relationships and models like Xdate. Expressing gratitude and inviting audience for follow-up questions and post-event interactions.

By using VxOrm, what it's gonna do, it's going to deduplicate all the duplicated data. And it's gonna distract all the entities from those nested tree and store those data into the Vuex, like database. So if you say posts having comments having users through VxOrm, the outcome inside Vuex store will be post users and comments separately. And when fetching the data, you can query those data as if you're using like ordinary or like, say you wanna fetch all the comments with users or all the comments with its parent post. So you can control the fetching and stuff, and the most importantly, if you update one user object, all of the user object, that referencing that user, it's going to update it. So for example, in that blog post, if you change the name of user on any comment, then that user displayed on the page will all the users name is going to be updated. So that's what I wanted to achieve with VxORM. It's quite complicated, but if your app is using like lots of relationships, if your app has lots of models and relationships and complicated stuff, then I would say it could be a good choice for your project, you know.

Yeah, the description also reminded me somehow like Xdate. So also something that sounds super complicated, but if you need it, you need it. And then it is pretty, pretty cool. I also talked once to the author of Xdate and he said, yeah, it's kind of complicated. You know, you have to sit down for one weekend and learn it. In what kind of weird world are we living that someone says it's complicated, you have to sit down one week to learn it.

Unfortunately we are out of time now. I want to thank both of you for your time and your knowledge. If there's anything, I will just tell the audience now to ride you on Twitter for every follow-up question. And of course, follow us here on Discord and join us for the after party later for all of the other questions. So thank you again for your time, Kier and Eduardo. Thank you, Vanessa.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Everything Beyond State Management in Stores with Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Everything Beyond State Management in Stores with Pinia
Top Content
State management is not limited to complex applications and transitioning to a store offers significant benefits. Pinia is a centralized state management solution compatible with Vue 2 and Vue 3, providing advanced devtools support and extensibility with plugins. The core API of Pinia is similar to Vuex, but with a less verbose version of stores and powerful plugins. Pinia allows for easy state inspection, error handling, and testing. It is recommended to create one file per store for better organization and Pinia offers a more efficient performance compared to V-rex.
Using useEffect Effectively
React Advanced 2022React Advanced 2022
30 min
Using useEffect Effectively
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Welcome to Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Welcome to Nuxt 3
Top Content
Nux3 has made significant improvements in performance, output optimization, and serverless support. Nuxt Bridge brings the Nitro engine for enhanced performance and easier transition between Nuxt 2 and Nuxt Read. Nuxt 3 supports Webpack 5, Bytes, and Vue 3. NextLab has developed brand new websites using Docus technology. Nuxt.js is recommended for building apps faster and simpler, and Nuxt 2 should be used before migrating to Nuxt 3 for stability. DOCUS is a new project that combines Nuxt with additional features like content modules and an admin panel.
React Query: It’s Time to Break up with your "Global State”!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: It’s Time to Break up with your "Global State”!
Top Content
Global state management and the challenges of placing server state in global state are discussed. React Query is introduced as a solution for handling asynchronous server state. The Talk demonstrates the process of extracting logic into custom hooks and fixing issues with state and fetching logic. Optimistic updates with mutation are showcased, along with the benefits of using React Query for data fetching and mutations. The future of global state management is discussed, along with user feedback on React Query. The Talk concludes with an invitation to explore React Query for server state management.
One Year Into Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
One Year Into Vue 3
Top Content
Vue 3 has seen significant adoption and improvements in performance, bundle size, architecture, and TypeScript integration. The ecosystem around Vue 3 is catching up, with new tools and frameworks being developed. The Vue.js.org documentation is undergoing a complete overhaul. PNIA is emerging as the go-to state management solution for Vue 3. The options API and composition API are both viable options in Vue 3, with the choice depending on factors such as complexity and familiarity with TypeScript. Vue 3 continues to support CDN installation and is recommended for new projects.
Utilising Rust from Vue with WebAssembly
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilising Rust from Vue with WebAssembly
Top Content
In this Talk, the speaker demonstrates how to use Rust with WebAssembly in a Vue.js project. They explain that WebAssembly is a binary format that allows for high-performance code and less memory usage in the browser. The speaker shows how to build a Rust example using the WasmPack tool and integrate it into a Vue template. They also demonstrate how to call Rust code from a Vue component and deploy the resulting package to npm for easy sharing and consumption.

Workshops on related topic

Rethinking Server State with React Query
React Summit 2020React Summit 2020
96 min
Rethinking Server State with React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
The distinction between server state and client state in our applications might be a new concept for some, but it is very important to understand when delivering a top-notch user experience. Server state comes with unique problems that often sneak into our applications surprise like:
- Sharing Data across apps- Caching & Persistence- Deduping Requests- Background Updates- Managing “Stale” Data- Pagination & Incremental fetching- Memory & Garbage Collection- Optimistic Updates
Traditional “Global State” managers pretend these challenges don’t exist and this ultimately results in developers building their own on-the-fly attempts to mitigate them.
In this workshop, we will build an application that exposes these issues, allows us to understand them better, and finally turn them from challenges into features using a library designed for managing server-state called React Query.
By the end of the workshop, you will have a better understanding of server state, client state, syncing asynchronous data (mouthful, I know), and React Query.
Monitoring 101 for React Developers
React Summit US 2023React Summit US 2023
107 min
Monitoring 101 for React Developers
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
If finding errors in your frontend project is like searching for a needle in a code haystack, then Sentry error monitoring can be your metal detector. Learn the basics of error monitoring with Sentry. Whether you are running a React, Angular, Vue, or just “vanilla” JavaScript, see how Sentry can help you find the who, what, when and where behind errors in your frontend project. 
Workshop level: Intermediate
Using Nitro – Building an App with the Latest Nuxt Rendering Engine
Vue.js London Live 2021Vue.js London Live 2021
117 min
Using Nitro – Building an App with the Latest Nuxt Rendering Engine
Top Content
Workshop
Daniel Roe
Daniel Roe
We'll build a Nuxt project together from scratch using Nitro, the new Nuxt rendering engine, and Nuxt Bridge. We'll explore some of the ways that you can use and deploy Nitro, whilst building a application together with some of the real-world constraints you'd face when deploying an app for your enterprise. Along the way, fire your questions at me and I'll do my best to answer them.
Vue3: Modern Frontend App Development
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Modern Frontend App Development
Top Content
Workshop
Mikhail Kuznetsov
Mikhail Kuznetsov
The Vue3 has been released in mid-2020. Besides many improvements and optimizations, the main feature of Vue3 brings is the Composition API – a new way to write and reuse reactive code. Let's learn more about how to use Composition API efficiently.

Besides core Vue3 features we'll explain examples of how to use popular libraries with Vue3.

Table of contents:
- Introduction to Vue3
- Composition API
- Core libraries
- Vue3 ecosystem

Prerequisites:
IDE of choice (Inellij or VSC) installed
Nodejs + NPM
State Management in React with Context and Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
State Management in React with Context and Hooks
Workshop
Roy Derks
Roy Derks
A lot has changed in the world of state management in React the last few years. Where Redux used to be the main library for this, the introduction of the React Context and Hook APIs has shaken things up. No longer do you need external libraries to handle both component and global state in your applications. In this workshop you'll learn the different approaches to state management in the post-Redux era of React, all based on Hooks! And as a bonus, we'll explore two upcoming state management libraries in the React ecosystem.
TresJS create 3D experiences declaratively with Vue Components
Vue.js London 2023Vue.js London 2023
137 min
TresJS create 3D experiences declaratively with Vue Components
Workshop
Alvaro Saburido
Alvaro Saburido
- Intro 3D - Intro WebGL- ThreeJS- Why TresJS- Installation or Stackblitz setup - Core Basics- Setting up the Canvas- Scene- Camera- Adding an object- Geometries- Arguments- Props- Slots- The Loop- UseRenderLoop composable- Before and After rendering callbacks- Basic Animations- Materials- Basic Material- Normal Material- Toon Material- Lambert Material- Standard and Physical Material- Metalness, roughness - Lights- AmbientLight- DirectionalLight- PointLights- Shadows- Textures- Loading textures with useTextures- Tips and tricks- Misc- Orbit Controls- Loading models with Cientos- Debugging your scene- Performance