widgets-js. When adding an X widget to your page, this JavaScript file is included in the HTML embed code, or you can directly include https://platform.x.com/widgets.js in your page. (See the X for Websites set-up documentation for a recommended code snippet.)
By default, widgets-js will find mark-up in a page and convert basic, functional mark-up into rich interactive widgets. In addition, there are a number of functions of widgets-js that allow you to work with X content dynamically:
Creating widgets at runtime with factory functions
Widgets can be generated at runtime, without requiring an HTML embed code. A set of factory functions can generate any widget type:- twttr.widgets.createShareButton
- twttr.widgets.createFollowButton
- twttr.widgets.createHashtagButton
- twttr.widgets.createMentionButton
- twttr.widgets.createTimeline
- twttr.widgets.createTweet
Buttons
createShareButton, createFollowButton, createHashtagButton, and createMentionButton take similar arguments.
Primary argument
The first argument is required, and is unique to the button type. Provide a string representing one of:url: The URL to be shared.screen_name: The screen_name of a user to be followed, or mentioned.hashtag: Hashtag to be posted and displayed on the button.
Additional Arguments:
target: Required. The element in which to render the widget.options: Optional. An object hash of additional options to configure the widget.
Widgets usually render as iframe elements. When an iframe is moved within the DOM the browser will reload its content. For buttons this can waste bandwidth, while for Posts and timelines this will cause dynamically injected content to be lost. Use the target argument to render widgets into their final location in a page. If you need to delay the display of a widget, use CSS to position the widget off-screen until needed.
create function returns a Promise. You can execute code after a widget has been created by passing a callback to:
Examples
Create a share button for a URL:Options
Additional configuration and options can be passed to the factory functions, as in the above examples. Additional configuration for all widgets
Additional configuration options for button widgets
Post button additional options
Posts
createTweet takes the ID for a Post, and then the same additional arguments as for buttons.
Arguments
tweetId: The ID of a Post to be rendered. (This should be provided as aString, since X IDs are generated from 64-bit integers, and JavaScript integers are limited to 53 bits.)target: Required. The element in which to render the widget.options: Optional. A hash of additional options to configure the widget.
Examples
Create an embedded Post for a Post from the US Department of Interior:Options
Timelines
createTimeline takes the data source definition for a timeline. Additional arguments are consistent with embedded Posts.
Arguments
- data source: Required The data source definition object for the content to be displayed in the widget. May be a widget ID string for a legacy widget.
target: Required. The element in which to render the widget.options: Optional. A hash of additional options to configure the widget.
Examples
Create a timeline widget:Data Source
The data source definition describes what content will hydrate the embedded timeline. There are several types of data sources: profile; list; URL; widget configuration.Profile
To power an embedded timeline with Posts from an individual user use aprofile data source. To do so, set sourceType to profile and set one of screenName or userId.
List
To power an embedded timeline with an X list use alist data source. Set sourceType to list and set both ownerScreenName and slug, or set an id.
URL
To power an embedded timeline with X content represented by a URL use aurl data source. Supported content includes profiles and lists.
Options
All the parameters described above for all widgets and for embedded Posts also apply to embedded timelines.
For more information on the options for customizing embedded Timelines refer to Embedded Timelines.
These functions make it possible to integrate X user’s content into your site dynamically in a JavaScript application, and integrate user interactions into your own application experience.
Please ask questions and share your code and examples in the developer forum. You may also refer to the main X for Websites documentation.