Syntax - Tasty Web Development Treats
Syntax - Tasty Web Development Treats

Potluck - Protestware × NoSQL × Next.js × ESM × Jest

In this potluck episode of Syntax, Wes and Scott answer your questions about protestware, NoSQL, Next.js, the Syntax.fm website, ESM, Jest, and more! Prismic - Sponsor Prismic is a Headless CMS that makes it easy to build website pages as a set of components. Break pages into sections of components

Featured Speakers

Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers Host

Topics Discussed

Episode Summary

Executive Summary: This potluck episode covers why React teams should still choose frameworks like Next.js over CRA, reflections on building and maintaining syntax.fm, M1 Mac performance troubleshooting, object key ordering habits, MongoDB vs SQL tradeoffs, ESM/CommonJS compatibility pain, open-source protestware and supply-chain trust, where to place game logic in client/server apps, and sponsor/sick-pick segments. The hosts emphasize pragmatism, developer experience, and acceptance that modern web apps require thoughtful tooling and trust boundaries.

Main Topics: Why use Next.js instead of Create React App: The hosts argue that frameworks like Next.js are worth using even without SSR because they provide production-ready build tooling, routing, image support, pre-rendering, layouts, and a broader ecosystem, while CRA becomes painful once customization is needed. syntax.fm architecture and design reflections: They discuss how the site was originally built quickly by Wes, what they might change today (especially CSS tooling and consolidating show-note/RSS generation), and why keeping the site current with Next.js APIs is beneficial. M1/ARM Mac performance and troubleshooting: A listener asks about slow ARM Macs; the hosts explain how to check app architecture in Activity Monitor and suggest performance issues are abnormal, often pointing to hardware problems, software misconfiguration, or a possible reformat. They also note Firefox may be affecting battery life. Object key ordering and CSS property sorting: The hosts reject alphabetizing JavaScript object keys as unnecessary, while noting CSS sorting can be automated but may create semantic ordering risks for fallback/progressive enhancement. MongoDB vs SQL and relational data: They explain why they chose MongoDB largely due to Meteor constraints, defend it as workable at scale, acknowledge relational drawbacks and schema drift, and note that many issues can be handled with schema tools and application-layer relationships. ESM vs CommonJS compatibility: The hosts define ESM and CommonJS, describe the ecosystem pain of mixed module systems in Node tooling, and contrast Scott's CommonJS-heavy codebase with Wes's more ESM-oriented workflow and Vitest adoption. Open-source protestware, trust, and supply-chain risk: They react to maintainers using packages to make political statements, argue that this is their right if it doesn't harm users, and discuss broader supply-chain concerns such as expired domains, account takeover, dependency pinning, and package-security tools. Where to put game logic: client vs server: A listener asks how to structure game state and validation. The hosts lean toward client-side state for responsiveness, but highlight cheating/security concerns, suggest obfuscation only slows casual tampering, and invite community input and follow-up from a guest with game shipping experience.

Key Arguments: Next.js remains valuable even without SSR because frameworks solve build tooling, routing, layouts, image handling, and pre-rendering, reducing the decision burden of React app setup. Create React App is fine for learning or quick starts, but is not viewed as a strong production system once real customization or advanced features are needed. The syntax.fm site was intentionally built quickly and has served as a good proving ground for new Next.js features, with the main improvement being a single source of truth for content generation. An ARM/M1 Mac should not feel slower than an Intel machine; heavy dev tools like TypeScript and IntelliSense should be faster, so major lag likely indicates a local issue. Alphabetizing JavaScript object keys is not useful in most cases, and CSS property sorting can be dangerous if it changes fallback behavior or progressive enhancement order. MongoDB is acceptable for many production apps if schemas are managed carefully, but it can become messy over time without migrations; relational concerns are real but not fatal. The biggest ESM/CommonJS pain point is ecosystem mismatch: many Node tools and packages still rely on CommonJS, forcing transpilation and config complexity. Vitest works well for ESM-first projects, but teams with CommonJS server code may not benefit yet and should wait for a broader migration. Open-source maintainers have the right to use their packages to express views, but developers should recognize that dependency risk is inherent and that responsibility ultimately lies with the integrator. The safest supply-chain practice is to pin dependency versions and use security tools rather than assuming upstream packages are always stable. For a client-side game, cheating is mainly a concern if there is competition or persistent value; otherwise local state and performance may outweigh server validation. Obfuscation may deter casual inspection but is not a real security boundary; if the game matters competitively, the server should remain authoritative for important state.

Data Points: Podcast sponsor count: 3 - The episode mentions sponsors Prismic, LogRocket, and Auth0. Next.js site age: about 5 years - Wes references building syntax.fm roughly five years earlier. uses.tech users: almost 700 people - Wes cites this as a reason the site may need a redesign or rethink. M1 coding flight battery usage: 70% remaining after about 6 hours - Wes says he coded, emailed, and browsed on a flight and landed with 70% battery. Flight duration: 5.5 hours plus 45 minutes on the ground - Used to describe the battery benchmark on the M1 Mac. LogRocket free trial: 14 days - Promoted during sponsor segment. Open-source package security threshold: top 30,000 packages - They mention npm requiring two-factor authentication for top-ranked packages. Firefox battery concern: 2 hours - Wes says his battery life recently dropped to around two hours, and he suspects Firefox. Level Up Tutorials course cadence: 1 new course every month - Promotional mention for the course platform. Level Up Tutorials annual discount: 25% - Savings offered for yearly signup. Syntax coupon: $10 off - WestBoss.com course promotion mentions coupon code syntax.

Pivotal Quotes: "React can be a death by a thousand decisions, and this just takes out a handful of them." — Wes Boss: Explaining why frameworks like Next.js are preferable to plain CRA for production apps. "I cannot stress how strongly I don't care about that." — Wes Boss: Reacting to open-source maintainers using install-time messages for political or social statements. "You are responsible for the code that you bring into your project." — Scott Tolinski: Discussing package trust, dependency risk, and developer accountability in open source.

Implications: Listeners are encouraged to prefer frameworks, treat dependency trust as a real engineering concern, and be pragmatic about client/server boundaries. The episode reinforces modern web dev values: reduce complexity, pin versions, and choose tooling that improves productivity.

🔓 Sign Up for Unlimited Episode Search

About Syntax - Tasty Web Development Treats

View all episodes from Syntax - Tasty Web Development Treats