Score code, devs, and debt fast.

Start free trial
SitePoint Premium
Stay Relevant and Grow Your Career in Tech
  • Premium Results
  • Publish articles on SitePoint
  • Daily curated jobs
  • Learning Paths
  • Discounts to dev tools
Start Free Trial

7 Day Free Trial. Cancel Anytime.

Twice a week, SitePoint's dev newsletter brings you the most popular articles and tools in web development. With 2025 coming to a close, it's the perfect time to round up the content you loved most this year. I have pulled together these highlights into an article here. Enjoy!

If you're not subscribed yet, you're missing out! Sign up here to get tech roundups like these delivered twice weekly:

👋 Farewell, Create React App

React's original starter kit, Create React App, is being deprecated after 8 years of service. The React team now recommends using full-featured frameworks like Next.js or build tools like Vite, as Create React App lacks key production features like routing, data fetching, and code splitting.

By React → 

🙃 My AI Skeptic Friends Are All Nuts

A fun write-up from Thomas regarding AI-assisted coding where he doesn't shy from using strong language.

"Some of the smartest people I know share a bone-deep belief that AI is a fad — the next iteration of NFT mania. I’ve been reluctant to push back on them, because, well, they’re smarter than me. But their arguments are unserious, and worth confronting. Extraordinarily talented people are doing work that LLMs already do better, out of spite."

By Thomas Ptacek → 

🎮 5 Best SQL Games to Master Database Skills in 2025

Solve crimes with SQL queries in games like SQL Noir and SQL Murder Mystery. These story-driven platforms transform boring database learning into engaging detective work, teaching JOINs, subqueries, and data analysis through realistic crime scenarios. Perfect for developers who learn better through narrative-based challenges.

By Hristo Bogoev →

⏱️ How I Program With Agents

Agents are simply "9 lines of code" - a for loop containing an LLM call that can execute commands and see output without human intervention. David explains the basics of agents and showcases how he implemented GitHub App auth in days rather than weeks, despite the agent creating initial security vulnerabilities that were quickly caught and fixed through proper code review.

By David Crawshaw →

🤔 SQL NULLs are Weird

SQL's UNIQUE constraints allow multiple NULLs because in SQL, NULL isn’t equal to NULL—it’s "unknown." This counterintuitive behavior impacts major databases like SQLite, Postgres, and MySQL, potentially causing subtle bugs, especially when using ORMs.

By Raymond Tukpe →

🚀 Nue: Simplicity Meets Sophistication

Nue is redefining web development by embracing web standards and cutting through the complexity of modern JavaScript frameworks. With millisecond build times, it bridges the gap between design and development using pure HTML, CSS, and JavaScript.

By Tero Piirainen →

♿ Practical Accessibility Tips for Front-End Developers

This guide helps front-end developers integrate accessibility into their workflow. Key tips include using semantic HTML5 elements, enclosing fields in <form> tags with submit buttons, always adding alt attributes for images, and leveraging ARIA only when necessary for inclusive, user-friendly apps. 

By Martijn Hols →

🎮 Making a Browser Based Game With Vanilla JS and CSS

Step away from the framework overload and build a flag-guessing browser game using only vanilla JavaScript and CSS. Learn how to structure game logic, implement scoring mechanics, add animations, and create engaging UI elements, all while keeping your code clean and modular.

By Eoin McGrath →

💬 Prompt Engineering for Web Development

The better the prompt, the better the answer. We can fill in the gaps for information but leaving room for guesswork is a bad idea for LLMs. Check out how quality inputs lead to quality outputs, with examples contrasting good and bad prompts. 

By Kevin Leary →

🔧 Some features that every JavaScript developer should know in 2025

JavaScript has evolved significantly with features many developers overlook, such as the Array.at() method for elegant negative indexing and Promise.withResolvers() that eliminates boilerplate async code. Iterator helpers prevent wasteful temporary array creation during transformations, and structuredClone() properly handles cyclic references and special values that JSON methods can't.

By Suren Enfiajyan →

🛠️ Building APIs with Next.js

Lee Robinson has written a comprehensive resource walking one through every aspect of building APIs with Nextjs. The guide covers project setup, Route Handlers, HTTP methods, dynamic routing, middleware patterns, and when to skip creating an API altogether.

By Lee Robinson →

📐 The 13 Software Engineering Laws

From Conway's architectural influence to Brooks' counterintuitive staffing insights, thirteen software engineering laws provide crucial guidance for tech teams. Particularly valuable is understanding complementary laws like Goodhart's (metrics become useless as targets) and Gilb's (measuring imperfectly is better than not measuring) to navigate project management challenges.

By Anton Zaides → 

🎨 What You Need To Know about Modern CSS

Chris goes through newer CSS features in 2025, including new custom @function, conditional if(), and the powerful shape() function. Key updates also address UI interaction with Popovers, auto-sizing fields, typography enhancements (text-wrap), advanced easing via linear(), and controlled focus navigation via reading-flow.

By Chris Coyier →

🎓 ChatGPT as My Coding Mentor: How I Learned React and Next.js

Two months transformed a junior developer who didn't understand JSX into someone confidently building full-stack applications. The secret lies in setting your experience level, requesting analogies first, and building understanding progressively rather than seeking quick code solutions.

By Ellenoor Bok →

🥀 OOP: Programming's Biggest Mistake

Object-oriented programming emerged as a revolutionary concept but became software development's greatest burden. Classes, inheritance, and methods create unnecessary complexity, restrict code reuse, and force developers into convoluted patterns. Functional programming offers simpler, more flexible alternatives using pure functions and data structures, eliminating the need for dependency injection, design patterns, and boilerplate code.

By Alexander Danilov →

📝 How To Write A Great Agents.md

Analysis from 2500 repositories shows successful agents.md files put executable commands early, use real code examples over explanations, set three-tier boundaries (always do, ask first, never do), specify exact tech stacks with versions, and avoid generic helper roles in favor of specialized tasks like testing or documentation.

By Matt Nigh →

✨ 7 Simple Tricks to Make Your UI Animations Feel More Polished

User interfaces should provide instant feedback on every interaction to feel truly responsive. Adding a subtle scale-down effect (0.97) on button press makes interfaces feel instantly more responsive and alive. Combined with more tricks, these micro-interactions compound to create interfaces where everything feels right.

By Emil Kowalski →

📦 Making software in a single, portable, self-updating, vanilla HTML file

Hyperclay is an interesting concept where your entire application lives in one HTML file that updates itself and runs anywhere. When users interact with your app, it automatically saves changes to its own DOM structure. It's a NodeJS server and frontend library that flattens the entire web stack into one simple layer.

By HyperClay → 

🤝 How to run exceptional 1:1 for engineers

Most engineers and managers treat 1:1 meetings as obligatory status updates, wasting valuable time on conversations that could be emails. The key is understanding that 1:1s aren't project management meetings but relationship and career accelerators focused on the person doing the work, not the work itself.

By Dr Milan Milanović →

📉 The fate of “small” open source

Since majority of coders use AI today, there's no longer any incentive to create small, educational open-source packages. These libraries perform a small or niche function that today's AI models can already instantly write the code for making these libraries obsolete.

By Nolan Lawson →

🧹 How to keep package.json under control

Managing dependencies requires careful reading, regular audits, and tools like Renovate and Knip to keep the bloat under control. The key is reading every new dependency's source code and understanding both your problem and the solution before installing.

By Tom MacWright →

⚡ Building React Apps with Bun

Bun feels amazing for React as it combines runtime, bundler, and package manager into a single fast tool. It delivers near-instant startup times and seamless hot reloading, making traditional webpack and Vite setups feel sluggish in comparison.

By Peter Mbanugo →

📊 Which Table Format Do LLMs Understand Best?

Popular data formats performed worse than expected in LLM comprehension tests. CSV achieved only 44.3% accuracy while JSONL hit 45%, both significantly trailing lesser-used formats like XML (56%) and YAML (54.7%). The findings challenge common assumptions about optimal data formatting for AI systems.

By Improving Agents →

📁 Handling Routes in JavaScript Projects

File-based routing in modern JS frameworks creates maintenance nightmares without proper abstractions. Hard-coded route values lead to typos, refactoring headaches, and scaling issues. Start with a simple constants file to centralize route definitions and maintain your sanity as projects grow.

By Sean Davis →

🔄 A Complete Guide to HTTP Caching

Caching is the invisible backbone that makes websites fast, reliable, and affordable to run. This guide breaks down Cache-Control directives, freshness calculations, and common misconceptions that trip up developers. Learn practical recipes for static assets, HTML documents, and APIs that can slash latency and reduce server load dramatically.

By Jono Alderson →

This concludes the yearly recap for top links from SitePoint's dev newsletter. See you next time!

© 2000 – 2026 SitePoint Pty. Ltd.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.