Modern JavaScript for Django developers

Overall sentiment on Django & “modern JS”

  • Many like Django because it minimizes mandatory JavaScript; some explicitly reject introducing a heavy JS build pipeline.
  • Others argue Django’s “batteries included” are less relevant when frontend and backend are split, and are moving toward API-first stacks.
  • There’s praise for Django’s organization, documentation, and long-term stability, but complaints about async support maturity and difficulty integrating with legacy databases.

Server‑side rendering vs SPAs

  • Strong current running in favor of SSR + sprinkles of JS (HTMX, Unpoly, Turbo-like approaches, vanilla JS).
  • Several describe large, complex apps built with Django‑rendered HTML and vanilla JS, no SPA framework, with good results.
  • Others prefer fully decoupled SPAs (React/SvelteKit/Next) backed by Django/DRF or Django‑Ninja, valuing “modern frontend” testability and componentization.

HTMX, Unpoly, Inertia, Bridge, Livewire‑style stacks

  • HTMX + Alpine + Django is widely cited as a popular “low‑JS” stack; some say it’s become a default.
  • Unpoly is praised as “feeling like Django” and covering most CRUD workflows, especially multi-step/modal form flows; some quirks around browser history and overlays are noted.
  • Inertia.js is seen by some as “best of both worlds” (SPA feel, server MVC routing); others report frustration (hot reload, custom form patterns, collaborator confusion).
  • Django‑Bridge aims for a Django backend with JS-rendered UI.
  • People reference similar paradigms in other ecosystems: Livewire (Laravel), LiveView (Phoenix), Blazor, Django‑Unicorn, custom “liveview‑like” solutions.

APIs: DRF vs Django‑Ninja vs alternatives

  • Django‑Ninja is repeatedly praised: lighter than DRF, async-friendly, Pydantic-based, less boilerplate, good DX and performance.
  • DRF is seen as mature with rich ecosystem but more abstract, slower serializers, and a steeper mental model.
  • Some teams are gradually replacing more of Django with FastAPI/SQLModel/authlib-style compositions, though others warn this can end up “reinventing Django.”

Tooling: Vite, Webpack, esbuild

  • Consensus that the article’s original Webpack/Cra guidance is dated; Vite (and to some extent esbuild, Parcel, rspack) are preferred for speed and low config.
  • There’s debate: some see Webpack as fine/mature; others report multi‑minute dev builds vs seconds with Vite/rspack and argue migration is worth it.
  • Some advocate “no-build” ES modules/import maps when JS needs are modest.

Security & auth in decoupled setups

  • With token/JWT auth in SPAs, CSRF is often unnecessary; with session auth, CSRF must be handled via headers.
  • Token storage is contentious: localStorage is criticized; suggested pattern is access token in memory + refresh token in HTTP‑only cookie, though many say simple server sessions are easier if JWTs aren’t strictly needed.

Templating, components, and typing

  • Complaints about lack of type‑safe templating in Django/Jinja compared to TSX; people experiment with Jinja macros as components, htpy, JinjaX, and even alternative languages (e.g., Kotlin + typed templates).
  • Ongoing debate on whether React-style components are essential organization or unnecessary abstraction for many apps.

Dev experience & environment

  • Some struggle with Dockerized Django+frontend workflows in editors (e.g., multiple language servers across containers); workarounds include multiple VS Code windows or more minimal containerization.
  • There’s broad fatigue with JS ecosystem churn and heavy dependency trees; several advocate smaller, simpler stacks and more direct use of web platform APIs.