Front-End TypeScript Migration at Sentry with Priscila Oliveira

Joe chats with Priscila about how Sentry converted 100% of its frontend React codebase from JavaScript to TypeScript.

Show Notes

Priscila is a front-end software engineer at Sentry. She began her work in the open-source community shortly after returning to Vienna, Austria, from Prague. In 2019, after noticing that the number of front-end bugs being shipped to production was no longer acceptable, Priscila and her team at Sentry realized that many of these issues could be prevented by aesthetic analysis and type checking. At this time, they began investigating the possibility of a TypeScript migration.

After coming up with a migration strategy, they made a decision that the best thing they could do in the beginning would be to educate all of their developers in TypeScript and offer all of the resources to achieve this as effectively as possible.

As they were converting existing files, all new files needed to be written in TypeScript to avoid what she says would have been an “endless” migration.

In total, the migration took place over the course of about two years.

In parting, Priscila offers two pieces of advice for anyone considering a TypeScript migration - the first is to have a plan in place, create a strategy, and know where you’re going to start. She also states that it can be very useful to utilize ESLint. Define a standard set of rules that can be adopted across the team, encouraging consistency throughout the migration.

Show Notes

Transcript

[00:00:00] Joe Previte: Hey, how's it going? Hey, I think the first thing that would be helpful for the audience would be if you could tell us a little bit about your background, what you do at Century and all that.

[00:00:11] Priscila Oliveira: Yeah my name is Priscilla. I am a Brazilian software engineer. Living in Austria, in Vienna, Austria. I'm working at Century for over two years now, and at Century I'm a front end engineer working on the interface part of the product using reactive JavaScript and other modern technologies.

[00:00:36] Priscila Oliveira: At Century, I'm a part of the Ingest team, so we are responsible for the ingestion pipeline. Now we are creating a new team called Telemetry. So it's a subset of this team and we will be responsible for for providing actionable data for our clients. When I lived in [00:01:00] Brazil, I, I was full stack engineer, but since I moved to Europe I moved in 2015.

[00:01:09] Priscila Oliveira: I decided that I'm gonna pursue my career only focus on only focusing on the front end because this is what I'm really passionate about. And yeah, so I, in Europe I worked at, in Austria before moving to Prague. In Austria, I wanted to do my masters, but after I moved to Prague for personal reasons that I also work at, with front end, with Reactor, that is where I had the opportunity to learn, react.

[00:01:43] Priscila Oliveira: Like everything, everything changes so much. Like from when, from the time I started with Jaque a long time ago, and so I learned reacting Prague. And after a while, I decided that I'd like to move back to Vienna, [00:02:00] Austria, and yeah. And after some years I, I got a job at Century and yeah,

[00:02:07] Priscila Oliveira: So here is where I am today.

[00:02:10] Joe Previte: Nice. And I think if I read correctly, you do some open source as well, right?

[00:02:17] Priscila Oliveira: Yes. So when I moved to Vienna back to Vienna from pr. I wanted to integrate in the community here the engineering community, the front end community in Vienna. And I saw that they, that people organize this react vie top and the, that is also the Vienna top.

[00:02:39] Priscila Oliveira: And I decided to attend those, these mid tops to integrate and expand my network. Coincidentally back then I'm not, I am not a kind of person who is very active on Twitter or linking, but that day I opened my linking. I check it my [00:03:00] messages and a guy wanted to connect.

[00:03:04] Priscila Oliveira: And I don't know why, but I accepted. I said, Oh, cool, if he looks like a very friendly guy, I'm gonna accept. And yeah. And in the evening after work, I attended them at tap. And usually like you go and there are drinks before the presentations. And then I saw this guy and I recognized to him and I said, I know this guy, he added me on linking today, and I approached him and I asked him, Hey so I think I know you, And we started talking and he, yeah, he's the maintainer, the main maintainer of a Verda two, an open source project I highly recommend.

[00:03:54] Priscila Oliveira: And Yeah, we talk it a lot. And after we, we connected, no, [00:04:00] we started to, after the midap, we became friends. And he was telling me that I should contribute to open source, That I would never regret that it would be good for me to learn and to to know more people. After a while, I decided, okay, do you know what I would like to contribute?

[00:04:22] Priscila Oliveira: I don't know much about open source, but I would like to try. Yeah, he gave me all the support that I, all the support I needed back then. And my first request, he remember it was just a very silly change. It, I just changed it to one line and it was just about updating a yes link rule. And yeah, that was it.

[00:04:45] Priscila Oliveira: And then I started and I really like it and I was learning more about the project and I work it a lot on the UI of Ver. It's a private n pm proxy registry, so [00:05:00] it really saves your as many times because if you are working with dependencies, like if you wanna publish a library for instance, because once you publish.

[00:05:10] Priscila Oliveira: It's like to the open thing, like to npm it's gone. That is nothing you can do to undo your what you have done. And with Verto it's cool because like you can run everything locally, even if you don't have internet, like you can still install your packages, you can cash them, and it's really cool.

[00:05:34] Priscila Oliveira: And yeah, I worked it a lot on the UI and yeah, I really enjoy it. .

[00:05:40] Joe Previte: That is awesome. That's really cool. We'll see if we have time later to dive into that. But I know a lot of people are here listening today cuz they're interested in the migration at Century, right? Yeah. From JavaScript the front end side of the code base to type scripts.

[00:05:56] Joe Previte: So let's let's dive into that.

[00:05:59] Priscila Oliveira: [00:06:00] Sure, let's do it.

[00:06:01] Joe Previte: Yeah. So I guess let's start from the beginning. Where, like where did the idea of migrating to type script come

[00:06:07] Priscila Oliveira: from? So back in 2019, we were shipping more frontend books than was acceptable. After looking at the under learning causes of this incidents, it became clear that many of these bugs could have been prevented by aesthetic analysis and type checking.

[00:06:30] Priscila Oliveira: And that year during our Hack week event, A group of colleagues. Each is the introduction of type script. And after that presentation, we fail to that type script type script, sorry, would be worthwhile investment for Century that would ultimately pay off in the long run. So we discount there other solutions out there, life flow, but we felt that type script was stronger and a better.[00:07:00]

[00:07:00] Priscila Oliveira: Because of several reasons. For example several classes of books could be detected and eliminated during compilation. We could improve the developer experience through editor integrations such as auto completion, faster code navigation, and in line compiled feedback. We could reduce the need for API documentation as type notations help produce self-describing code.

[00:07:30] Priscila Oliveira: Type script has an active community. We say clear and maintain it development roadmap in addition to rapid releases. And many of the libraries we use at Century already had type definitions like React, for example. Type script can be adopted incrementally. That meant we could start writing new codes with type script and incrementally convert over time.

[00:07:57] Priscila Oliveira: So those were very [00:08:00] good points for us back then. And that's why we decided to go for with type

[00:08:05] Joe Previte: script. And what's this hack week you mentioned?

[00:08:10] Priscila Oliveira: Hack Week is an event that happens once per year, So it's a week we can set aside all the work, like all the usual work we have at Century and we can work on anything else we want.

[00:08:24] Priscila Oliveira: Things you usually don't have time to work on things you'd like to improve, or it can be coding, it can be a completely different things. A colleague at Century she create ear earrings with the pattern, with the colors of Century. Like it can be anything, and so it happens once per a year.

[00:08:43] Priscila Oliveira: And yeah, we have the opportunity to dive in anything we want and it's pretty cool. And in many projects we have at Century they were born during head quick, like tap scripts. We also had the dark mold and [00:09:00] yeah, many orders

[00:09:01] Joe Previte: That's cool. That's a cool initiative that you do that, once a year and you have the freedom to you can, it could be technical, right?

[00:09:07] Joe Previte: Like a type script thing, or less technical or non-technical at all. With the eing. So that's really cool. Yeah. Yeah. Okay, so hack week comes, you're you're pretty convinced or I guess the team that was looking at it was convinced, Hey, let's try type scripts. So hack week comes, you add type scripts, I guess compatibility to the code base, and then, what happens next.

[00:09:31] Priscila Oliveira: So there, there were some concerns. About adopting type scripts. It was not like I think back then type script. It was not amount of the winners of the hack week. Okay. But we thought that this idea was very good and it would bring a lot of benefits to st and towards developers.

[00:09:52] Priscila Oliveira: We decided to to talk and discuss more this idea during our front end CSC meetings. [00:10:00] It's a meeting that happens every two weeks at Century and Yeah. And after discussing a little bit like the concerns and trying to clarify all the doubts and and difficulties we would have we decided to adopt a type script to elaborate more about the concerns.

[00:10:20] Priscila Oliveira: Like the complexity this would bring to the build process was one of them. For instance, like the learn curve is high, was high, is high until today. And contributors to the century front end would have to become familiar with type script. We wanted to hear write components so that they are 100% typed correctly.

[00:10:43] Priscila Oliveira: Fixed product and application bug exposed it by type components would have been, would have to be done. JavaScript and type script would have to live together in our code base for a while. A lot of development was going on [00:11:00] and we. We didn't have a lot of experience as a team in a productive way with type script.

[00:11:07] Priscila Oliveira: So we were concerned about how it would impact velocity. We also worried about using some tools to block the creation of new file in JavaScript. Something we didn't need to do. As our education enforce and social agreements help it prevent new type script, new script from being created.

[00:11:27] Priscila Oliveira: So these were some concerns we had back then. , But I wasn't here yet, part of Saint Re proposal when the transcript proposal was discussed, it and accepted, but I'm pretty sure this was discussed during our TST meeting. And they tried to clarify all the doubt and and to come up with a very good They're good solutions and a good strategy, migration strategy.

[00:11:56] Priscila Oliveira: Yeah.

[00:11:58] Joe Previte: Okay. And so you have the [00:12:00] committee which meets every two weeks. That's front end architecture, right? Yes. Yes. Okay. So they're the kind of are they the decision makers then at Century? Like they're the ones who would say yes or no to type scripts or who has the final say,

[00:12:15] Priscila Oliveira: yes. So it's usually like that when we wanted to introduce something new to same dream. A anything like, like it's very big and it's gonna be very impactful. We usually try to create a proposal and this proposal has to contain The description, why this would be for Century what problems this is gonna solve and estimations and like it has to be as complete as possible.

[00:12:47] Priscila Oliveira: And we try to discuss these proposals during our meetings and usually the. Like the managers, like the high level, like if it's gonna be something that [00:13:00] it's really impactful, we usually try to also bring this topic to them. And, but it's usually like us, we decide and that's it.

[00:13:12] Priscila Oliveira: But yeah, but it's, it like, if it's something really, for example Recently I also brought the reactive testing library to Century. . And it was a proposal. We discussed it a couple of times and f like I wrote a proposal and I think it wasn't as complete as. As it should have been before. And so it took a little while for people to accept this proposal, but after when I wrote to everything like why this would be BeneCo for us and All the arguments needed, like with examples, we have this, but if we change with this code, this is gonna be much better for [00:14:00] us.

[00:14:00] Priscila Oliveira: The developer experience is gonna improve performance is gonna improve and things like that, then it's, they, these are good arguments and for something really. For some really small migration. I think in one meeting, if it's a very good thing for Century and for us developers, then we are gonna, Okay, let's do it.

[00:14:23] Priscila Oliveira: We're gonna say, let's do it. But if it's something like big and it's gonna take like maybe one or two years, like the script took, Then we think that it's worth it to discuss it more and to bring it to to other people to managers, et cetera.

[00:14:41] Joe Previte: Yeah, get more stakeholders involved, yes. Yes, exactly. Okay, cool. So now, so just to recap, the point that we're at in the story is, the team has decided, yes, we're gonna do this type script migration. So now what? Now? How do you do it?[00:15:00]

[00:15:00] Priscila Oliveira: So we had to come up with the strategies , right? This is a good strategy. So back then when we decided to introduce type script, we needed a strategy to work through the.

[00:15:15] Priscila Oliveira: Thousand 100 plus files that needed conversion weeded our imports, ordering them by how frequently each model was imported. We used it at least to prioritize which models were converted first. By convert. Frequently use the module. We would be able to compute our games as we converted files.

[00:15:40] Priscila Oliveira: This approach worked it well in the beginning as some modules have dramatically more important imports than others. But because most of our modules have a fewer than 10 imports, we it cloud. Our next approach was starting from the from [00:16:00] leave node modules that are imported in one place.

[00:16:03] Priscila Oliveira: Converting and converting these values enabled us to accumulate progress more quickly. So yeah, like I. We had excel spreadsheet and avoid to avoid conflict conflicts. We would say ah, I'd to convert this file. Then I would assign this file to myself and we would convert it. But at some point, this just didn't work.

[00:16:30] Joe Previte: Why not?

[00:16:33] Priscila Oliveira: People didn't know, forgot about this file or we onboarded new people, it didn't work. Yeah. And, but then we were just doing it like, Okay, I wanna cover this file and then it up a request. But back to our strategy. So if the overall strategy was first. Educate. So in this phase, we [00:17:00] needed to let people know that type script was coming and we had to provide the right learning resources to help folks on board.

[00:17:10] Priscila Oliveira: Like it was the key of our migration. Education. Education, Yes. The second thing was new coding type. So in this phase, we needed to have all the development done in pipe script because it wouldn't work if we are converting like Like doing everything to convert the files, like putting, investing, a lot of efforts in converting files and people would add more and more JavaScript files.

[00:17:39] Priscila Oliveira: This wouldn't never, it would be a never ending story. We really had to have everything done in type script and the last. Point was like the conversion, like in this phase, all the new work could be done in type script, and we just have to, we [00:18:00] just had to work on con on converting files and then everything would just work out of the box.

[00:18:06] Priscila Oliveira: Yeah. Our most controversial decision was agreeing to not undergo any other major re factors until the code base was converted 100% to type script.

[00:18:19] Joe Previte: Yeah. Let's talk about that. Why? Why was that so controversial, or how did you make that decision and why was it controversial?

[00:18:30] Priscila Oliveira: Why we made this decision and why this was controversial.

[00:18:34] Priscila Oliveira: . We didn't want to have like our code base is really large and really complex. And of course there are a lot of things that we would like to improve other time, but we really have to focus on one thing. And back then when we were like migrating from JavaScript to type script we did, we decided to go slowly and incre and have this migration like incrementally.

[00:18:59] Priscila Oliveira: , [00:19:00] So Java script and type Crypto Red had to live together in the same code base for a while. This can be our read a little bit confusing for new join us, for instance. And if we would have another migration , running at the same time. With different libraries. One more library, more, two kinds of extensions.

[00:19:22] Priscila Oliveira: This would be even more confus confusing for everybody. And we really would like to put to, to to focus all our efforts only on the. Type script migration, like more people better, less confusing, and let's do it together. Let's work towards , the conclusion and then we can move on.

[00:19:46] Priscila Oliveira: And this was also something that motivated other folks. Like me, for instance to to have more files done as possible because I really wanted to use React hooks. [00:20:00] And I was like, in my previous job we already were using reactive hooks for a while and I really wanted to have at Century because I think they are pretty awesome.

[00:20:11] Priscila Oliveira: And Like a lot of, like the amount of code also to be reduced it, because always if you are working with classes all the time, you have to class this C amount and all this kind of stuff. Oh no, and I really wanted to like, for us, To have this possibility to use hooks, and we agreed that we would only use hooks after the convers, the conversion was completed.

[00:20:40] Priscila Oliveira: I just thought, Okay, let's do it. , let's do it. Let's convert as much as we can. And I remember that back then. Like. Towards the end of the conversion. Most of the people, they were really focused on product [00:21:00] goals, and so we didn't really have much time for the conversion. And a couple of folks said, Oh, okay.

[00:21:07] Priscila Oliveira: What do we think? We, we re, if we reserve only the. Friday for the conversion, like you work the whole week, but Friday is like a conversion day. So we talk it with our managers if that would be fine. And they gave us the green light, like the green signal. And so Friday was like conversion day for a couple of folks and it was really good.

[00:21:37] Priscila Oliveira: Like it helped it a lot. And yeah we also did things like during the TSC we said okay, who is gonna convert three me who's gonna convert four, like a house competition, and people, Yeah. And people got really excited.

[00:21:54] Joe Previte: I like that, it's it reminds me of an auction, like, all right, 300 to 300, Do I got a 400, 400?

[00:21:58] Joe Previte: It's do I have four? Who [00:22:00] wants to convert four files? So that's a cool approach.

[00:22:02] Priscila Oliveira: Yeah. Yeah, it was great. I really enjoy it. .

[00:22:07] Joe Previte: Yeah, no, especially I think you being motivated by hooks, right? Kind of seeing the end of the tunnel, right? Once we convert, I can finally start using react hooks.

[00:22:16] Joe Previte: This, that would motivate me too.

[00:22:18] Priscila Oliveira: Yeah. Yeah, of course. Yeah. And we have this at Century, we are only growing and we have a lot of different teams working on different parts of the product. But I like to think that we are a, like we front and engineers people work on the client side of the product.

[00:22:40] Priscila Oliveira: We are a big team, right? And we have a channel like in Slack the front end channel. . And during the conversion, we also had it's like a plugging, right? Always like it was always running and detecting. How the percentage that was missing [00:23:00] to conclude the job, like the type script conversion.

[00:23:02] Priscila Oliveira: Now it's 90% 91%. 95% and towards the end everybody was like, Oh, let's go back small and more and more. We are almost there. And it was like awesome. . Yeah, I think that was also very cool.

[00:23:18] Joe Previte: That's a really clever idea. Cuz I feel like you could apply that to I know today we're talking about migration, but let's say you're trying to reach a certain code coverage percent.

[00:23:28] Joe Previte: It's hey, 5% to go. Yeah, but that's awesome. That's a, I feel like that's a great way to motivate the team cuz it's oh, once you hit 70%, you're almost three fourths of the way. So it becomes

[00:23:38] Priscila Oliveira: more motivating. Yeah. Yeah. These integrations that they are really cool.

[00:23:42] Priscila Oliveira: Yeah. .

[00:23:42] Joe Previte: . . Okay. And so you've got the bot, you're moving you're chugging along. What about the last 30%? What was that like?

[00:23:48] Priscila Oliveira: I just remember that everybody was re really super excited and already talking about what we are gonna do next. And Century has many other [00:24:00] Ripple stories, right?

[00:24:01] Priscila Oliveira: We have our century the public one. The most of our work is public. It's open source, century. Has most of the code open source, but we also have other which are not open source. And we were thinking about already the other and we were thinking also about yeah, the introduction of hooks.

[00:24:28] Priscila Oliveira: People were doing experiments at people were thinking about also the state management libraries because this is something we really want to change at Century. I think we have three different state management libraries and we really wanted to. Have like only one, So people were already excited about what's gonna come next, what's gonna be next?

[00:24:54] Priscila Oliveira: But like towards the end, everybody was just so excited and they tried to [00:25:00] convert it as much fast as possible. Yeah, that was like this 30% , ,

[00:25:08] Joe Previte: Kinda like a sprint at the end there. Yeah. Yeah. And Okay. And you finally hit 100%. , how did the team celebrate? Oh,

[00:25:18] Priscila Oliveira: Like a lot of emojis everywhere.

[00:25:22] Priscila Oliveira: Like everybody was super happy. We don't believe it. We did it and Yeah, only celebrate was super cool. Yeah. This was also like during the pandemic, so we didn't have the chance to meet each other and to, I dunno, grab a beer and Yeah. But like you celebrate during our TSC meeting and also ay Yeah.

[00:25:50] Priscila Oliveira: Like here in Vienna, it's only me and other colleague. Working on the front end. On the front end is the meeting on the front end code.[00:26:00] And we have a lot of people in Toronto, Canada, and we have a lot of people in San Francisco. We still haven't had the chance to fly over and meet friends there or the colleagues there, but I will, I think you are gonna have this opportunity

[00:26:18] Joe Previte: soon.

[00:26:20] Joe Previte: Good. Yeah. Yeah. I feel once, once it's safe and everything and everybody's comfortable cuz how long did this effort take? In total,

[00:26:27] Priscila Oliveira: Oh my God. I think it took Over two years. Like in the beginning our estimation was very it was very, what's the word for it?

[00:26:39] Joe Previte: Like optimistic or eager. Yeah.

[00:26:41] Priscila Oliveira: It was very optimistic. Like we thought we were gonna finish it somewhere and like it like, Unfortunately this wasn't the case because other things happened and also because of product goals. And also we didn't want to just to migrate like as fast as [00:27:00] possible.

[00:27:00] Priscila Oliveira: You really wanted to do it in the right way. Okay, we have this file. Let me see what this file does. So let run this Let's compile this file, let run the application. Let's see what this does. What is this type? So we really try to do a great job here at Century. We don't like to brush.

[00:27:20] Priscila Oliveira: We like to quality is better than quantity. This is what everybody, all the time say the whole time, which do it with calm, but try to do as. Try to do your best,

[00:27:37] Priscila Oliveira: .

[00:27:37] Priscila Oliveira: Yeah. And the type script conversion took quite some some while, but I think we did a great job. Of course. In many cases we, we couldn't add the right type, so we had to use any but usually we left a to do okay, this type is really complex. I don't wanna lose more time [00:28:00] on it. I really wanna after investigate and see what's the correct type I should put in here. So people were less living to do check it later and so after the migration, we started to look at those to do and and trying to replace these, any types with the corrected types.

[00:28:23] Priscila Oliveira: Okay. But yeah, but we were trying to do the conversion as good as we could,

[00:28:28] Joe Previte: which is why it took like

[00:28:29] Priscila Oliveira: two years. Yeah. Yeah. And also it's a very large code base. It's very complex. Yeah.

[00:28:35] Joe Previte: Yeah. .

[00:28:37] Priscila Oliveira: Yeah. But yeah, even so we also have We rely a lot on CI to check everything for us if we didn't introduce any errors and things like that.

[00:28:48] Priscila Oliveira: But even sometimes some errors, they sleeping and they are merged and yeah. One of the cool things also about working at c that we can use our [00:29:00] own product to check the errors. If we. Break anything anything in our code base. We get an alert and we can check what's going on and we can fix it straight away, right away.

[00:29:13] Priscila Oliveira: And yeah.

[00:29:15] Joe Previte: So yeah, that's definitely an added bonus. . Yeah.

[00:29:19] Priscila Oliveira: Yeah. Yeah. We use our products the whole time. Yeah.

[00:29:23] Joe Previte: That's awesome. And so you've done the migration, so now. Are you using hooks?

[00:29:29] Priscila Oliveira: Yes. Yes, we are using hooks and there are still many higher order components that we would like to convert to hooks.

[00:29:36] Priscila Oliveira: . But yeah, we are getting that . There are many things we'd like to do, like it's yeah, that are many things I'd like to do, but like step by.

[00:29:47] Joe Previte: It's a never ending list. You gotta

[00:29:49] Priscila Oliveira: prioritize. Yes, of course. Yes. Yeah. Right now, for example, we are converting our tests to risk the test in library because we are, we would [00:30:00] like to remove enzyme to replace enzyme.

[00:30:03] Priscila Oliveira: And also we. We like, It's not officially, it was not officially agreed, but many folks, many colleagues, they are also converting the testing files to type script. And I find it very good. The education really worked it, People could see the real value of using pipe script.

[00:30:28] Priscila Oliveira: And I think it's also very valid for tests because it already helped me, for instance to. To find a test that was not working correctly. Like it was passing, but it was not doing a great job to us testing incorrectly. So type script to help with me to catch those errors and I'm very happy that we are doing that.

[00:30:53] Joe Previte: Yeah it's nice to have it. Yeah. It's one thing, right? Just to have it like on your source files, it's another to have it like [00:31:00] that extra layer of safety on your unit testing, your testing suite as well. Yeah, . Nice. That's awesome. Cool. I know we're coming close to time. So I guess two last questions.

[00:31:12] Joe Previte: First what advice do you have for teams who are considering migrating their code bases to type script?

[00:31:20] Priscila Oliveira: So I highly recommend going with the incremental migration because as I said it's better to understand how. Your components work and try to really add the right types. Like trying to, like quality.

[00:31:39] Priscila Oliveira: It's better than quantity, right? As I said before, and also because I work it on Verda the open source I told you about, and I remember that back then. I also converted to our. Front end our UI to type script. And I wanted to do it like I thought it was like a very small project and [00:32:00] I thought, no, why am able to do it at once convert all the files open a huge request.

[00:32:06] Priscila Oliveira: But , first this wasn't that great because this doesn't make the life of other contributors easy. They have to go through a lot of files, review the files, and does not create it's nice if you create very small requests, right? Second I remember that I was having a lot of problems and I was I was shipping some regressions.

[00:32:30] Priscila Oliveira: And I think if I would have done this incrementally, I would have paid more attention and everything would be, would have been better back then. So I highly recommend an incremental migration, even if it's a small project,

[00:32:49] Joe Previte: just because Yeah. You're less likely to ship progressions or make mistakes.

[00:32:54] Priscila Oliveira: Yes, exactly. Yeah. Yeah. . Yeah. If it's like two pages or , [00:33:00] something like that, like two ones. Okay. We at once. But if it's if it's a medium or a large project, please no not not try to convert it or just converted every type to any, all the time. And after go I don't think this is a good idea.

[00:33:15] Priscila Oliveira: I wouldn't have done that. I wouldn't do that. Yeah.

[00:33:19] Joe Previte: Yeah. I think that's good advice. And then lastly, where can people go to find you online? Where do you hang out? If they have more questions.

[00:33:29] Priscila Oliveira: So I'm not very active on Twitter, but I follow and I see more posts than I post usually.

[00:33:40] Priscila Oliveira: But I usually, I try to check my Twitter like twice per day. So Twitter, it's a good place to find me. Yeah, I would say Twitter.

[00:33:50] Joe Previte: Cool. Twitter. Yeah. Cool. We'll link your Twitter in the show notes. Yeah. Silla, thank you so much for coming on and talking to us about centuries migration.

[00:33:58] Joe Previte: This has been super [00:34:00] helpful. Any, anything else you wanna plug or share with the audience before we go?

[00:34:06] Priscila Oliveira: Oh yes. Maybe one more thing. I think I forgot to say When we were converting to type scripts, like maybe why not to try to enforce some patterns in your code base, right? So we used a lot until these days we rely a lot on ES link.

[00:34:26] Priscila Oliveira: Like you agree on some with your team on some rules, and yes, link can be pretty helpful when you are converting to type script because you can maybe just talk. Okay, let's not for instance when it example, all the optional props have to be written on the burden of the.

[00:34:48] Priscila Oliveira: The object, like no the props. But if you don't have any Es linked rule, it's gonna be really hard to, for people to, to remember [00:35:00] about it or to follow it. So I remember I was doing like a lot of reviewing a lot of requests, and all the time I was pointing out like, Oh, this is optional, or do you think you, we move it to the bottom of the object.

[00:35:12] Priscila Oliveira: And but if you wanna really to try to enforce some rules, use Yes. Linked, it's pretty handy and. It's gonna help you .

[00:35:23] Joe Previte: Yeah, totally. Especially when you're doing this migration and new people are going to onboard later after you finish the migration. You want them to look at the code base and use the patterns that are already there.

[00:35:36] Joe Previte: So that's a great, that's great advice. Yeah. And yeah, thank you again for joining us today.

[00:35:42] Priscila Oliveira: Thanks for having me. Take care. Take care. Bye. Bye.