React component using Anchorme.js to detect URLs, emails, and IP addresses in text and convert them into clickable HTML links.
Compatibility: React 16.8+ through React 19 | Dual CJS/ESM build | Tree-shakeable (sideEffects: false)
# npm
npm i react-anchorme
# Yarn
yarn add react-anchorme
# pnpm
pnpm add react-anchormeThe component takes a string as children, detects URLs, emails, and IP addresses in it, and replaces them with clickable HTML links.
import React from 'react'
import { Anchorme } from 'react-anchorme'
const SomeComponent = () => {
return <Anchorme>Lorem ipsum http://example.loc dolor sit amet</Anchorme>
}You can set custom anchor props that are applied to every link created by the component.
import React from 'react'
import { Anchorme } from 'react-anchorme'
const SomeComponent = () => {
return (
<Anchorme target="_blank" rel="noreferrer noopener">
Lorem ipsum http://example.loc dolor sit amet
</Anchorme>
)
}You can truncate link text by setting the truncate prop. This is display-only — the href always contains the full URL. When text exceeds the specified length, it is truncated with an ellipsis character (…).
import React from 'react'
import { Anchorme } from 'react-anchorme'
const SomeComponent = () => {
return (
<Anchorme truncate={5}>Lorem ipsum example.com dolor sit amet</Anchorme>
)
}Note: Passing a non-positive
truncatevalue will throw an error in development to help catch mistakes. This validation is stripped in production builds.
You can provide a custom link component that is rendered instead of the default <a> element. The component receives all anchor props plus href via LinkComponentProps.
import React from 'react'
import { Anchorme, LinkComponentProps } from 'react-anchorme'
const CustomLink = (props: LinkComponentProps) => {
return (
<i>
<a {...props} />
</i>
)
}
const SomeComponent = () => {
return (
<Anchorme linkComponent={CustomLink} target="_blank" rel="noreferrer noopener">
Lorem ipsum http://example.loc dolor sit amet
</Anchorme>
)
}| Prop | Type | Required | Description |
|---|---|---|---|
children |
string | string[] |
Yes | Text content to parse for links. Arrays of strings are joined internally. |
linkComponent |
React.ElementType<LinkComponentProps> |
No | Custom component to render links instead of <a>. |
truncate |
number |
No | Maximum character length for displayed link text. Display-only — does not affect href. |
| ...anchor props | React.HTMLProps<HTMLAnchorElement> |
No | Any standard <a> props (target, rel, className, style, etc.) are passed through to every rendered link. href is excluded as it is managed internally. |
The component automatically prepends the appropriate protocol to the href attribute when the detected text doesn't include one:
- URLs without protocol (e.g.
example.com) gethttp://prepended - Email addresses get
mailto:prepended - URLs with existing protocol are left unchanged
Supported protocols: http://, https://, ftp://, ftps://, file:///, mailto:
The displayed link text always shows the original detected text — protocol prepending only affects the href.
The package exports the following types:
import { Anchorme, LinkComponentProps, LinkComponent } from 'react-anchorme'| Export | Description |
|---|---|
Anchorme |
The main component |
LinkComponentProps |
Props type received by a custom linkComponent ({ href: string } & AnchorProps) |
LinkComponent |
Type alias for React.ElementType<LinkComponentProps> — use to type custom link components |
import { LinkComponent, LinkComponentProps } from 'react-anchorme'
const CustomLink: LinkComponent = (props: LinkComponentProps) => {
return <a {...props} style={{ color: 'red' }} />
}