<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl" -->

---
title: ESLint v10.12.0 released | daily.dev
description: ESLint v10.12.0 ships updated SourceCode documentation and type definitions so getText(), getLoc(), and getRange() correctly accept nodes, tokens, and...
canonical: https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: ESLint v10.12.0 released | daily.dev
og:description: ESLint v10.12.0 ships updated SourceCode documentation and type definitions so getText(), getLoc(), and getRange() correctly accept nodes, tokens, and...
og:url: https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl
og:image: https://api.daily.dev/og/posts/7vxtOoNBL.png
og:image:alt: ESLint v10.12.0 released
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ESLint v10.12.0 released

**[ESLint](https://daily.dev/sources/eslint)** · 3 min read · 4 upvotes · 0 comments

## Summary

ESLint v10.12.0 ships updated SourceCode documentation and type definitions so getText(), getLoc(), and getRange() correctly accept nodes, tokens, and comments, matching long-standing runtime behavior. TypeScript code implementing or mocking SourceCode may need signature updates. The release also fixes edge-case bugs in several rules (consistent-return, max-lines-per-function, new-cap, no-eval, no-invalid-this, no-loss-of-precision, prefer-arrow-callback, prefer-exponentiation-operator, curly, id-length), including autofix issues and handling of astral Unicode characters, plus documentation clarifications and dependency chores.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://eslint.org/blog/2026/10/eslint-v10.12.0-released>

## Questions this post answers

### Does upgrading to ESLint 10.12.0 break any TypeScript code that implements a custom SourceCode object?

It can. ESLint 10.12.0 updates the type definitions for getText(), getLoc(), and getRange() on SourceCode to correctly accept tokens and comments, not just nodes, matching the actual runtime behavior. Code that merely calls these methods is unaffected, but TypeScript code implementing or mocking SourceCode may need its method signatures updated to match the corrected types.

_daily.dev helps developers catch type-definition changes like this before an eslint upgrade breaks a custom rule._

### What rule bugs were fixed in ESLint 10.12.0?

ESLint 10.12.0 fixes several rule-specific bugs: a prefer-arrow-callback false positive in conditional tests, max-lines-per-function mishandling lines with multiple comments, a no-loss-of-precision false positive with values like 0.e5, a missing space after else in curly autofix, an incorrect id-length message for long private names, and astral Unicode letter handling in consistent-return, no-eval, no-invalid-this, and new-cap.

_Teams tracking eslint rule regressions can follow release-by-release fixes like these on daily.dev._

## Similar posts on daily.dev

- [ESLint v10.0.0-alpha.1 released](https://daily.dev/posts/eslint-v10-0-0-alpha-1-released-sc9khrbz1) · ESLint · 3 upvotes · 1 comments
- [ESLint v10.0.0-beta.0 released](https://daily.dev/posts/eslint-v10-0-0-beta-0-released-wizq4kbua) · ESLint · 1 upvotes · 0 comments
- [ESLint v10: Flat Config Completion and JSX Tracking](https://daily.dev/posts/eslint-v10-flat-config-completion-and-jsx-tracking-muqydccwu) · InfoQ · 0 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#typescript](https://daily.dev/tags/typescript)

[View this post on daily.dev](https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"ESLint v10.12.0 released","url":"https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl"},"datePublished":"2026-10-02T20:40:12.913Z","dateModified":"2026-10-02T20:48:15.914Z","description":"ESLint v10.12.0 ships updated SourceCode documentation and type definitions so getText(), getLoc(), and getRange() correctly accept nodes, tokens, and...","image":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","thumbnailUrl":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","isAccessibleForFree":true,"articleSection":"ESLint","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ESLint","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/cc15978e65894648aa5abe0336a17790","url":"https://daily.dev/sources/eslint"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,typescript","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ESLint","item":"https://daily.dev/sources/eslint"},{"@type":"ListItem","position":3,"name":"ESLint v10.12.0 released"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/eslint-v10-12-0-released-7vxtoonbl#faq","mainEntity":[{"@type":"Question","name":"Does upgrading to ESLint 10.12.0 break any TypeScript code that implements a custom SourceCode object?","acceptedAnswer":{"@type":"Answer","text":"It can. ESLint 10.12.0 updates the type definitions for getText(), getLoc(), and getRange() on SourceCode to correctly accept tokens and comments, not just nodes, matching the actual runtime behavior. Code that merely calls these methods is unaffected, but TypeScript code implementing or mocking SourceCode may need its method signatures updated to match the corrected types. daily.dev helps developers catch type-definition changes like this before an eslint upgrade breaks a custom rule."}},{"@type":"Question","name":"What rule bugs were fixed in ESLint 10.12.0?","acceptedAnswer":{"@type":"Answer","text":"ESLint 10.12.0 fixes several rule-specific bugs: a prefer-arrow-callback false positive in conditional tests, max-lines-per-function mishandling lines with multiple comments, a no-loss-of-precision false positive with values like 0.e5, a missing space after else in curly autofix, an incorrect id-length message for long private names, and astral Unicode letter handling in consistent-return, no-eval, no-invalid-this, and new-cap. Teams tracking eslint rule regressions can follow release-by-release fixes like these on daily.dev."}}]}
```

