惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
AI
AI
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
F
Full Disclosure
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
Recorded Future
Recorded Future
N
News and Events Feed by Topic
雷峰网
雷峰网
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Project Zero
Project Zero
罗磊的独立博客
G
GRAHAM CLULEY
腾讯CDC
P
Privacy International News Feed
V
V2EX
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
H
Heimdal Security Blog
L
LINUX DO - 热门话题
Forbes - Security
Forbes - Security
美团技术团队
MongoDB | Blog
MongoDB | Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
宝玉的分享
宝玉的分享
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog

Kent C. Dodds Blog

Implementing Hybrid Semantic + Lexical Search Simplifying Containers with Cloudflare Sandboxes Migrating to Workspaces and Nx Offloading FFmpeg with Cloudflare Building Semantic Search on my Content Helping YOU ask ME questions with AI How I used Cursor to Migrate Frameworks The Dow's Start on the Covenant Path The next chapter: EpicAI.pro AI is taking your job How I increased my visibility Launching Epic Web 2023 in Review Stop Being a Junior RSC with Dan Abramov and Joe Savona Live Stream Fixing a Memory Leak in a Production Node.js App 2022 in Review My Car Accident I Migrated from a Postgres Cluster to Distributed SQLite with LiteFS I'm building EpicWeb.dev A review of my time at Remix Remix: The Yang to React's Yin How I help you build better websites Why I Love Remix The State Initializer Pattern How to React ⚛️ Get a catch block error message with TypeScript Building an awesome image loading experience How Remix makes CSS clashes predictable Introducing the new kentcdodds.com How I built a modern website in 2021 How to use React Context effectively Static vs Unit vs Integration vs E2E Testing for Frontend Apps The Testing Trophy and Testing Classifications Array reduce vs chaining vs for loop Don't Solve Problems, Eliminate Them Super Simple Start to Remix Super Simple Start to ESModules in Node.js JavaScript Pass By Value Function Parameters How to write a Constrained Identity Function (CIF) in TypeScript How to optimize your context value How to write a React Component in TypeScript TypeScript Function Syntaxes Listify a JavaScript Array Build vs Buy: Component Libraries edition Using fetch with TypeScript Wrapping React.useState with TypeScript Define function overload types with TypeScript 2020 in Review Business and Engineering alignment Hi, thanks for reaching out to me 👋 useEffect vs useLayoutEffect Super simple start to Firebase functions Super simple start to Netlify functions Super Simple Start to css variables Favor Progress Over Pride in Open Source Testing Implementation Details How getting into Open Source has been awesome for me useState lazy initialization and function updates Use ternaries rather than && in JSX Application State Management with React Use react-error-boundary to handle errors in React JavaScript to Know for React How I structure Express apps What open source project should I contribute to? When I follow TDD AHA Programming 💡 How I Record Educational Videos Should I write a test or fix a bug? Stop mocking fetch Intentional Career Building Improve test error messages of your abstractions Tracing user interactions with React Eliminate an entire category of bugs with a few simple tools Common mistakes with React Testing Library Super Simple Start to React Stop using client-side route redirects The State Reducer Pattern with React Hooks Function forms Replace axios with a simple custom fetch wrapper How to test custom React hooks React Production Performance Monitoring Should I useState or useReducer? Stop using isLoading booleans Make Your Test Fail Make your own DevTools An Argument for Automation Fix the "not wrapped in act(...)" warning Super Simple Start to ESModules in the Browser Implementing a simple state machine library in JavaScript 2010s Decade in Review Why users care about how you write code Why I avoid nesting closures Don't call a React function component Why your team needs TestingJavaScript.com Inversion of Control Understanding React's key prop How to Enable React Concurrent Mode How to add testing to an existing project Profile a React App for Performance
2025 in Review
Kent C. Dodds 🏹 @kentcdodds · 2025-12-31 · via Kent C. Dodds Blog

I like to write these reviews as a way to take stock, celebrate the wins, learn from the mistakes, and set direction for what comes next.

2025 was a big year for me professionally. I made a major pivot in focus from EpicReact/EpicWeb toward EpicAI and the Model Context Protocol (MCP). This year was exhilarating, exhausting, and (in a few ways) heartbreaking.

And personally? We welcomed our 6th child, which has been a huge blessing and a huge time commitment (newborn season is real).

The pivot: from "websites" to "Jarvis"

I told this story in a talk I gave at Remix Jam, and it really captures how I got here.

Last year, my friend Ryan Florence and I drove together to React Conf 2024. It was one of those long drives where you solve the world's problems between snacks and bathroom breaks. We talked a lot about React, what the future of Remix/React Router might be, and (more broadly) the future of user interaction.

At React Conf, Evan Bacon gave a demo that lodged itself in my brain. Asking questions to AI and getting text back is neat, but the better user experience is when the response is interactive. Native UI, not just paragraphs. (I made an article/video about this later: The Future of AI Interaction: Beyond Just Text).

Fast forward a few months. I'd just finished Epic Web Conf 2025 and my head was full of web/React/React Router thoughts. Ryan was supposed to speak, but he got sick, so I brought all his swag to his house the next day and we chatted. That conversation went straight back to the "future of interaction" topic and we basically reduced it down to one word: Jarvis.

Jarvis (Iron Man's assistant) isn't "a chatbot." Jarvis is the interface. Jarvis knows you, keeps context across your life, and can do things.

And in that conversation, Ryan told me about the Model Context Protocol (MCP). That weekend flipped a switch for me. Everything before was React and Remix and React Router and then suddenly I was like: "This is it. We can actually do this now. We can make a huge leap into a new way users interact with software."

For the last couple years, the industry message has been: "Add a chatbot to your app." I think we're leaving that era. The next era is: Add your app to the chatbot.

Users don't want to visit five different apps and re-explain themselves five different times. They want one assistant that can coordinate across services. And for that to work, we need a standard protocol that lets all of us plug in, not just the biggest companies with bespoke integrations.

That's the core idea that pulled me toward EpicAI and MCP.

EpicAI: a new home for the MCP era

In March, I launched EpicAI.pro.

This year felt like going from "I think this is important" to "oh wow, this is definitely important" in real time.

Some highlights:

This whole effort has been about helping people build real MCP servers (things that can stand up in production) and helping them catch the vision for what MCP unlocks when combined with great UI.

Things just keep happening to confirm this is the direction people are going. There are plenty of nay-sayers and skeptics outside of the MCP community, but all the right players are participating and in 2026 we're going to see an explosion of MCP-powered apps (mostly thanks to ChatGPT's adoption of MCP Apps I think).

Epic Workshop App improvements (and the new CLI experience)

A huge part of making EpicAI (and Epic Web) content actually usable is the Epic Workshop App (a.k.a. epicshop). We (me, contributors, Copilot, and Cursor) made a bunch of improvements throughout 2025, but the biggest win (in my opinion) was the new CLI experience.

Over the year, the CLI got dramatically smoother and more capable: it was renamed to epicshop, the commands were flattened/simplified, and a lot of the workflow became interactive (picking workshops/subcommands, opening the workshop in your editor, choosing custom clone destinations, better guidance messages, and a bunch of cross-platform polish (especially on Windows).

You can now manage your workshops by simply running npx epicshop and I think that's cool.

On top of that, the app itself kept leveling up too. Things like improved error handling, better update flows, quality-of-life shortcuts, richer "presence" information, and even MCP-related upgrades (including MCP server improvements).

If you're curious about the details, the full release notes live in the epicshop repo, but the headline is: it's becoming a real product-quality experience for running workshops locally (and that matters a lot when you're teaching people to build real things).

Epic Stack updates

Even with my focus shifting hard toward EpicAI, the Epic Stack kept moving forward in a big way this year (huge thanks to everyone who helped).

Some highlights from the 2025 releases:

  • We moved the stack forward with React Router v7 and the surrounding improvements to keep things modern and maintainable.
  • We added passkeys, made a bunch of security/performance improvements, and shipped a pile of quality-of-life fixes.
  • We made some meaningful infrastructure/tooling changes, like moving image storage to Tigris and adding image optimization via openimg.
  • We upgraded to Tailwind v4.
  • Later in the year we migrated from remix-flat-routes to react-router-auto-routes and added react-router-devtools.

If you want the full blow-by-blow, the release notes are all here: Epic Stack releases.

Seriously: thank you to everyone who opened issues, submitted PRs, reviewed, and helped keep the stack healthy. The Epic Stack is better because of your contributions.

Epic Web Conf 2025 (and why it hurts)

In March we ran Epic Web Conf 2025 in Salt Lake City. We did a workshop day and a conference day, and (as always) the people made it special.

(Also, here's last year's photos, because I forgot to write a year in review for 2024 😅).

I also lost money on this event. I'm gutted that I can't run it again for the foreseeable future.

There are a lot of reasons for that, but the simplest is: I can't afford to keep splitting my focus and I can't afford to keep losing money. I love running events, but I need to be responsible about what I commit to.

Epic Web Camp (2024 + the cancelled 2025)

Epic Web Camp happened in 2024 and it was a beyond special experience:

We were going to do it again in 2025 (the video even had dates!), but I had to cancel for the same reasons I'm not running the conference: I need to avoid splitting my focus and I need to avoid losing money.

Honestly between this and the conference, I'm more gutted about the camp. It was just such a great experience. I hope to bring it back one day.

On another note, I did actually run an unofficial Epic Web Family Camp thing this year. The venue for Epic Web Camp is the Aspen Grove Family Camp and during the summer they run week-long camps for families to come up and do things together so I did this:

Kent C. Dodds 🏹 avatar

Kent C. Dodds 🏹 @kentcdodds

Ok, I've put together a form to gauge actual interest and get emails for specific individuals to reach out to if I decide to do this. If you'd like to have the coolest summer vacations (basically a cruise in the mountains), let me know your interest here: EpicWebCamp 2025 interest sign up
Referenced media

EpicWebCamp 2025 interest sign up

This does not secure you a spot at the camp. I'm just determining interest levels in the community to help me know whether I should do this. Check this thread for more details (and a video I made for the 2024 non-family camp edition featuring some of what Aspen Grove has to offer). TL;DR on Aspen Grove: Aspen Grove Family Camp, run by BYU and located in Provo Canyon Utah (https://maps.app.goo.gl/JKiEbFYMBAtNWY8p7), offers a week long mountain retreat focused on family bonding and community. Families enjoy a mix of activities tailored for all ages, with kids engaged in their own fun while parents participate in adult-only activities like hiking, crafts, and social events. These adult activities foster not just relaxation but also the chance to build friendships with other people at the camp. Families come together for meals and evening programs, creating shared memories, while the camp's structure also allows for the development of meaningful connections with other families, strengthening both family ties and adult friendships. It should be noted that Aspen Grove Family Camp has a religious foundation rooted in BYU's Latter-Day Saint values, with Sundays featuring optional worship services, including a family sacrament meeting and other faith-based activities. For those who prefer not to participate in religious services, the camp offers a peaceful environment to enjoy nature, relax, or engage in quiet activities independently or with family, ensuring an inclusive experience for all attendees. While the camp experience is focused on families, you're more than welcome to come solo! We'll have room(s) for solo attendees to lodge with each other. Pricing: I will charge a bit on top of the regular camp pricing to pay for matching shirts for everyone attending. I do not plan on making money on this experience and I do not plan on getting sponsors for this either. For details on camp pricing, see: https://aspengrove.byu.edu/family-camp-2023-dates-pricing Here's the TL;DR on pricing: Adults (19+): $950 Teens (12-18): $835 Children (9-11): $700 Children (5-8): $600 Children (3-4): $535 Infants (0-2): $400 So for a family of two adults and three kids ages 1, 5, and 8, you can expect to pay: $3,500 + a bit more for shirts. Date: Camp is pretty filled up most weeks in the summertime. We're planning on August 2-8th 2025 We need to act pretty quickly to grab the remaining slots before they're taken.

Kent C. Dodds 🏹 avatar

Kent C. Dodds 🏹 @kentcdodds

#EpicWebCamp hasn't even happened yet, and I'm thinking about next year already. I'm thinking about doing it during the regular family camp that Aspen Grove runs in the summertime. I'm trying to decide if we could get people there. Please reply to the details below:

2 21

1 19

We had a couple families join us and we had an amazing time and I even made some new life-long friends as well.

We'll see what we can do in the future here.

Talks, travel, and a whole lot of planes

I can't say I "didn't travel a ton" this year 😅

Here are my TripIt stats for 2025:

  • Distance traveled: 58,698 miles
  • Total days: 60
  • Total trips: 16
  • Countries/regions visited: 7
  • Cities visited: 18

For talks, I keep an updated list on my talks page, but a few 2025 highlights were:

Podcasting, interviews, and my own shows

I did a bunch of podcast appearances this year. The canonical list lives on my appearances page, but here are a few 2025 standouts:

And here are the other 2025 episodes (linked from the appearances page):

Also, two fun personal milestones for my own podcasts:

My most engaged-with posts

I've had some posts this year get a surprising amount of engagement. A few of my favorites.

MCP was definitely a standout topic and things kept happening all year to confirm my pivot was the right direction.

I announced the arrival of our 6th child:

I also made a couple jokes about "starting at Microsoft" (I was actually just visiting for Microsoft MCP Dev Day / VS Code Summit):

And here are the rest. I'm not going to annotate every one here, but if you want to browse what resonated most this year, this is a fun little time capsule:

Kent C. Dodds 🏹 avatar

Kent C. Dodds 🏹 @kentcdodds

What if instead of fighting with Oracle over the JavaScript trademark, we just all stop calling it JavaScript and just call it TypeScript instead?

90 1,213

Kent C. Dodds 🏹 avatar

Kent C. Dodds 🏹 @kentcdodds

All running on a $5 VPS
tobi lutke avatar

tobi lutke @tobi

Congratulations to our merchants on another record breaking Black Friday. LFG → Merchants total Black Friday sales were $6.2 billion, up 25% YoY → Edge peaked at 489 million requests per minute. App servers handled a peak of 117 million requests per minute, up 40% from last ...

123 3,054

26 939

CodeTV: Web Dev Challenge (No Keyboards Allowed)

I made my second appearance on CodeTV's Web Dev Challenge: No Keyboards Allowed

It's a really fun format and I always enjoy seeing what gets built under pressure. Thanks Jason for having me!

Listening: Pocket Casts, audiobooks, podcasts, and scriptures

I listen to basically everything in one place: Pocket Casts.

I use custom-built software I made to turn my audiobooks into an RSS feed so I can listen to them in Pocket Casts alongside my podcasts. I even listen to my scriptures in the same app.

My Pocket Casts stats for the year:

  • Minutes listened: 62,518 (that's 1,042 hours of audio! 😱)
  • Episodes listened: 1,469

Most listened-to feeds:

Scripture listening highlights:

Personal

The biggest personal highlight of 2025 was welcoming our 6th child. I don't post pictures of my kids online, but I'll say (again): I'm incredibly grateful for my wife and kids.

The last couple months of 2025 required a ton of my time because of the new baby, and I expect early 2026 to be similar. That reality is going to shape what I say "yes" to for a bit (especially travel).

Looking ahead to 2026

I'm excited about 2026. I'm also trying to be realistic about time, energy, and focus.

Here are the big things I'm planning right now:

Intro to TypeScript Programming (local college)

I'm working with a local college to build out a curriculum for their "Intro to TypeScript Programming" class. With the arrangement, I get to keep 100% of the IP. Think of it like they're asking me to write a textbook which they will use in their class. They actually used EpicReact.dev in 2025 and it was a great success!

What this means is I'll be able to make this available to you and your friends as well!

Doing more truly-intro content is something I've wanted to do for a long time. I even mentioned it years ago as part of my "KCD EDU" dream:

For a long time now, I've wanted to create a place where I could help get someone from 0 to hero in software development...

(context here)

This will likely be 5 workshops, and I plan to make them available on EpicWeb.dev in the first half of 2026.

Free substantial updates to EpicAI (a new promise for me)

I also promised to update the self-paced workshop series on EpicAI.pro in the first half of 2026 for free.

I've never promised free substantial updates in the past, so this is a new kind of commitment for me. I don't like promising my future to anyone. But MCP is changing so fast that I felt like an exception was warranted.

So my first half of 2026 is going to be very busy!

Conclusion

Thanks for following along with me. I'm grateful for the people who cheer me on, the people who challenge my ideas, and the people who build alongside me.

Onward to 2026.