Urgent.News

What's breaking now, across thousands of outlets.

Tech

I packaged my freelance pricing talk track as a $12 kit (and linked a free invoice PDF tool)

I keep freezing when a prospect asks “what’s your rate?” So I wrote down the scripts I actually use. What’s free: InvoiceLite — fill → preview → PDF, no signup. https://eclectic-cactus-07703e.netlify.app/ What’s $12 (optional): Freelance Rate Card & Pricing Conversation Kit — rate card one-pager, pricing FAQ, quote / discount / raise emails, and a discovery talk track.…

We haven't written up this one. Dev.to has the full story — the link below goes straight to it.

Read the original at dev.to →

More in Tech

Component library - Pebble UX

To the DEV Community, I have been working on a passion project for a while now, and this week I finally hit a major milestone: I published the very first stable version to NPM.

  • Pebble UX is a native, framework-agnostic component library
  • Blazor Bridge enables .NET developers to use Pebble UX components
  • Library focuses on accessibility, themeability, and minimal overhead

Replacing Excel with a Next.js Web App: A Dev's Playbook

Every dev has seen it: a business running its entire operation on a 40-tab Excel file named Orders_FINAL_v2_REAL.xlsx. The 'Excel person' holds it all in their head, formulas break silently, and…

  • AimEncoders developed playbook to replace Excel with modern web apps
  • Data modeling foundation for simplified development process
  • PostgreSQL with row-level permissions ensures reliable operation

Your Custom Hooks Tear in React 18. `useSyncExternalStore` Fixes It.

The header says "You're offline." Three pixels below it, the save button is still clickable, sending requests like nothing's wrong. Same navigator.onLine value. Same render.

  • React 18 introduced useSyncExternalStore to fix tearing issue.
  • useSyncExternalStore allows subscribing to external state without tearing.
  • Include getServerSnapshot for server-side rendering to avoid hydration mismatches.

More from Friday 23 October →